<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Viki 写东西的地方</title>
        <link>https://blog.viki.moe</link>
        <description>Viki 的个人博客，记录前端开发与生活点滴。</description>
        <lastBuildDate>Wed, 18 Mar 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Next.js 16 + Feed</generator>
        <language>zh-CN</language>
        <image>
            <title>Viki 写东西的地方</title>
            <url>https://blog.viki.moe/apple-icon.png</url>
            <link>https://blog.viki.moe</link>
        </image>
        <copyright>© 2019-2026 Viki. 所有文章均遵循 CC BY-SA 4.0 协议，转载请注明出处。</copyright>
        <item>
            <title><![CDATA[每月更新丨免费领网易云音乐、QQ 音乐会员体验卡]]></title>
            <link>https://blog.viki.moe/music-vip-share</link>
            <guid isPermaLink="false">https://blog.viki.moe/music-vip-share</guid>
            <pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[网易云音乐 + QQ 音乐会员体验卡，每月免费领，先到先得，用完为止。]]></description>
            <content:encoded><![CDATA[网易云音乐 + QQ 音乐会员体验卡，每月免费领，先到先得，用完为止。<br /><a href="https://blog.viki.moe/music-vip-share" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>福利</category>
            <category>生活</category>
            <category>音乐</category>
        </item>
        <item>
            <title><![CDATA[你不知道的 Chrome DevTools]]></title>
            <link>https://blog.viki.moe/devtools-tips</link>
            <guid isPermaLink="false">https://blog.viki.moe/devtools-tips</guid>
            <pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[偶然间逛到 DevTools 官方文档，发现了很多没用过的小功能，特地码了篇文章给自己加强印象。]]></description>
            <content:encoded><![CDATA[偶然间逛到 DevTools 官方文档，发现了很多没用过的小功能，特地码了篇文章给自己加强印象。<br /><a href="https://blog.viki.moe/devtools-tips" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>Chrome</category>
            <category>DevTools</category>
            <category>前端开发</category>
            <category>调试技巧</category>
            <category>浏览器</category>
        </item>
        <item>
            <title><![CDATA[2026 公司年会小记：依旧分母，明年再来]]></title>
            <link>https://blog.viki.moe/annual-party-2026</link>
            <guid isPermaLink="false">https://blog.viki.moe/annual-party-2026</guid>
            <pubDate>Fri, 30 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[想着还是想记录一下，发现近几年年会的事情都忘得差不多，已经开始记忆混乱了。]]></description>
            <content:encoded><![CDATA[想着还是想记录一下，发现近几年年会的事情都忘得差不多，已经开始记忆混乱了。<br /><a href="https://blog.viki.moe/annual-party-2026" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>年会</category>
            <category>随笔</category>
            <category>生活</category>
            <category>2026</category>
        </item>
        <item>
            <title><![CDATA[[译] 浏览器 User Agent 字符串的历史]]></title>
            <link>https://blog.viki.moe/translation-ua-history</link>
            <guid isPermaLink="false">https://blog.viki.moe/translation-ua-history</guid>
            <pubDate>Thu, 29 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[一段以幽默风格讲述的从 Mosaic 到 Chrome，看各大浏览器如何互相伪装，最终导致 UA 字符串彻底沦为一团乱麻。]]></description>
            <content:encoded><![CDATA[一段以幽默风格讲述的从 Mosaic 到 Chrome，看各大浏览器如何互相伪装，最终导致 UA 字符串彻底沦为一团乱麻。<br /><a href="https://blog.viki.moe/translation-ua-history" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>浏览器</category>
            <category>Web</category>
            <category>翻译</category>
            <category>历史</category>
        </item>
        <item>
            <title><![CDATA[Windows 11 浏览器滚动时部分区域不更新的解决方案]]></title>
            <link>https://blog.viki.moe/win11-screen-stuck</link>
            <guid isPermaLink="false">https://blog.viki.moe/win11-screen-stuck</guid>
            <pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[沟槽的微软 MPO，你知道我受了多大委屈吗？]]></description>
            <content:encoded><![CDATA[沟槽的微软 MPO，你知道我受了多大委屈吗？<br /><a href="https://blog.viki.moe/win11-screen-stuck" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>Windows</category>
            <category>MPO</category>
            <category>屏幕内容卡住</category>
            <category>浏览器</category>
            <category>显卡驱动</category>
        </item>
        <item>
            <title><![CDATA[建设博客过程中的一些副产物，敏感肌也能用！]]></title>
            <link>https://blog.viki.moe/blog-goodies</link>
            <guid isPermaLink="false">https://blog.viki.moe/blog-goodies</guid>
            <pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[在搭建和完善博客内容的过程中，积累了一些实用的 API 和资源，特别适合敏感肌。]]></description>
            <content:encoded><![CDATA[在搭建和完善博客内容的过程中，积累了一些实用的 API 和资源，特别适合敏感肌。<br /><a href="https://blog.viki.moe/blog-goodies" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>API</category>
            <category>工具</category>
            <category>资源</category>
            <category>博客建设</category>
        </item>
        <item>
            <title><![CDATA[中国古代文化常识速查清单（全）]]></title>
            <link>https://blog.viki.moe/classic-notes</link>
            <guid isPermaLink="false">https://blog.viki.moe/classic-notes</guid>
            <pubDate>Wed, 07 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[简单整理了一份涵盖中国古代文化各个方面的常识速查清单，方便快速了解和查阅相关知识点。]]></description>
            <content:encoded><![CDATA[简单整理了一份涵盖中国古代文化各个方面的常识速查清单，方便快速了解和查阅相关知识点。<br /><a href="https://blog.viki.moe/classic-notes" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>文学</category>
            <category>文化</category>
            <category>历史</category>
            <category>常识</category>
            <category>百科</category>
        </item>
        <item>
            <title><![CDATA[GitHub 语言统计又双叒叕抽风？手把手教你驯服]]></title>
            <link>https://blog.viki.moe/github-linguist</link>
            <guid isPermaLink="false">https://blog.viki.moe/github-linguist</guid>
            <pubDate>Mon, 05 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[GitHub 能够统计和显示仓库中的编程语言分布情况，然而有时经常抽风，将无关文件纳入统计，导致统计结果失真，本文介绍了如何通过相关配置来纠正这些问题。]]></description>
            <content:encoded><![CDATA[GitHub 能够统计和显示仓库中的编程语言分布情况，然而有时经常抽风，将无关文件纳入统计，导致统计结果失真，本文介绍了如何通过相关配置来纠正这些问题。<br /><a href="https://blog.viki.moe/github-linguist" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>GitHub</category>
            <category>Linguist</category>
            <category>编程语言统计</category>
            <category>开源项目</category>
            <category>Git</category>
            <category>.gitattributes</category>
        </item>
        <item>
            <title><![CDATA[我写了一个 CS2 Major 竞猜在线抄作业项目]]></title>
            <link>https://blog.viki.moe/major-winner</link>
            <guid isPermaLink="false">https://blog.viki.moe/major-winner</guid>
            <pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[在 CS2 Major 赛事期间，玩家可以参与竞猜升级纪念币。有 UP 主搜集了大量主播作业并汇总成图片，极大方便了大家抄作业。但追踪竞猜进度并不方便，于是我写了一个在线抄作业项目，更高效地参考和跟踪主播竞猜进度。]]></description>
            <content:encoded><![CDATA[在 CS2 Major 赛事期间，玩家可以参与竞猜升级纪念币。有 UP 主搜集了大量主播作业并汇总成图片，极大方便了大家抄作业。但追踪竞猜进度并不方便，于是我写了一个在线抄作业项目，更高效地参考和跟踪主播竞猜进度。<br /><a href="https://blog.viki.moe/major-winner" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>CS2</category>
            <category>Major</category>
            <category>竞猜</category>
            <category>前端开发</category>
            <category>项目实战</category>
        </item>
        <item>
            <title><![CDATA[使用 smee-it 解决本地接收 GitHub Webhook 的难题]]></title>
            <link>https://blog.viki.moe/smee-it</link>
            <guid isPermaLink="false">https://blog.viki.moe/smee-it</guid>
            <pubDate>Fri, 28 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[介绍 smee-it，一个简洁、类型安全的 smee.io 客户端，用于在本地接收 GitHub Webhook 等事件。]]></description>
            <content:encoded><![CDATA[介绍 smee-it，一个简洁、类型安全的 smee.io 客户端，用于在本地接收 GitHub Webhook 等事件。<br /><a href="https://blog.viki.moe/smee-it" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>TypeScript</category>
            <category>Webhook</category>
            <category>GitHub</category>
            <category>开源</category>
        </item>
        <item>
            <title><![CDATA[记一次由 TypeScript 配置引发的运行时逻辑异常]]></title>
            <link>https://blog.viki.moe/ts-class-fields</link>
            <guid isPermaLink="false">https://blog.viki.moe/ts-class-fields</guid>
            <pubDate>Wed, 26 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[同一份 TypeScript 代码，在不同环境下运行结果竟然完全不同？问题出在 useDefineForClassFields 这个配置项上。本文将探讨它的工作原理、影响范围，以及如何避免踩坑。]]></description>
            <content:encoded><![CDATA[同一份 TypeScript 代码，在不同环境下运行结果竟然完全不同？问题出在 useDefineForClassFields 这个配置项上。本文将探讨它的工作原理、影响范围，以及如何避免踩坑。<br /><a href="https://blog.viki.moe/ts-class-fields" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>TypeScript</category>
            <category>tsconfig.json</category>
            <category>useDefineForClassFields</category>
            <category>运行时异常</category>
            <category>配置项</category>
            <category>问题排查</category>
        </item>
        <item>
            <title><![CDATA[博客重写记：当 xLog 落幕，数据掌控欲与爱情同时降临]]></title>
            <link>https://blog.viki.moe/blog-rewrite</link>
            <guid isPermaLink="false">https://blog.viki.moe/blog-rewrite</guid>
            <pubDate>Mon, 24 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[xLog 开发停滞，与此同时，恋爱关系带来了定制化需求。AI 都逐渐成熟，想了想还是重构一下博客吧。]]></description>
            <content:encoded><![CDATA[xLog 开发停滞，与此同时，恋爱关系带来了定制化需求。AI 都逐渐成熟，想了想还是重构一下博客吧。<br /><a href="https://blog.viki.moe/blog-rewrite" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>博客搭建</category>
            <category>Next.js</category>
            <category>React</category>
            <category>独立开发</category>
            <category>重构</category>
        </item>
        <item>
            <title><![CDATA[Git Submodules 备忘录]]></title>
            <link>https://blog.viki.moe/git-submodules</link>
            <guid isPermaLink="false">https://blog.viki.moe/git-submodules</guid>
            <pubDate>Mon, 09 Dec 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[一份简单实用的 Git Submodules 备忘录，涵盖克隆、添加、更新、修改地址及删除子模块等常见操作场景，助你轻松管理项目依赖。]]></description>
            <content:encoded><![CDATA[一份简单实用的 Git Submodules 备忘录，涵盖克隆、添加、更新、修改地址及删除子模块等常见操作场景，助你轻松管理项目依赖。<br /><a href="https://blog.viki.moe/git-submodules" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>Git</category>
            <category>DevOps</category>
            <category>运维</category>
            <category>版本控制</category>
        </item>
        <item>
            <title><![CDATA[解决 git/ssh 报错：too many authentication failures]]></title>
            <link>https://blog.viki.moe/ssh-auth-failures</link>
            <guid isPermaLink="false">https://blog.viki.moe/ssh-auth-failures</guid>
            <pubDate>Mon, 14 Oct 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[使用 Git 或 SSH 时遇到 "too many authentication failures" 报错？通常是多密钥冲突导致的。本文介绍通过配置 ~/.ssh/config 中的 IdentitiesOnly 选项快速解决此问题。]]></description>
            <content:encoded><![CDATA[使用 Git 或 SSH 时遇到 "too many authentication failures" 报错？通常是多密钥冲突导致的。本文介绍通过配置 ~/.ssh/config 中的 IdentitiesOnly 选项快速解决此问题。<br /><a href="https://blog.viki.moe/ssh-auth-failures" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>SSH</category>
            <category>Git</category>
            <category>Linux</category>
            <category>运维</category>
            <category>故障排查</category>
        </item>
        <item>
            <title><![CDATA[公网访问 TP-LINK 路由管理页绕过 tplogin.cn 跳转]]></title>
            <link>https://blog.viki.moe/nginx-tp-link</link>
            <guid isPermaLink="false">https://blog.viki.moe/nginx-tp-link</guid>
            <pubDate>Mon, 30 Sep 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[TP-LINK 路由器管理页限制公网访问？本文介绍如何通过 Nginx 反向代理配合 subs_filter 模块替换页面内容，绕过 tplogin.cn 域名检测，实现远程管理。]]></description>
            <content:encoded><![CDATA[TP-LINK 路由器管理页限制公网访问？本文介绍如何通过 Nginx 反向代理配合 subs_filter 模块替换页面内容，绕过 tplogin.cn 域名检测，实现远程管理。<br /><a href="https://blog.viki.moe/nginx-tp-link" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>Nginx</category>
            <category>DevOps</category>
            <category>运维</category>
            <category>网络</category>
            <category>路由器</category>
        </item>
        <item>
            <title><![CDATA[现代化的高质量 React Hooks 库（已开源）]]></title>
            <link>https://blog.viki.moe/shined-react-use</link>
            <guid isPermaLink="false">https://blog.viki.moe/shined-react-use</guid>
            <pubDate>Thu, 04 Jul 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[@shined/react-use 是一个现代化、SSR 友好且高度优化的 React Hooks 库。本文介绍其设计理念、核心特性（如安全状态、稳定引用）以及背后的工程化实践。]]></description>
            <content:encoded><![CDATA[@shined/react-use 是一个现代化、SSR 友好且高度优化的 React Hooks 库。本文介绍其设计理念、核心特性（如安全状态、稳定引用）以及背后的工程化实践。<br /><a href="https://blog.viki.moe/shined-react-use" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>React</category>
            <category>Hooks</category>
            <category>开源</category>
            <category>TypeScript</category>
        </item>
        <item>
            <title><![CDATA[Guitar Studio! （吉他工作室）]]></title>
            <link>https://blog.viki.moe/guitar-studio</link>
            <guid isPermaLink="false">https://blog.viki.moe/guitar-studio</guid>
            <pubDate>Fri, 12 Jan 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Guitar Studio 是一个开源的在线吉他工具箱，集成了调音器、节拍器、和弦库等实用功能。基于 React + TypeScript + Vite 开发，旨在让练琴变得更简单高效。]]></description>
            <content:encoded><![CDATA[Guitar Studio 是一个开源的在线吉他工具箱，集成了调音器、节拍器、和弦库等实用功能。基于 React + TypeScript + Vite 开发，旨在让练琴变得更简单高效。<br /><a href="https://blog.viki.moe/guitar-studio" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>Project</category>
            <category>React</category>
            <category>TypeScript</category>
            <category>音乐</category>
            <category>开源</category>
            <category>吉他</category>
        </item>
        <item>
            <title><![CDATA[探索 TypeScript 中函数重载的两种实现方法]]></title>
            <link>https://blog.viki.moe/ts-function-overload</link>
            <guid isPermaLink="false">https://blog.viki.moe/ts-function-overload</guid>
            <pubDate>Thu, 09 Nov 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[函数重载是 TypeScript 的强大特性，允许基于不同参数类型执行不同逻辑。本文介绍函数重载的意义，并详解通过多个函数定义和接口定义实现重载的两种方法。]]></description>
            <content:encoded><![CDATA[函数重载是 TypeScript 的强大特性，允许基于不同参数类型执行不同逻辑。本文介绍函数重载的意义，并详解通过多个函数定义和接口定义实现重载的两种方法。<br /><a href="https://blog.viki.moe/ts-function-overload" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>TypeScript</category>
            <category>JavaScript</category>
            <category>编程</category>
            <category>函数重载</category>
        </item>
        <item>
            <title><![CDATA[JavaScript 的函数参数竟然能相互访问到？]]></title>
            <link>https://blog.viki.moe/js-default-params</link>
            <guid isPermaLink="false">https://blog.viki.moe/js-default-params</guid>
            <pubDate>Sat, 04 Nov 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[深入探索 JavaScript 函数默认参数的有趣特性。揭示参数之间如何相互访问、闭包捕获机制以及参数顺序对作用域的影响，通过实例演示这些鲜为人知的细节。]]></description>
            <content:encoded><![CDATA[深入探索 JavaScript 函数默认参数的有趣特性。揭示参数之间如何相互访问、闭包捕获机制以及参数顺序对作用域的影响，通过实例演示这些鲜为人知的细节。<br /><a href="https://blog.viki.moe/js-default-params" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>JavaScript</category>
            <category>ES6</category>
            <category>函数</category>
            <category>作用域</category>
            <category>闭包</category>
        </item>
        <item>
            <title><![CDATA[来试试 Node.js 内置的 "delay" 函数]]></title>
            <link>https://blog.viki.moe/node-delay</link>
            <guid isPermaLink="false">https://blog.viki.moe/node-delay</guid>
            <pubDate>Thu, 26 Oct 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[告别手写 delay 函数！介绍 Node.js v15+ 内置的 Timers Promises API。详解 setTimeout 的 Promise 版本用法，探讨其相比传统手写延时函数的优势与高级特性。]]></description>
            <content:encoded><![CDATA[告别手写 delay 函数！介绍 Node.js v15+ 内置的 Timers Promises API。详解 setTimeout 的 Promise 版本用法，探讨其相比传统手写延时函数的优势与高级特性。<br /><a href="https://blog.viki.moe/node-delay" rel="nofollow noopener noreferrer" target="_blank">阅读全文 &raquo;</a>]]></content:encoded>
            <author>hi@viki.moe (Viki)</author>
            <category>Node.js</category>
            <category>JavaScript</category>
            <category>异步</category>
            <category>Promise</category>
            <category>API</category>
        </item>
    </channel>
</rss>