<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Rory Cai</title><description>Rory Cai 的个人主页与技术博客：前端、React Native、iOS / Android 与工程效率。</description><link>https://coiggahou2002.github.io/zh/</link><language>zh-CN</language><item><title>Prompt、Skill、MCP 都会消失：人们只为结果付费</title><link>https://coiggahou2002.github.io/zh/blogs/pay-for-outcomes/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/pay-for-outcomes/</guid><description>Prompt、Skill、Hook、Plugin，全都只是 AI 应用的过渡形态。留下来的，会是一个只交付结果的 Agent 市场。</description><pubDate>Fri, 18 Sep 2026 16:34:00 GMT</pubDate></item><item><title>AI 不会缩小人与人的差距，以及另外 7 条思考</title><link>https://coiggahou2002.github.io/zh/blogs/recent-thoughts/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/recent-thoughts/</guid><description>AI 并不会让人与人之间的差距缩小，真实的情况恰恰相反。它放大人的创造力，scale 人的判断力，但也会放大人的愚蠢和偏见。</description><pubDate>Sun, 09 Aug 2026 06:00:35 GMT</pubDate></item><item><title>less 新版搞事情，tailwind 语法糖无奈躺枪</title><link>https://coiggahou2002.github.io/zh/blogs/tailwind-less-compatibility/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/tailwind-less-compatibility/</guid><description>我们业务某个大型项目是微前端架构，技术栈是 SSR + Vue 3 + NestJS + Webpack4，样式预处理器用的是 less，项目内也集成了 Tailwind，平时大家习惯用 Tailwind 来快速写样式。 Tailwind 提供了一个叫 @apply 的语法糖，可以帮我们节省一些冗余代码量。 例如，在 Vue 的 template 中，我们可以这么写…</description><pubDate>Sun, 14 Sep 2025 10:00:00 GMT</pubDate></item><item><title>emoji 的长度到底是多少？UTF-16 下 emoji 字符串原理探究</title><link>https://coiggahou2002.github.io/zh/blogs/deep-into-emoji/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/deep-into-emoji/</guid><description>在日常前端开发过程中，我们经常会与 emoji 打交道。相信刚入门的新手们或多或少会遇到类似这样的问题： 使用split方法拆开含有 emoji 的字符串，拆坏了 使用.length获取含 emoji 字符串的长度，发现好像不太对劲 处理不当，正文出现一些奇怪的问号、框框，到底是什么？ 在实际开发中，其实我们的需求十分明确： 正确地显示含 emoji 的字符串 在有切分需求（例如逐字…</description><pubDate>Wed, 16 Jul 2025 00:00:00 GMT</pubDate></item><item><title>如何缩短前端项目构建时间</title><link>https://coiggahou2002.github.io/zh/blogs/how-to-reduce-nuxt-project-compile-time/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/how-to-reduce-nuxt-project-compile-time/</guid><description>构建的步骤不要放在 Dockerfile 里 Dockerfile 只负责构建运行时镜像 缓存 nodemodules, 不要每次都安装，当 package.json 没有发生变化时复用 使用 npm prune --production 删掉 devDependencies，能有效缩减一半以上的镜像体积 镜像基础层尽量使用瘦身版本的，例如 node:20-slim，如果连 npm…</description><pubDate>Sun, 08 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Objective-C 学习笔记</title><link>https://coiggahou2002.github.io/zh/blogs/app/objectivec/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/app/objectivec/</guid><description>标准 C 数据类型也是可以用的 局部变量在栈上分配，而对象在堆上分配 oc 需要手动装箱/拆箱 intValue 是 NSValue 类的方法 可变 / 不可变 可变 / 不可变 %@ 的行为类似 printf 的模板串，%@表示任何对象（会调用对象的 description 方法，类似 Java 类的 toString 方法），不同的是，NSLog 比 printf 多了时间戳 调用的语法和类…</description><pubDate>Sat, 17 May 2025 00:00:00 GMT</pubDate></item><item><title>关于 cookie 的一些总结</title><link>https://coiggahou2002.github.io/zh/blogs/http-cookie/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/http-cookie/</guid><description>一条 cookie 应该有什么属性？ 当一个 Cookie 被设置为 HttpOnly 属性后，它只能通过 HTTP（或 HTTPS）协议传输，不能被客户端的 JavaScript 脚本访问。这可以有效防止跨站脚本攻击（XSS），因为攻击者无法通过注入恶意的 JavaScript 代码来获取 HttpOnly Cookie 的信息。 Secure 属性用于指定 Cookie 只能通过安全的…</description><pubDate>Fri, 16 May 2025 00:00:00 GMT</pubDate></item><item><title>nginx 笔记</title><link>https://coiggahou2002.github.io/zh/blogs/nginx/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/nginx/</guid><description>下面是Nginx HTTP配置中常见的配置实例，涵盖了静态文件服务、反向代理、负载均衡、缓存设置等核心功能： 使用以下命令测试配置是否正确： 如果配置无误，Nginx 会重新加载配置： 在 Nginx 配置中，servername 指令用于指定虚拟主机（Virtual Host）的域名或 IP 地址，它决定了 Nginx 如何根据客户端请求的域名来分发流量到不同的服务器块（server…</description><pubDate>Thu, 15 May 2025 00:00:00 GMT</pubDate></item><item><title>使用 puppeteer 批量生成微信读书 423 活动勋章</title><link>https://coiggahou2002.github.io/zh/blogs/weread-medals-generator/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/weread-medals-generator/</guid><description>众所周知，每年 4 月 23 日是世界读书日，微信读书这次又搞活动了，要给每个用户生成一个独特的勋章。 这个勋章有多独特呢？勋章上面会有两个数字，左上角的数字代表用户注册微信读书到现在的总年数，右下角的数字代表用户这些年来总共读过多少本书。 例如我注册了 8 年，读过 230 本书，勋章就是下面这个样子👇（惭愧，没怎么好好读书 微信读书 App 上架至今总共 10 年，所以左上角数字的范围是…</description><pubDate>Fri, 25 Apr 2025 00:00:00 GMT</pubDate></item><item><title>移动端 WebView 如何 hook 日志到客户端</title><link>https://coiggahou2002.github.io/zh/blogs/hook-webview-console/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/hook-webview-console/</guid><description>移动端混合开发中，我们可能会嵌入 RN 或者嵌入 WebView，他们的 JS 都是在自己的引擎里运行的。 例如: RN 的 js 在 Hermes 里运行 iOS 上的 WKWebView 中，js 在JavaScriptCore 引擎上运行 Android 上的 WebView 中，js 在 V8 引擎里运行。 默认情况下，它们的 console.log（包括 info/warn/error…</description><pubDate>Tue, 08 Apr 2025 00:00:00 GMT</pubDate></item><item><title>解决了一个豆包还没解决的 Markdown 渲染问题</title><link>https://coiggahou2002.github.io/zh/blogs/markdown-emphasis-fix/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/markdown-emphasis-fix/</guid><description>在近期公司业务开发中，需要对大模型生成的 Markdown 文本进行解析并在移动端 WebView 上渲染，我们遇到了一个 Markdown 渲染问题： AI 生成的Markdown文本中，部分加粗内容无法正确解析，导致原始星号直接显示在页面上。 经过深入分析，我们发现这是 markdown-it 解析器的特定规则导致的，并通过巧妙的预处理方案解决了该问题。 当 AI 生成的 Markdown…</description><pubDate>Tue, 11 Mar 2025 13:00:00 GMT</pubDate></item><item><title>列表性能优化居然会导致曝光错误？RN FlatList removeClippedSubviews 踩坑实录</title><link>https://coiggahou2002.github.io/zh/blogs/rn-remove-clip-subview/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/rn-remove-clip-subview/</guid><description>在 React Native 开发中，我们经常会使用 FlatList 的 removeClippedSubviews 属性来优化列表性能。这个看似简单的优化属性，却在我们团队中引发了一场数据统计的&quot;灾难&quot;：列表中的元素明明没有出现在视口中，却总是被错误地统计为&quot;已曝光&quot;。经过深入排查，我们发现这背后涉及到了 RN 的视图树管理机制、iOS 和 Android…</description><pubDate>Wed, 22 Jan 2025 00:00:00 GMT</pubDate></item><item><title>从 import 与 import type 的区别引出的深入讨论</title><link>https://coiggahou2002.github.io/zh/blogs/importtype-import/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/importtype-import/</guid><description>工作中，一直稳定运行的 Nuxt 3 框架的其中一个页面突然在生产环境出现 500 Server Error，遂与同事用本地 dev 模式排查问题。 以本地开发模式排查报错的过程中，发现了项目抛出了一个错误 SyntaxError: The requested module myTypes does not provide an export named…</description><pubDate>Sun, 23 Jun 2024 00:00:00 GMT</pubDate></item><item><title>在团队中共享 VS Code 代码片段</title><link>https://coiggahou2002.github.io/zh/blogs/share-vscode-snippets-among-team/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/share-vscode-snippets-among-team/</guid><description>代码片段是可以更轻松地输入重复代码模式（例如循环或条件语句）的模板。 VS Code 允许用户在以下级别定义自己的代码片段： 全局片段适用于每个文件（语言无关） 语言级片段适用于特定语言，例如 javascript.json 配置仅适用于 JavaScript 文件。 项目级片段仅在当前项目目录中生效 VS Code allows users to define their own…</description><pubDate>Thu, 20 Jun 2024 00:00:00 GMT</pubDate></item><item><title>Git</title><link>https://coiggahou2002.github.io/zh/blogs/git/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/git/</guid><description>分支只是指向 snapshot 节点的指针 snapshot 节点组成一幅有向无环图 HEAD 指针指向当前工作区状态对应的 snapshot 节点 工作区(Working Directory) 暂存区(Staging Area) 自上一次提交后，git 知道的文件，产生了修改后，就会进入这个状态（如果是 git 不知道的文件，即使它产生了修改，也不会进入 Modified…</description><pubDate>Sun, 08 Oct 2023 00:00:00 GMT</pubDate></item><item><title>Kotlin 学习笔记</title><link>https://coiggahou2002.github.io/zh/blogs/app/learn-kotlin/</link><guid isPermaLink="true">https://coiggahou2002.github.io/zh/blogs/app/learn-kotlin/</guid><description>最近想要深入一下 React Native 的源码，感觉从 Android 入手会相对好一点，因为本身就熟悉 Java，但是现在维护的项目是 Java 和 Kotlin 混合的，所以 Kotlin 也顺带看了一下。 主要和 TypeScript 结合对比来理解。 Short, Int, Long UShort, UInt, ULong Boolean String Float Double…</description></item></channel></rss>