<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Blog | Fwio</title><description>UN JOUR JE SERAI DE RETOUR PRÈS DE TOI</description><link>https://www.fwio.me/</link><item><title>Readings 251127</title><link>https://www.fwio.me/notes/251127-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/251127-reading/</guid><description>Readings</description><pubDate>Thu, 27 Nov 2025 14:00:00 GMT</pubDate></item><item><title>Recently</title><link>https://www.fwio.me/notes/recently/</link><guid isPermaLink="true">https://www.fwio.me/notes/recently/</guid><description>Hardcore landing.</description><pubDate>Sun, 21 Sep 2025 10:00:00 GMT</pubDate></item><item><title>Readings 250726</title><link>https://www.fwio.me/notes/250726-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/250726-reading/</guid><description>Readings</description><pubDate>Sat, 26 Jul 2025 08:00:00 GMT</pubDate></item><item><title>How Jotai works under the hood</title><link>https://www.fwio.me/blog/how-jotai-works-under-the-hood/</link><guid isPermaLink="true">https://www.fwio.me/blog/how-jotai-works-under-the-hood/</guid><description>What I learned from reading Jotai&apos;s code, mostly about its reactivity implementation in this post.</description><pubDate>Sat, 12 Jul 2025 04:00:00 GMT</pubDate></item><item><title>Detect Client Environment with React</title><link>https://www.fwio.me/notes/react-use-is-client/</link><guid isPermaLink="true">https://www.fwio.me/notes/react-use-is-client/</guid><description>Internals of `useIsClient`</description><pubDate>Mon, 23 Jun 2025 01:00:00 GMT</pubDate></item><item><title>TypeScript: Generic Type vs. Generic Function Type</title><link>https://www.fwio.me/blog/ts-generic-type-vs-generic-function-type/</link><guid isPermaLink="true">https://www.fwio.me/blog/ts-generic-type-vs-generic-function-type/</guid><description>Understanding the subtle but important difference between generic types and generic function types in TypeScript.</description><pubDate>Tue, 03 Jun 2025 14:00:00 GMT</pubDate></item><item><title>Readings 250529</title><link>https://www.fwio.me/notes/250529-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/250529-reading/</guid><description>Readings</description><pubDate>Thu, 29 May 2025 13:00:00 GMT</pubDate></item><item><title>Readings 250520</title><link>https://www.fwio.me/notes/250520-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/250520-reading/</guid><description>Readings</description><pubDate>Tue, 20 May 2025 14:00:00 GMT</pubDate></item><item><title>Readings 250519</title><link>https://www.fwio.me/notes/250519-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/250519-reading/</guid><description>Readings</description><pubDate>Mon, 19 May 2025 05:30:00 GMT</pubDate></item><item><title>Readings 250429</title><link>https://www.fwio.me/notes/250429-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/250429-reading/</guid><description>Readings</description><pubDate>Tue, 29 Apr 2025 14:30:00 GMT</pubDate></item><item><title>Readings 250330</title><link>https://www.fwio.me/notes/250330-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/250330-reading/</guid><description>Readings</description><pubDate>Sat, 29 Mar 2025 16:30:00 GMT</pubDate></item><item><title>Reading Valibot Thesis</title><link>https://www.fwio.me/notes/reading-valibot-thesis/</link><guid isPermaLink="true">https://www.fwio.me/notes/reading-valibot-thesis/</guid><description>Notes on reading the Valibot thesis.</description><pubDate>Thu, 20 Mar 2025 12:00:00 GMT</pubDate></item><item><title>Mock File Response with MSW</title><link>https://www.fwio.me/blog/mock-file-response-with-msw/</link><guid isPermaLink="true">https://www.fwio.me/blog/mock-file-response-with-msw/</guid><description>How to mock file response with MSW.</description><pubDate>Mon, 17 Mar 2025 00:00:00 GMT</pubDate></item><item><title>Produce an animation frame in 10 ms</title><link>https://www.fwio.me/notes/produce-animation-frame-in-10-ms/</link><guid isPermaLink="true">https://www.fwio.me/notes/produce-animation-frame-in-10-ms/</guid><description>Why it&apos;s recommended to produce an animation frame in less than 10ms.</description><pubDate>Wed, 05 Mar 2025 04:30:00 GMT</pubDate></item><item><title>Readings 250302</title><link>https://www.fwio.me/notes/250302-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/250302-reading/</guid><description>Readings</description><pubDate>Sun, 02 Mar 2025 04:00:00 GMT</pubDate></item><item><title>How does the &quot;state&quot; parameter prevent CSRF in OAuth?</title><link>https://www.fwio.me/blog/oauth-state-param-explained/</link><guid isPermaLink="true">https://www.fwio.me/blog/oauth-state-param-explained/</guid><description>A kinda reversed version of CSRF attack - that&apos;s what the `state` parameter prevents.</description><pubDate>Mon, 24 Feb 2025 12:00:00 GMT</pubDate></item><item><title>Type Checking in Monorepo</title><link>https://www.fwio.me/blog/ts-in-monorepo/</link><guid isPermaLink="true">https://www.fwio.me/blog/ts-in-monorepo/</guid><description>How to do type checking in a monorepo?</description><pubDate>Sat, 25 Jan 2025 10:00:00 GMT</pubDate></item><item><title>Import Raw Assets in Vite</title><link>https://www.fwio.me/notes/import-raw-assets-in-vite/</link><guid isPermaLink="true">https://www.fwio.me/notes/import-raw-assets-in-vite/</guid><description>The internals of importing raw assets in Vite.</description><pubDate>Wed, 15 Jan 2025 14:00:00 GMT</pubDate></item><item><title>Referencing JSON in Vite</title><link>https://www.fwio.me/blog/reference-json-in-vite/</link><guid isPermaLink="true">https://www.fwio.me/blog/reference-json-in-vite/</guid><description>How to import your JSON files properly in Vite.</description><pubDate>Fri, 03 Jan 2025 14:42:00 GMT</pubDate></item><item><title>Mapping Cursor Position After Formatting</title><link>https://www.fwio.me/blog/mapping-cursor-position-after-formatting/</link><guid isPermaLink="true">https://www.fwio.me/blog/mapping-cursor-position-after-formatting/</guid><description>How to map the cursor position after formatting.</description><pubDate>Fri, 29 Nov 2024 15:16:00 GMT</pubDate></item><item><title>npm is Superior Again</title><link>https://www.fwio.me/notes/npm-is-superior-again/</link><guid isPermaLink="true">https://www.fwio.me/notes/npm-is-superior-again/</guid><description>npm is Superior Again</description><pubDate>Tue, 19 Nov 2024 02:00:00 GMT</pubDate></item><item><title>Reading Notes of &quot;A Map of Sync&quot;</title><link>https://www.fwio.me/notes/a-map-of-sync/</link><guid isPermaLink="true">https://www.fwio.me/notes/a-map-of-sync/</guid><description>Reading &quot;A Map of Sync&quot;</description><pubDate>Fri, 15 Nov 2024 02:00:00 GMT</pubDate></item><item><title>React now uses microtask for sync updates</title><link>https://www.fwio.me/notes/react-now-use-microtask-for-sync-updates/</link><guid isPermaLink="true">https://www.fwio.me/notes/react-now-use-microtask-for-sync-updates/</guid><description>React now uses microtask for sync updates</description><pubDate>Thu, 14 Nov 2024 12:00:00 GMT</pubDate></item><item><title>How to Plagiarize Tanstack Router&apos;s Search Params API</title><link>https://www.fwio.me/blog/how-to-plagiarize-tanstack-router-search-params-api-en/</link><guid isPermaLink="true">https://www.fwio.me/blog/how-to-plagiarize-tanstack-router-search-params-api-en/</guid><description>Some internals of the amazing Search Params API from Tanstack Router, and how to implement a similar one in a React Router-based project.</description><pubDate>Thu, 07 Nov 2024 00:00:00 GMT</pubDate></item><item><title>如何剽窃 Tanstack Router 的 Search Params API</title><link>https://www.fwio.me/blog/how-to-plagiarize-tanstack-router-search-params/</link><guid isPermaLink="true">https://www.fwio.me/blog/how-to-plagiarize-tanstack-router-search-params/</guid><description>Some internals of the amazing Search Params API from Tanstack Router, and how to implement a similar one in a React Router based project.</description><pubDate>Sun, 27 Oct 2024 10:00:00 GMT</pubDate></item><item><title>Readings 2409019</title><link>https://www.fwio.me/notes/240919-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/240919-reading/</guid><description>Readings</description><pubDate>Thu, 19 Sep 2024 04:00:00 GMT</pubDate></item><item><title>Readings 2409012</title><link>https://www.fwio.me/notes/240912-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/240912-reading/</guid><description>Readings</description><pubDate>Thu, 12 Sep 2024 10:00:00 GMT</pubDate></item><item><title>Readings 2409006</title><link>https://www.fwio.me/notes/240906-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/240906-reading/</guid><description>Readings</description><pubDate>Fri, 06 Sep 2024 05:00:00 GMT</pubDate></item><item><title>Readings 240905</title><link>https://www.fwio.me/notes/240905-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/240905-reading/</guid><description>Readings</description><pubDate>Thu, 05 Sep 2024 02:00:00 GMT</pubDate></item><item><title>Readings 240901</title><link>https://www.fwio.me/notes/240901-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/240901-reading/</guid><description>Readings</description><pubDate>Sun, 01 Sep 2024 12:25:00 GMT</pubDate></item><item><title>Readings 240824</title><link>https://www.fwio.me/notes/240824-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/240824-reading/</guid><description>Readings</description><pubDate>Sat, 24 Aug 2024 09:15:00 GMT</pubDate></item><item><title>Readings 240809</title><link>https://www.fwio.me/notes/240809-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/240809-reading/</guid><description>Readings</description><pubDate>Thu, 08 Aug 2024 16:00:00 GMT</pubDate></item><item><title>Readings 240808</title><link>https://www.fwio.me/notes/240808-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/240808-reading/</guid><description>Readings</description><pubDate>Thu, 08 Aug 2024 02:00:00 GMT</pubDate></item><item><title>Readings 240719</title><link>https://www.fwio.me/notes/240719-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/240719-reading/</guid><description>Readings</description><pubDate>Fri, 19 Jul 2024 15:00:00 GMT</pubDate></item><item><title>Readings 240716</title><link>https://www.fwio.me/notes/240716-reading/</link><guid isPermaLink="true">https://www.fwio.me/notes/240716-reading/</guid><description>Readings</description><pubDate>Tue, 16 Jul 2024 01:28:00 GMT</pubDate></item><item><title>Adopt Oxlint</title><link>https://www.fwio.me/blog/adopt-oxlint/</link><guid isPermaLink="true">https://www.fwio.me/blog/adopt-oxlint/</guid><description>How to integrate your project with oxlint, the cutting-edge JavaScript linter.</description><pubDate>Sat, 06 Jul 2024 15:16:00 GMT</pubDate></item><item><title>CodeMirror Notes</title><link>https://www.fwio.me/notes/codemirror/</link><guid isPermaLink="true">https://www.fwio.me/notes/codemirror/</guid><description>Notes for CodeMirror 6</description><pubDate>Fri, 21 Jun 2024 07:00:00 GMT</pubDate></item><item><title>Re-mixing(routing) React Query (WIP)</title><link>https://www.fwio.me/blog/remixing-react-query/</link><guid isPermaLink="true">https://www.fwio.me/blog/remixing-react-query/</guid><description>Draft notes on integrating React Query with React Router.</description><pubDate>Sun, 09 Jun 2024 15:32:00 GMT</pubDate></item><item><title>如果上帝忘记 — 读《被掩埋的巨人》</title><link>https://www.fwio.me/essay/the-buried-giant/</link><guid isPermaLink="true">https://www.fwio.me/essay/the-buried-giant/</guid><description>“我们忘记过去的很多事情——遥远的事情，当天的事情。”</description><pubDate>Thu, 28 Sep 2023 15:55:00 GMT</pubDate></item><item><title>Webpack 4 迁移 RFC</title><link>https://www.fwio.me/blog/webpack4-migration-rfc/</link><guid isPermaLink="true">https://www.fwio.me/blog/webpack4-migration-rfc/</guid><description>实习期间，对陈旧项目架构的一次构建效率升级，本文是其 RFC，当然，我相信不太会有人愿意看这样的内容</description><pubDate>Fri, 09 Dec 2022 11:00:00 GMT</pubDate></item><item><title>How to win at CORS?</title><link>https://www.fwio.me/blog/how-to-win-at-cors/</link><guid isPermaLink="true">https://www.fwio.me/blog/how-to-win-at-cors/</guid><description>现代 Web 开发离不开 CORS，本文参考 Jake Archibald 的《How to win at CORS?》，做一些摘要、翻译和笔记。</description><pubDate>Thu, 24 Nov 2022 07:09:00 GMT</pubDate></item><item><title>Vue 与 React 与竞态问题</title><link>https://www.fwio.me/blog/race-condition-in-vue-and-react/</link><guid isPermaLink="true">https://www.fwio.me/blog/race-condition-in-vue-and-react/</guid><description>从《Vue.js 设计与实现》和 reactjs.beta.org 文档上看到的两个框架处理竞态问题上的相似手法，是闭包使用的很好案例。</description><pubDate>Tue, 18 Oct 2022 13:07:00 GMT</pubDate></item><item><title>Function.prototype.length</title><link>https://www.fwio.me/notes/function-length/</link><guid isPermaLink="true">https://www.fwio.me/notes/function-length/</guid><description>Function.prototype.length 的意义。</description><pubDate>Mon, 10 Oct 2022 06:54:00 GMT</pubDate></item><item><title>借助 `import.meta.glob` 编写自动路由脚本</title><link>https://www.fwio.me/blog/import-meta-glob-and-auto-routes/</link><guid isPermaLink="true">https://www.fwio.me/blog/import-meta-glob-and-auto-routes/</guid><description>Flog 是一个重运行时的博客应用，为了在功能上实现像 VitePress、Next.js 等 SSG 框架那样的基于文件系统的路由，使用 Vite 自带的 import.meta.glob API 实现了一个轻量级的、运行时的自动路由脚本。</description><pubDate>Fri, 07 Oct 2022 08:20:00 GMT</pubDate></item><item><title>Promise/A+ 规范</title><link>https://www.fwio.me/blog/promise-a-plus/</link><guid isPermaLink="true">https://www.fwio.me/blog/promise-a-plus/</guid><description>翻译 Promise/A+ Specification</description><pubDate>Mon, 03 Oct 2022 12:56:00 GMT</pubDate></item><item><title>TS 非空断言操作符（Non-null Assertion Operator）</title><link>https://www.fwio.me/notes/ts-non-null-operator/</link><guid isPermaLink="true">https://www.fwio.me/notes/ts-non-null-operator/</guid><description>操作符，将 null 和 undefined 的情况排除。</description><pubDate>Mon, 03 Oct 2022 03:20:00 GMT</pubDate></item><item><title>客户端 Session Storage 的生命周期</title><link>https://www.fwio.me/blog/client-session-storage/</link><guid isPermaLink="true">https://www.fwio.me/blog/client-session-storage/</guid><description>Session Storage 是一种 Web Client Storage，本文通过试验对其生命周期进行一些探讨</description><pubDate>Fri, 30 Sep 2022 13:33:00 GMT</pubDate></item><item><title>/[a-zA-Z]/.test(undefined) === true</title><link>https://www.fwio.me/notes/regexp-test-undefined/</link><guid isPermaLink="true">https://www.fwio.me/notes/regexp-test-undefined/</guid><description>undefined 被自动转化成字符串进行正则匹配了，整蛊</description><pubDate>Sun, 25 Sep 2022 10:31:00 GMT</pubDate></item><item><title>关键渲染路径（Critical Rendering Path）</title><link>https://www.fwio.me/blog/critical-rendering-path/</link><guid isPermaLink="true">https://www.fwio.me/blog/critical-rendering-path/</guid><description>关键渲染路径（CSP）是浏览器渲染页面的主要流程，通过了解其内部原理，可对前端性能优化起到重要的指示作用。</description><pubDate>Sun, 25 Sep 2022 03:24:00 GMT</pubDate></item><item><title>JS 的 &amp;&amp; 与 ||</title><link>https://www.fwio.me/notes/js-logical-operator/</link><guid isPermaLink="true">https://www.fwio.me/notes/js-logical-operator/</guid><description>JS 逻辑运算符的短路特性。</description><pubDate>Fri, 23 Sep 2022 14:49:00 GMT</pubDate></item><item><title>TS 中的函数重载</title><link>https://www.fwio.me/notes/overload-in-ts/</link><guid isPermaLink="true">https://www.fwio.me/notes/overload-in-ts/</guid><description>TypeScript 所定义的函数重载语法，与 C++ 等静态语言中的概念有较大差异。</description><pubDate>Mon, 12 Sep 2022 14:06:00 GMT</pubDate></item><item><title>CSRF 和 XSS 攻击</title><link>https://www.fwio.me/blog/csrf-and-xss/</link><guid isPermaLink="true">https://www.fwio.me/blog/csrf-and-xss/</guid><description>记录 The JWT Handbook 中对 XSS 与 CSRF 攻击的通俗解释</description><pubDate>Sat, 10 Sep 2022 05:15:00 GMT</pubDate></item><item><title>JavaScript 的事件循环（Event Loop）</title><link>https://www.fwio.me/blog/js-event-loop/</link><guid isPermaLink="true">https://www.fwio.me/blog/js-event-loop/</guid><description>关于 JS Event Loop，主要抄有名的 Jake Archibald 的文章，当然也有抄其他的。</description><pubDate>Sat, 03 Sep 2022 10:42:00 GMT</pubDate></item><item><title>JavaScript 实现深拷贝（cloneDeep）</title><link>https://www.fwio.me/blog/deep-clone-in-js/</link><guid isPermaLink="true">https://www.fwio.me/blog/deep-clone-in-js/</guid><description>实现 JS 变量的深拷贝，相比于网上普遍的程序，额外包含了对 Promise 对象的克隆</description><pubDate>Sat, 03 Sep 2022 04:48:00 GMT</pubDate></item><item><title>prototype 函数中的 this 绑定</title><link>https://www.fwio.me/notes/this-in-js-prototype-function/</link><guid isPermaLink="true">https://www.fwio.me/notes/this-in-js-prototype-function/</guid><description>你知道的，我一直是 `this` 的死党，至于 Functional Programming，我祝他成功</description><pubDate>Fri, 02 Sep 2022 07:11:00 GMT</pubDate></item><item><title>JS 中关于正则表达式的字符串操作</title><link>https://www.fwio.me/notes/js-string-and-regexp/</link><guid isPermaLink="true">https://www.fwio.me/notes/js-string-and-regexp/</guid><description>JS 处理正则和字符串的几个方法。</description><pubDate>Thu, 01 Sep 2022 09:31:00 GMT</pubDate></item><item><title>JS 中的 Array.fill()</title><link>https://www.fwio.me/notes/js-array-fill/</link><guid isPermaLink="true">https://www.fwio.me/notes/js-array-fill/</guid><description>Array.fill() 对于设置了 length、未设置元素的数组的作用。</description><pubDate>Wed, 31 Aug 2022 13:26:00 GMT</pubDate></item><item><title>JS 中字符串与 ASCII 码的相互转换</title><link>https://www.fwio.me/notes/string-to-ascii/</link><guid isPermaLink="true">https://www.fwio.me/notes/string-to-ascii/</guid><description>String，在 JS 中被封装得相当厉害，开发者应该只用考虑 UTF-16 scalar value 了吧。</description><pubDate>Wed, 31 Aug 2022 07:23:00 GMT</pubDate></item><item><title>TypeScript 中的&quot;空对象字面值&quot;</title><link>https://www.fwio.me/blog/empty-object-in-ts/</link><guid isPermaLink="true">https://www.fwio.me/blog/empty-object-in-ts/</guid><description>TS 中的 `{}` 并不代表空对象字面值的类型，而是代表任意对象</description><pubDate>Wed, 24 Aug 2022 09:55:00 GMT</pubDate></item><item><title>Flog 与 SSG</title><link>https://www.fwio.me/blog/ssg-in-flog/</link><guid isPermaLink="true">https://www.fwio.me/blog/ssg-in-flog/</guid><description>构建初版 Flog 的心路历程。</description><pubDate>Fri, 19 Aug 2022 10:07:00 GMT</pubDate></item><item><title>TS Config 简记</title><link>https://www.fwio.me/blog/tsconfig-notes/</link><guid isPermaLink="true">https://www.fwio.me/blog/tsconfig-notes/</guid><description>对 TypeScript 的 Config File 中一些字段意义的记录。</description><pubDate>Mon, 02 May 2022 10:03:00 GMT</pubDate></item><item><title>Vue + Node.js + MySQL 项目部署到 ECS 服务器</title><link>https://www.fwio.me/blog/vue-node-mysql-deployment/</link><guid isPermaLink="true">https://www.fwio.me/blog/vue-node-mysql-deployment/</guid><description>别再用阿里云了</description><pubDate>Sun, 27 Feb 2022 10:11:00 GMT</pubDate></item></channel></rss>