{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "奶爸博客",
  "home_page_url": "https://lifelonglearn.ing",
  "description": "我的工作和生活～",
  "author": {
    "name": "奶爸"
  },
  "authors": [
    {
      "name": "奶爸"
    }
  ],
  "items": [
    {
      "id": "",
      "url": "https://lifelonglearn.ing/ai-matters-work-redefined",
      "title": "当 AI 接管了「活儿」，我们该如何接管「工作」？",
      "content_html": "\u003cp\u003e现在每天工作的时候基本上是 1 个 Terminal 窗口，1 个 Chrome 窗口、1 个 IM 窗口，多个 VSCode 窗口搞定一切，主要的交互和产出是通过 Terminal 和 Claude Code 交互，偶尔会 \u003ccode\u003e!code .\u003c/code\u003e 来看下 AI 的产出，而 Chrome 和 IM 和其他人沟通和操作 OA。在前 AI 时代我就是全干工程师，VSCode 一把梭，上面装了各种前后端语言的 LSP、lint、format 等工具，工作算是比较舒心，在那个时代全栈这个壁垒还是很高的。\u003c/p\u003e\n\u003cp\u003e但是在当下的 AI 时代，执行的角色大多交给了 AI，它的产出 90% 都是没有问题的。我的 VSCode 中基本上没装任何插件，只是个带语法高亮的文本浏览器，我做的事情大多是修正 AI 产出的设计问题，比如明明可以抽象一下统一处理的地方它分散在各处进行处理，还有一些对需求理解上的偏差及检查不完善或者无用的测试用例。当下我们在做的是编排 workflow 尽量让 AI 的产出更加可靠，相关的生态还在不断发展，现在谁也不能说不经过人工检查，AI 的产出 100% 可靠。早上还看到一个消息说各大实验室都在今年把重心放在 agent 开发上了，前几天有字节的朋友也在说现在字节内部也在大炼 agent。炼完 agent 的下一步一定是裁员，大家效率上来了，三个人的活只需要一个人干了，如果没有新业务产生，裁员是确定性的。\u003c/p\u003e\n\u003cp\u003e以前是需要努力才能成为全栈，现在你只要有一门精通，配合 AI 加成也是全栈。我也有 AI 焦虑，这两天脑子里一直都是 shit 这个词，现在 vibe shit 太多了，前端时间大家都在吹的 pinchtab 我实际集成到我的 cloudcode 中的时候就发现环境变量参数什么的比较混乱，stealth 功能都是坏的，后面是我让 AI 提了两个 issue 让他们修掉的。就很多人就宣称做了什么什么怎么怎么样，还有人 vibe 了一个静态前端页面要当 CRP 用的，软件是大爆发了，屎也很多。我之前用 AI 从 PHP 用 Go + React 重新写的 \u003ca href=\"/bonds-app\"\u003ebonds\u003c/a\u003e 项目，原项目 monica 有上百 API，前后几年时间写出来的，很多的细节，并不是一句话就能重写好的，需要几轮的交叉检查和完善的 E2E 测试来确保功能完整，这个项目我自己 1 个小时都没用过，没时间用，全靠 E2E 测试和其他用户提 issue，然后我用 cloudcode 让 AI 自己看 issue 自己修复自己关 issue。\u003c/p\u003e\n\u003cp\u003e现在 \u003ca href=\"/cloudcode-app\"\u003ecloudcode\u003c/a\u003e 已经闭源了，但是还可以直接通过 docker 使用，原因是前段时间到济南玩的那几天实现了 autoresearch 功能，在 opencode 上实现了这么个调度能力，故障恢复、结果量化、自优化迭代，解决了很多边界问题。闭源的原因是我花了很多精力优化这个功能，它的优化迭代效果很好，有价值，而我又没时间也不擅长运作开源让它为我带来价值，索性直接把代码闭源。今天发的 \u003ca href=\"/r/go?url=aHR0cHM6Ly9naXRodWIuY29tL25haWJhL2JvbmRzL2NvbXBhcmUvdjAuNy45Li4udjAuOC4w\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ebonds v0.8.0\u003c/a\u003e(Monica V4 导入功能) 就是昨天晚上睡觉前在 cloudcode 中让 AI 做了个 plan，开启执行后我就去睡了它自己完成的，今天让它自己发掉了，有几个 oh-my-opencode 的垃圾文件无伤大雅。\u003c/p\u003e\n\u003cp\u003e我也怕裁员，最近也比较焦虑，现在较去年已经胖了 20 斤。不是 AI 可以替代我，而是体现人能力的机会不多了，我不太看好评估体系，业务就那么多大家效率上来了，就不需要那么多人。今天早上注册了几个域名：\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003emakeshithappen.xyz / letshithappen.com / getshitpaid.com 这几个屎感觉好玩\u003c/li\u003e\n\u003cli\u003eretiredbyai.com 被 AI 强制退休，希望还能发光发热几年吧\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e现在我完全没法评估半年后的发展，能做的也就是保持学习，let shit happen，让 AI 的子弹再飞一会。\u003c/p\u003e\n",
      "summary": "现在每天工作的时候基本上是1个 Terminal 窗口，1个 Chrome 窗口、1个 IM 窗口，多个 VSCode 窗口搞定一切，主要的交互和产出是通过 Terminal 和 Claude Code 交互，偶尔会 code . 来看下 AI 的产出，而 Chrome 和 IM 和其他人沟通和操作OA。在前 AI 时代我就是全干工程师，VSCode 一把梭，上面装了各种前后端语言的 LSP、li…",
      "date_published": "2026-04-04T05:36:13.506668Z",
      "date_modified": "2026-04-04T08:12:56.425487Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/summary-of-2025",
      "title": "2025 年终总结",
      "content_html": "\u003cp\u003e2025 年终总结，虽迟但到。今年收成不错，但也栽了个大跟头，今年相当于完全白干了，几个黑天鹅事件让我损失惨重，我是第一年参与交易，之前一直只做技术，没吃过亏，一直在扛。\u003c/p\u003e\n\u003cp\u003e2025 年好像没啥记忆深刻的事情，翻了翻去年的博文，发现应该是很累的，在上海待了半个月，盯着装修房子，置办安装家具。一段时间还受咳嗽变异性哮喘折磨，现在不看之前的文章都感觉是几年前的事情了，可能是年底这段时间的体会更加深刻。\u003c/p\u003e\n\u003cp\u003e年初的时候还没有完全用上 AI，还在吭哧吭哧手撸代码，大部分时间只是用 AI 来自动补全 function。直到我们采购了 Cursor，我才认识到 AI 的能力，从 sonnect 用到 opus，极大的提高了我的效率。随着效率越来越高，从使用 AI 的开心与兴奋慢慢变成了焦虑，AI 太强了。\u003c/p\u003e\n\u003cp\u003e我的第一桶金是几年前做外包得来的，那个时候我还要找前端找设计配合，相当于组个小团队，我也可以做前端但是懒得做，因为我完美主义调细节会调很久，就比如我的博客的 astro-paper 新主题，我就各种细节调了几十次调了几天。现在的我一个人就是一个团队，AI 既有审美又有逻辑，全能人才，我只需要下达任务，就能完成之前几个人十几天完成的工作。而且这是无痛的，这几天经常搞到 1 点后，就像是手下有一个能力极强的 24H 待命的团队。\u003c/p\u003e\n\u003cp\u003e现在我日常用的是 Claude CLI + Claude API，业余时间用的是 OpenCode + 白嫖的 API，各有千秋吧，Claude 目前生态要好些，配套要强一些，尤其是官方提供的几个 skill 都很牛逼。OpenCode 现在就一个 oh-my-opencode，但是胜在架构好，前后端分离，权限放的彻底，需要人确认的少，自带 WebUI，支持各家模型，所以我业余时间一直在用 OpenCode。\u003c/p\u003e\n\u003cp\u003e我有做一个 debate command，选三家厂商的顶级模型，讨论一个问题，比如 Gemini 和 Claude 哪个更好，让三个顶级模型进行调研 PK，得到最佳结论。还做了个通过一个链接不断的浏览探索生成一个人的报告的 command，总结的比我自己对自己的认知都好。\u003c/p\u003e\n\u003cp\u003e过年基本上没和亲戚联系，在丈母娘家吃了几次饭还挺好的。和发小见面也是一波三折，匆匆忙忙。放假以来我每天都在高强度 Vibe Coding，通过我做的 \u003ca href=\"/cloudcode-app\"\u003eCloudCode\u003c/a\u003e 三个项目一起开发，其他除了打打麻将也没干啥，家里人少，也不一起看电视，完全没过年的感觉。\u003c/p\u003e\n\u003cp\u003e今年对我最大的触动是 AI，体会最多的也是 AI，今年是个 AI 年。\u003c/p\u003e\n\u003cp\u003e假期快结束了，现在是个快速变化的时代，我也不知道 2026 年会发生什么，交给时间。\u003c/p\u003e\n",
      "summary": "2025年终总结，虽迟但到。今年收成不错，但也栽了个大跟头，今年相当于完全白干了，几个黑天鹅事件让我损失惨重，我是第一年参与交易，之前一直只做技术，没吃过亏，一直在扛。 2025年好像没啥记忆深刻的事情，翻了翻去年的博文，发现应该是很累的，在上海待了半个月，盯着装修房子，置办安装家具。一段时间还受咳嗽变异性哮喘折磨，现在不看之前的文章都感觉是几年前的事情了，可能是年底这段时间的体会更加深刻。 年初…",
      "date_published": "2026-02-20T03:07:01.698712Z",
      "date_modified": "2026-02-21T01:49:31.997643Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/cloudcode-app",
      "title": "CloudCode 云端多实例 OpenCode 管理工具",
      "content_html": "\u003cp\u003e\u003cimg src=\"/upload/07e021d3-b12f-cd80-c063-9afea2e0206d.png\" alt=\"Screenshot20260220at093124.png\" loading=\"lazy\" /\u003e\u003c/p\u003e\n\u003cp\u003e链接：\u003ca href=\"/r/go?url=aHR0cHM6Ly9naXRodWIuY29tL25haWJhL2Nsb3VkY29kZQ==\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ehttps://github.com/naiba/cloudcode\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e2026-04-05 更新：\u003c/code\u003e 现在已经闭源了，至于原因在 \u003ca href=\"/ai-matters-work-redefined\"\u003e当 AI 接管了「活儿」，我们该如何接管「工作」？\u003c/a\u003e 中有说，但是 \u003ca href=\"/r/go?url=aHR0cHM6Ly9naXRodWIuY29tL25haWJhL2Nsb3VkY29kZS9wa2dzL2NvbnRhaW5lci9jbG91ZGNvZGU=\" target=\"_blank\" rel=\"noopener noreferrer\"\u003edocker image\u003c/a\u003e 依然可用，下面是个示例 docker compose，暴露到 localhost 然后用 cloudflare tunnel 安全转出。\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-yaml\"\u003eservices:\n  cloudcode:\n    image: ghcr.io/naiba/cloudcode:latest\n    ports:\n      - \u0026quot;127.0.0.1:8888:8080\u0026quot;\n    environment:\n      - HOST_DATA_DIR=${HOST_DATA_DIR:-${PWD}/data}\n    volumes:\n      - ./data:/app/data\n      - /var/run/docker.sock:/var/run/docker.sock\n    networks:\n      - cloudcode-net\n    restart: unless-stopped\n\nnetworks:\n  cloudcode-net:\n    external: true\n    name: cloudcode-net\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e放了年假后一直在高强度 Vibe Coding，边看视频 AI 边自动化测试时电脑发热严重，有点吃不消，我就准备把我的 4H24G 的 Oracle 利用起来，把 CloudCode 搞了出来，现在可以愉快的看视频了。\u003c/p\u003e\n\u003cp\u003e这是一个部署在服务器端，基于 Dokcer 的多 OpenCode 实例管理工具，主要是释放本地电脑资源，不用在自己电脑上跑 AI Coding，然后避免 OpenCode 装各种 LSP 和 Skills 到处拉屎。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"/upload/58248dc5-05c6-af90-0351-595ad423c9c6.png\" alt=\"Screenshot20260220at093541.png\" loading=\"lazy\" /\u003e\u003c/p\u003e\n\u003cp\u003e它有一个自带的 Terminal 用来在 WebUI 出现故障时紧急使用，然后可以管理各个实例的创建启停，所有的实例都共享一套 OpenCocde 配置，你在一个实例里面装了 skill 也会同步到其他所有实例。管理面板可以配置 Provider 和其他 OpenCode 配置，也是所有实例共用，非常方便。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"/upload/adad888b-0b26-8135-a646-86c23bd72d55.png\" alt=\"Screenshot20260220at093716.png\" loading=\"lazy\" /\u003e\u003c/p\u003e\n\u003cp\u003e上面就是 OpenCode 自带的 WebUI，支持 Terminal、Review、文件管理，功能非常强大，CloudCode 只是做一下 proxy，因为 OpenCode WebUI 不支持 serve 在 sub path，其实有些问题，不过都解决了，现在我的 CloudCode 运行在 Cloudflare 的 ZeroTrust 后面，也没做内置的认证，没有必要，聚焦核心需求。\u003c/p\u003e\n",
      "summary": "链接： 20260405 更新： 现在已经闭源了，至于原因在 当 AI 接管了「活儿」，我们该如何接管「工作」？ 中有说，但是 docker image 依然可用，下面是个示例 docker compose，暴露到 localhost 然后用 cloudflare tunnel 安全转出。 yaml services: cloudcode: image: ghcr.io/naiba/cloudco…",
      "date_published": "2026-02-20T01:43:17.328533Z",
      "date_modified": "2026-04-05T02:43:47.089724Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/bonds-app",
      "title": "Bonds 个人关系管理工具",
      "content_html": "\u003cp\u003e\u003cimg src=\"/upload/ec53ea6d-c6e2-caf0-9bef-37e928e426dc.png\" alt=\"Screenshot20260220at091658.png\" loading=\"lazy\" /\u003e\u003c/p\u003e\n\u003cp\u003e链接 \u003ca href=\"/r/go?url=aHR0cHM6Ly9naXRodWIuY29tL25haWJhL2JvbmRz\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ehttps://github.com/naiba/bonds\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e这个项目受 Monica (PHP) 启发，是我通过 AI 用 Go + React 重写的一个个人关系管理系统，可以管理你的工作、家人关系，记录他们的生日、纪念日等信息，还可以记录朋友之间的借还之类的事情，等等。这个重制版的一大亮点就是支持阴历。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"/upload/a4f24cb7-48d8-0b4b-5264-6a70808e65fe.png\" alt=\"Screenshot20260220at092357.png\" loading=\"lazy\" /\u003e\u003c/p\u003e\n\u003cp\u003eMonica 的开发进度非常缓慢，两个核心开发者已经几年不更新这个项目，这个项目基本上是死掉了。我一直想要继续维护它，虽然我其实没有太大的需求来使用这个，因为人和人之间的联系并没有这么密切，今年过年和大部分亲戚都没联系，即便是同龄人。\u003c/p\u003e\n\u003cp\u003e今年 AI Coding 突然就爆发，能力突然上了一个台阶，一个是我可能会用这个 PRM，另一个是我想测试下 AI 能力的边界，看下完全重写一个别人花了几年时间打造的产品能不能行。结果是完全可行。最近几天都在下任务-\u0026gt; 等待完成-\u0026gt; 下任务之间循环，边看视频边开发，但是看视频 + AI 跑测试电脑有点吃不消，所以我又开发了 \u003ca href=\"/cloudcode-app\"\u003eCloudCode—— 云端多实例 OpenCode 管理工具\u003c/a\u003e，把 AI 放在云端，释放本地电脑资源。\u003c/p\u003e\n\u003cp\u003e这两天就是等完成通知，打开网页部署下任务，继续玩。\u003c/p\u003e\n\u003cp\u003e等有时间了我会用一用，记录下家人生日，结婚纪念日什么的信息。\u003c/p\u003e\n",
      "summary": "链接 这个项目受 Monica PHP 启发，是我通过 AI 用 Go + React 重写的一个个人关系管理系统，可以管理你的工作、家人关系，记录他们的生日、纪念日等信息，还可以记录朋友之间的借还之类的事情，等等。这个重制版的一大亮点就是支持阴历。 Monica的开发进度非常缓慢，两个核心开发者已经几年不更新这个项目，这个项目基本上是死掉了。我一直想要继续维护它，虽然我其实没有太大的需求来使用这…",
      "date_published": "2026-02-20T01:30:09.654539Z",
      "date_modified": "2026-02-20T01:30:09.654539Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/solitudes-rss-subscriber-stat-and-theme-system",
      "title": "博客RSS订阅者跟踪/主题系统重构",
      "content_html": "\u003cp\u003e现在时间是 01:07，我刚刚提交了 Solitudes （本站博客引擎）的一个大重构，主要更新是重新设计了主题系统，捎带 vibe coding fork 了一个 astro 主题到 Solitudes，主要是利用上这个主题系统，还有 RSS 订阅者计数。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"/upload/a80acd08-de2c-9af0-16a5-8dfa0783926d.png\" alt=\"Screenshot20260126at212917.png\" loading=\"lazy\" /\u003e\u003c/p\u003e\n\u003cp\u003e主题系统设计的非常优雅，前后台、i18n、静态资源、模板文件、自定义配置。可以去 repo 里面看下。这个改动是比较大的，先是重构整个主题系统，然后 fork 新主题，最后做 RSS 订阅者计数，放在一年以前是很头疼的，单一个页面的细节也得调半天，现在直接 vibe coding 两天时间，边玩边指挥，就能搞这么大个改动，而且 Solitudes 的改动我根本没用一流模型，一流模型用在哪吒监控上了。\u003c/p\u003e\n\u003cp\u003e这短短两天时间做了好多事情，\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSolitudes\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e评论区用户信息输入昵称或邮箱自动加载\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e主题系统重构\u003c/strong\u003e GLM4.7\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003efork astro 主题\u003c/strong\u003e GLM4.7 + MiniMax m2.1 + Gemini 3 Flash\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRSS 订阅计数\u003c/strong\u003e GLM4.7 + MiniMax m2.1 + Gemini 3 Flash\u003c/li\u003e\n\u003cli\u003e小修小改 Gemini 3 Flash\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e哪吒监控\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e集成 TSDB 提供历史数据\u003c/strong\u003e Opus 4.5 thinking\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e我先用了 GLM 4.7，然后 MiniMax m2.1，然后一直用的是 Gemini 3 Flash。Opus 额度很少感觉只有 1 小时的额度，很快就用没了，就用在刀尖上了。这些都是蹭的免费额度 😂 GLM 和 Gemini Flash 基本上量大管够。\u003c/p\u003e\n\u003cp\u003e整体体验 Gemini 3 Flash \u0026gt; GLM 4.7 ≈ MiniMax m2.1，Opus 地表 no.1 不用说。\u003c/p\u003e\n\u003cp\u003e量大管够咋瓢来的呢，阿里 iFlow CLI 转 API 的 GLM + MiniMax 不限量供应，再加 5 个 antigravity 免费号。\u003c/p\u003e\n\u003cp\u003e平常自己维护的项目正在尝试用 OpenCode 做主力，正在深度体验。团队内还是以 Claude Code 为主。\u003c/p\u003e\n\u003cp\u003e只要模型达到一定智力就可以干活，并不一定要一流模型才能做事，对于能力比较低的模型可以搭配一些测试工具，使用 TDD 模式开发，已经够用。\u003c/p\u003e\n",
      "summary": "现在时间是 01:07，我刚刚提交了 Solitudes （本站博客引擎）的一个大重构，主要更新是重新设计了主题系统，捎带vibe coding fork 了一个 astro 主题到 Solitudes，主要是利用上这个主题系统，还有RSS订阅者计数。 主题系统设计的非常优雅，前后台、i18n、静态资源、模板文件、自定义配置。可以去 repo 里面看下。这个改动是比较大的，先是重构整个主题系统，然…",
      "date_published": "2026-01-25T17:26:26.535241Z",
      "date_modified": "2026-01-26T13:30:28.381243Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/blog-comment-language-auto-detection-and-email-read-tracking",
      "title": "博客评论语言自动检测及邮件阅读追踪",
      "content_html": "\u003cp\u003e放假就是闲的难受，刚好  Copilot 额度刷新了，Vibe Coding 下，舒服 ～\u003c/p\u003e\n\u003cp\u003e做了两项 Solitudes（本博客引擎）的优化，\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/r/go?url=aHR0cHM6Ly9naXRodWIuY29tL25haWJhL3NvbGl0dWRlcy9jb21taXQvNWY4ODEwYzBiNDc5NzEwMTVlYmIyZmI4MTE2ZjJiOWRkYjE5MDY3MA==\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"feat: 自动匹配语言发送邮件通知\"\u003e自动匹配语言发送邮件通知\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/r/go?url=aHR0cHM6Ly9naXRodWIuY29tL25haWJhL3NvbGl0dWRlcy9jb21taXQvZTlhMDhmY2YzZTIzMGVmOWQ0ZWVlMDFiNGZkZDM0YmFmOGUyMjllOQ==\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"feat: 邮件阅读追踪\"\u003e邮件阅读追踪\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e自动匹配语言我原本只是想着用 Go 的正则简单匹配下，结果 AI 发现还有 UA 数据，顺手就做了个 fallback。现在大家的邮件通知都会是中文的啦，感觉也会减少进入垃圾桶的概率。\u003c/p\u003e\n\u003cp\u003e至于邮件阅读追踪，这个功能其实是我前几年想做的一个东西，但是那时候起坑了，没啥意思。奶爸的评论的回复按钮左边的 icon 就是 obaby 有没有阅读奶爸这个评论的邮件通知的状态，鼠标移上去可以看到说明。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"/upload/54fa323a-02b5-2352-783a-7f343a853c35.png\" alt=\"Screenshot20260102at132516.png\" loading=\"lazy\" /\u003e\u003c/p\u003e\n\u003cp\u003e本质就是放个不可见的图片，只要图片一加载就相当于阅读了，但是有些服务商会代用户去请求，这样可能不准确。或者有人像我一样，默认不加载任何图片，也追踪不到。\u003c/p\u003e\n\u003cp\u003e所以 AI 又拿出经验来了，做了个 URL 跳转更新状态，如果点击按钮了按钮也会更新状态，哈哈，又是个 fallback。\u003c/p\u003e\n\u003cp\u003e这博文写完我突然想到评论 ID 前端都可以拿到，可以用来伪造阅读状态，需要进行一个映射用一个没有暴露的秘密发送通知，马上又优化了一下……\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/r/go?url=aHR0cHM6Ly9naXRodWIuY29tL25haWJhL3NvbGl0dWRlcy9jb21taXQvYTYzNjBlNjM3NjM0OGQ1YjhjMWJiZDFkNTU2MmEzYjkwZDg4NjA5MQ==\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"feat: 邮件追踪token映射\"\u003e邮件追踪 token 映射\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e有点完美主义……每次 Vibe Coding 都感觉很爽。\u003c/p\u003e\n",
      "summary": "放假就是闲的难受，刚好 Copilot 额度刷新了，Vibe Coding 下，舒服～ 做了两项 Solitudes（本博客引擎）的优化， 自动匹配语言发送邮件通知 邮件阅读追踪 自动匹配语言我原本只是想着用 Go 的正则简单匹配下，结果 AI 发现还有 UA 数据，顺手就做了个 fallback。现在大家的邮件通知都会是中文的啦，感觉也会减少进入垃圾桶的概率。 至于邮件阅读追踪，这个功能其实是我…",
      "date_published": "2026-01-02T05:28:42.278652Z",
      "date_modified": "2026-01-02T05:50:14.28393Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/having-fun-with-switch",
      "title": "玩转Switch，派对与运动",
      "content_html": "\u003cp\u003e给老婆买了 Switch 玩，其实我是更倾向于 PlayStation 或者攒个 Steam Station 的，但是我知道我买了肯定吃灰，一个是我没太多时间玩，另一个是我腻的很快，我喜欢几个人一起玩，不喜欢单机/RPG，所以最终选择了 Switch。\u003c/p\u003e\n\u003cp\u003e推荐几款感觉值得玩的游戏，总共也没买几个游戏。大部分时间还是吃灰，偶尔拿出来维护一下。\u003c/p\u003e\n\u003ch2 id=\"派对游戏\"\u003e派对游戏\u003ca id=\"vditorAnchor-派对游戏\" class=\"vditor-anchor\" href=\"#派对游戏\" aria-label=\"派对游戏\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e「马里奥赛车世界」这个是买机器时候绑定的，也没买方向盘，也挺好玩的，多人赛车游戏，我俩已经全通关了。跑出金牌感觉就没啥意思了，等家人派对时拿出来再玩玩也挺好的。\u003c/li\u003e\n\u003cli\u003e「大富翁 11」这个是我第二推荐的，这个是概率游戏，特别适合几个人打发时间玩，而且很便宜。\u003c/li\u003e\n\u003cli\u003e「Nintendo Switch™ Sports」有保龄球、网球、击剑、高尔夫等多种体感游戏，可以两人或多人 PK，又能有点锻炼又能玩，挺有意思。\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"其他\"\u003e其他\u003ca id=\"vditorAnchor-其他\" class=\"vditor-anchor\" href=\"#其他\" aria-label=\"其他\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e「双人成行」这个我俩也通关了，前面都挺好的，后面打怪有点累有点乏味。有几个关卡挺刺激的，整体推荐。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e有啥好玩的双人/多人游戏，分享一下？\u003c/p\u003e\n",
      "summary": "给老婆买了 Switch 玩，其实我是更倾向于 PlayStation 或者攒个 Steam Station 的，但是我知道我买了肯定吃灰，一个是我没太多时间玩，另一个是我腻的很快，我喜欢几个人一起玩，不喜欢单机/RPG，所以最终选择了 Switch。 推荐几款感觉值得玩的游戏，总共也没买几个游戏。大部分时间还是吃灰，偶尔拿出来维护一下。 1. 「马里奥赛车世界」这个是买机器时候绑定的，也没买方向…",
      "date_published": "2026-01-01T08:57:46.593789Z",
      "date_modified": "2026-01-01T08:58:46.352697Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/having-fun-with-android-tv",
      "title": "玩转安卓TV，无广告畅快观影",
      "content_html": "\u003cp\u003e上次买房后一直没买电视，这次买房终于是买了个电视。系统非常非常清爽，打开之后就几个自己安装的应用，没有任何推荐和广告，爱优腾一个没装，装了 \u003ccode\u003eBBLL\u003c/code\u003e、\u003ccode\u003eYouTube\u003c/code\u003e 和 \u003ccode\u003eyamby\u003c/code\u003e。现在看视频体验特别的好。没买电视时 hxd 给了我他的 emby 站点，我还没当回事，更新速度不如欧乐，也不如欧乐方便，直到买了电视我才知道差距，hxd 真香。\u003c/p\u003e\n\u003cp\u003e自带应用或推荐应用一个别装，自己找资源，比如 emby 分享。最次最次安装一下 TCL 开发的 \u003cstrong\u003eBrowserHere\u003c/strong\u003e，宇宙第一的安卓 TV 浏览器，兼容性非常好，可以在线看欧乐和 ikanbot。\u003c/p\u003e\n\u003cp\u003e如果要看哔哩哔哩，可以安装 BBLL v3.5，支持直播。我是看「七星山荒野求生」下载的，平常很少看，这个客户端很不错可以看直播，可惜老六荒野剪辑的和屎一样，内容又少又慢。\u003c/p\u003e\n\u003cp\u003e至于 YouTube，刚开始装上以后打开一直提示无法连接网络，我猜是系统根据 package id 做了拦截或者因为缺失谷歌框架的问题，具体我也没细致追究。你可以试试安装「YouTube for Fire TV」，这个我是正常用的，电视版本广告长一些……但也能看。\u003c/p\u003e\n\u003cp\u003e我现在用的是 \u003ccode\u003eyamby\u003c/code\u003e，\u003ccode\u003evidhub\u003c/code\u003e 也用过几天，后面要求付费就没用了，这两个体验都挺好，\u003ccode\u003evidhub\u003c/code\u003e 支持的源多一些，比如 \u003ccode\u003ealist\u003c/code\u003e 分享出来的 \u003ccode\u003ewebdev\u003c/code\u003e，还有一个网易 \u003ccode\u003e爆米花\u003c/code\u003e 我并没体验过，\u003ccode\u003evidhub\u003c/code\u003e 支持 emby + plex，爆米花和 yamby 应该不支持 plex，自己按需选择体验吧。\u003c/p\u003e\n\u003cp\u003e其他问题是播放 \u003ccode\u003e4k\u003c/code\u003e 视频可能会卡，我一般就直接改 \u003ccode\u003e1080p\u003c/code\u003e 看了，我近视，看不太出区别，后面可能会买个 Apple TV 提升观影体验，短期不会考虑买盒子。\u003c/p\u003e\n",
      "summary": "上次买房后一直没买电视，这次买房终于是买了个电视。系统非常非常清爽，打开之后就几个自己安装的应用，没有任何推荐和广告，爱优腾一个没装，装了BBLL、YouTube和yamby。现在看视频体验特别的好。没买电视时hxd给了我他的emby站点，我还没当回事，更新速度不如欧乐，也不如欧乐方便，直到买了电视我才知道差距，hxd真香。 自带应用或推荐应用一个别装，自己找资源，比如emby分享。最次最次安装一…",
      "date_published": "2026-01-01T08:43:55.160368Z",
      "date_modified": "2026-01-01T08:44:18.277206Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/having-fun-with-domains",
      "title": "玩转域名，如何选择和注册",
      "content_html": "\u003cp\u003e玩域名得好多年头了，从完全不懂域名用 \u003ca href=\"https://lifelonglearn.ing/blog-reconstruction-message/v1#0x0-WAP-%E8%87%AA%E5%8A%A9%E5%BB%BA%E7%AB%99\"\u003e\u003cstrong\u003e5211314***.***.cn\u003c/strong\u003e\u003c/a\u003e 这种垃圾，到啥比小白买 \u003ccode\u003ekupai.us\u003c/code\u003e 等「品牌」域名和十几个 \u003ccode\u003eLL.gy\u003c/code\u003e 幻想暴富，最后玩明白了到玩成本高点的优质域名，我一直在场，今年还注册了 2 个新域名。虽然我不再花大钱了，但偶尔会花些小钱注册个玩玩。\u003c/p\u003e\n\u003cp\u003e至于当作投资，算了吧，域名已经死了，米表死了一批又一批，玩米的朋友越来越少了。只推荐玩，花小钱办大事。\u003c/p\u003e\n\u003ch2 id=\"挑选域名\"\u003e挑选域名\u003ca id=\"vditorAnchor-挑选域名\" class=\"vditor-anchor\" href=\"#挑选域名\" aria-label=\"挑选域名\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e怎么挑选一个好的域名？我觉得要考虑两点，一是背后注册局的稳定性安全性，二是价格。\u003ccode\u003e.com\u003c/code\u003e，\u003ccode\u003e.net\u003c/code\u003e，\u003ccode\u003e.org\u003c/code\u003e 这种老的传统 \u003ccode\u003egtld\u003c/code\u003e 基本上能满足普通人的需求了，如果你想要的词比较热门可以退而求其次选择 \u003ccode\u003e.co\u003c/code\u003e、\u003ccode\u003e.io\u003c/code\u003e、\u003ccode\u003e.ai\u003c/code\u003e 这种比较热门的后缀，至于其他 \u003ccode\u003ecctld\u003c/code\u003e 自己决定。\u003c/p\u003e\n\u003cp\u003e作为一个普通人，第一个域名应该怎么选？\u003c/p\u003e\n\u003ch3 id=\"个人姓名\"\u003e个人姓名\u003ca id=\"vditorAnchor-个人姓名\" class=\"vditor-anchor\" href=\"#个人姓名\" aria-label=\"个人姓名\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003e比如王小明人生第一个域名可以这么选\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ccode\u003ewangxiaoming.com\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exiaomingwang.com\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003exiaomingw.com\u003c/code\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e不要小看自己的姓名域名，我身边被我安利注册域名的，个人姓名域名一般他们都留下来了，至于其它灵机一动注册的域名，大多过期丢掉了，不要搞带什么 \u003ccode\u003eceo\u003c/code\u003e、\u003ccode\u003eking\u003c/code\u003e 之类的沙雕域名。\u003c/p\u003e\n\u003ch3 id=\"长尾词\"\u003e长尾词\u003ca id=\"vditorAnchor-长尾词\" class=\"vditor-anchor\" href=\"#长尾词\" aria-label=\"长尾词\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003e我只说普通人通过注册能够拿到的，是长尾词。如果你想注册一个 \u003ccode\u003eqio.ng\u003c/code\u003e、或者 \u003ccode\u003equndao.com\u003c/code\u003e 这种域名，大概率也是想想了。\u003cbr /\u003e\n长尾词大都是自己灵光一现，也是自己的一部分投射，比如说我今年注册的 2 个域名，\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ccode\u003einfiniteprogress.org\u003c/code\u003e 这是因为我看了好多关于影视飓风的内容，并且看到他们官网上面的「无限进步」，感觉马上上来了，一顿研究确定了这个域名。\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enotthegoodguy,com\u003c/code\u003e 这是因为我随便逛博客友链的时候，逛了个友链的友链，叫做「绝非善类」，这名字起得好，感觉又来了，一顿问 AI 也确定了这个域名。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e这两类是有点价值，成本不高，普通人可以拿住的。别搞续费几千的域名，再好也是负债。\u003c/p\u003e\n\u003ch2 id=\"注册域名\"\u003e注册域名\u003ca id=\"vditorAnchor-注册域名\" class=\"vditor-anchor\" href=\"#注册域名\" aria-label=\"注册域名\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e等你选好了想要注册的时候，可以到 \u003ca href=\"/r/go?url=aHR0cHM6Ly90bGQtbGlzdC5jb20=\" target=\"_blank\" rel=\"noopener noreferrer\"\u003etld-list.com\u003c/a\u003e 或者雇佣了 8 位阿姨更新价格的陶老师的 \u003ca href=\"/r/go?url=aHR0cHM6Ly93d3cubmF6aHVtaS5jb20=\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e哪煮米\u003c/a\u003e 去找低价注册的地方。\u003cbr /\u003e\n排序的时候可以按照续费价格排序，不要贪图注册那点优惠，省的后面转来转去麻烦。\u003c/p\u003e\n\u003ch2 id=\"使用域名\"\u003e使用域名\u003ca id=\"vditorAnchor-使用域名\" class=\"vditor-anchor\" href=\"#使用域名\" aria-label=\"使用域名\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e可以做博客，可以做邮箱，推荐看一下我写的「\u003ca href=\"https://lifelonglearn.ing/domain-and-domain-email-security-guide\"\u003e域名 \u0026amp; 邮箱安全最终指南\u003c/a\u003e」，我是几年前买的 G Suite，现在已经改名 Workspace，也顺利更换了主域名。这年头写博客的人不多咯 ～\u003c/p\u003e\n",
      "summary": "玩域名得好多年头了，从完全不懂域名用 5211314\\\\\\.\\\\\\.cn 这种垃圾，到啥比小白买 kupai.us 等「品牌」域名和十几个 LL.gy 幻想暴富，最后玩明白了到玩成本高点的优质域名，我一直在场，今年还注册了2个新域名。虽然我不再花大钱了，但偶尔会花些小钱注册个玩玩。 至于当作投资，算了吧，域名已经死了，米表死了一批又一批，玩米的朋友越来越少了。只推荐玩，花小钱办大事。 怎么挑选一个…",
      "date_published": "2026-01-01T08:22:04.165069Z",
      "date_modified": "2026-01-02T16:32:47.517074Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/having-fun",
      "title": "玩儿",
      "content_html": "\u003cp\u003e工作第 10 个年头，折腾这么多年了，开始有自己生活了，对于兴趣现在是有点提不起兴趣了。比如今天看到 nametra.de 这个域名市场，有些感慨，江山代有才人出啊，前些年域名行情还可以的时候，什么米表，什么市场，大家都是比较关心的甚至百花齐放。但是因为那时候没有 AI 没有 Vibe Coding，只有少数人有话语权，现在年轻人不用花太多时间就可以拥有自己的域名市场。\u003c/p\u003e\n\u003cp\u003e搞个专栏发点现在还在玩的东西，看看有没有其他同路中老登。\u003c/p\u003e\n",
      "summary": "工作第10个年头，折腾这么多年了，开始有自己生活了，对于兴趣现在是有点提不起兴趣了。比如今天看到 nametra.de 这个域名市场，有些感慨，江山代有才人出啊，前些年域名行情还可以的时候，什么米表，什么市场，大家都是比较关心的甚至百花齐放。但是因为那时候没有 AI 没有 Vibe Coding，只有少数人有话语权，现在年轻人不用花太多时间就可以拥有自己的域名市场。 搞个专栏发点现在还在玩的东西，…",
      "date_published": "2026-01-01T07:46:50.989754Z",
      "date_modified": "2026-01-01T13:41:00.1444Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/blog-reconstruction-message",
      "title": "博客重建 · 开博寄语",
      "content_html": "\u003cp\u003e这里是奶爸的一些经历 ～ 本文最初写自 2020 年 7 月，2025 年进行调整并放到全局底部。\u003c/p\u003e\n\u003ch2 id=\"工作经历\"\u003e工作经历\u003ca id=\"vditorAnchor-工作经历\" class=\"vditor-anchor\" href=\"#工作经历\" aria-label=\"工作经历\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e先整理下工作项目经历看下有哪些值得去记录一下的，\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eTeveu 北京探视科技，16 年 8 月 - 17 年 4 月\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e在君正定制的小型安卓开发版，在上面做一些 C/S 的开发，视频录制与同步。\u003c/li\u003e\n\u003cli\u003e维护了一个企业网站（PHP），简易表单可提交邮箱。\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eM2IT 北京喵萌科技 ｜ 聚力向前（北京）科技有限公司，17 年 4 月 - 19 年 3 月\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e刚进公司维护的是公司的 PHP 后端，一个二次元社交 App\u003c/li\u003e\n\u003cli\u003e后面转型开始使用 Go，做了一个众包平台，内含 Excel 文件分发收集，任务管理，账单结算及 内部员工之间余额交易（OTC）的功能。\u003c/li\u003e\n\u003cli\u003e后面做了一些配套 App（React Native）、terminal 工具等。\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e县人民法院驻场外包，19 年 3 月-19 年 5 月\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e智慧法庭、办公系统、瘦终端 维护\u003c/li\u003e\n\u003cli\u003e庭审现场保障（给一个涉黑案件在刑事审判庭机房做了直播保障，记忆深刻）\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBitizen 北京空空科技，19 年 5 月 - 24 年 3 月 产品停摆\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eDeFi 1.0 19 年 5 月 - 20 年 2 月 多次重构，单体大型合约 到 分体大型合约。\u003c/li\u003e\n\u003cli\u003eDeFi 2.0 20 年 2 月 - 20 年 6 月 分体大型合约 到 数据逻辑分离及入口逻辑分离的可升级合约。后端也遇到了一些问题，前段沉淀了一些标准。\u003c/li\u003e\n\u003cli\u003eCrypto Wallet 20 年底 - 24 年 3 月\n\u003col\u003e\n\u003cli\u003e先是从 AlphaWallet 上面测试了 MPC 钱包可行性，21 年初开始招 iOS/Android 开发开始基于 AlphaWallet 做 MPC 钱包\u003c/li\u003e\n\u003cli\u003e21 年 11 月，我们看了一手 \u003ca href=\"/r/go?url=aHR0cHM6Ly93d3cucmF5d2VuZGVybGljaC5jb20vYm9va3MvZmx1dHRlci1hcHByZW50aWNl\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ehttps://www.raywenderlich.com/books/flutter-apprentice\u003c/a\u003e 由我打头使用 Flutter 全部重构\u003c/li\u003e\n\u003cli\u003e迄今为止我们已经做了 3 年，成为了支持 Bitcoin、Ethereum、ERC4337 的比较完善及\u003cdel\u003e领先\u003c/del\u003e（功能方面）的钱包\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n\u003cli\u003eTODO 耕耘在 BlockChain / AI\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e*\u003cem\u003e原本这个文章已经写了大半了，结果因为奶爸不小心按了 \u003ccode\u003ecommand\u003c/code\u003e + \u003ccode\u003eR\u003c/code\u003e 全部给冲掉了，然后奶爸痛定思痛，加了 刷新/关闭 页面时的弹窗提醒。—— from 2020\u003c/em\u003e\u003c/p\u003e\n\u003ch2 id=\"租住经历\"\u003e租住经历\u003ca id=\"vditorAnchor-租住经历\" class=\"vditor-anchor\" href=\"#租住经历\" aria-label=\"租住经历\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e2016 年\n\u003cul\u003e\n\u003cli\u003e6 月 昌平 平西王府街 三友公寓\u003c/li\u003e\n\u003cli\u003e8 月 昌平 宏福(修正)大厦对面 武夷公寓\u003c/li\u003e\n\u003cli\u003e11 月 昌平 生命科学园 恒鑫公寓 501\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e2017 年 11 月 - 2019 年 3 月底 海淀 三义庙社区 14 号楼 302\u003c/li\u003e\n\u003cli\u003e2019 年 3 月底 - 2019 年 4 月底 县里一公寓\u003c/li\u003e\n\u003cli\u003e2019 年 5 月 3 日 - 2020 年 8 月 26 日 海淀 三义庙社区 14 号楼 302\u003c/li\u003e\n\u003cli\u003e2020 年 8 月 - 至今 居家办公 😷\u003c/li\u003e\n\u003cli\u003e2023 年 4 月 买房\u003c/li\u003e\n\u003cli\u003e2025 年 1 月 亏 5w 卖房、第二次买房，3 月-5 月一直盯着装修累的不行。\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"博客历程\"\u003e博客历程\u003ca id=\"vditorAnchor-博客历程\" class=\"vditor-anchor\" href=\"#博客历程\" aria-label=\"博客历程\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003ch3 id=\"0x0-WAP-自助建站\"\u003e0x0 WAP 自助建站\u003ca id=\"vditorAnchor-0x0-WAP-自助建站\" class=\"vditor-anchor\" href=\"#0x0-WAP-自助建站\" aria-label=\"0x0-WAP-自助建站\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003e那个时候是初二初三，手里面只有淘换来的一个二手三星滑盖手机，和一个山寨机。塞班系统的三星手机是奶爸的建站主力，家里面也没有电脑（后面有了但是等待奶爸读大学，家里面才装了宽带），记得很清楚，人生第一个域名是 \u003ccode\u003e5211314***.***.cn\u003c/code\u003e ，such a GOOD domain name! 😢\u003c/p\u003e\n\u003cp\u003e当时大部分自助建站平台使用的是 柯林自助建站系统，大部分内容也都是 斯凯 mrp 和什么资源导航之类的。网站已经无迹可寻了，但是柯林还在，掌掌眼吧。\u003c/p\u003e\n\u003cimg src=\"/upload/1595147668222056932.png\" style=\"max-width: 300px\"\u003e\n\u003cp\u003e后面自己也买了域名，也搭建了一些 ASP、PHP 的站点，后面也没怎么深入研究。玩心重，小聪明，易满足。\u003c/p\u003e\n\u003ch3 id=\"0x1-Lofter-com\"\u003e0x1 Lofter.com\u003ca id=\"vditorAnchor-0x1-Lofter-com\" class=\"vditor-anchor\" href=\"#0x1-Lofter-com\" aria-label=\"0x1-Lofter-com\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cimg src=\"/upload/1595147952893003266.png\" style=\"max-width: 600px\"\u003e\n\u003cp\u003e奶爸在上大学的时候，是系里面的风云人物，计算机协会技术部部长。带领团队到济南参加比赛，拿了个三等奖回去。那时候涉猎还挺广泛，并且认为 C、Java、PHP、.Net、Android 会是未来技术的发展方向（2016 年）\u003c/p\u003e\n\u003cp\u003e考古链接：\u003ca href=\"/r/go?url=aHR0cHM6Ly9uaXV0aS5sb2Z0ZXIuY29tL25hdmlnYXRpb24=\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ehttps://niuti.lofter.com/navigation\u003c/a\u003e\u003c/p\u003e\n\u003ch3 id=\"0x2-Self-hosted-Typecho\"\u003e0x2 Self-hosted Typecho\u003ca id=\"vditorAnchor-0x2-Self-hosted-Typecho\" class=\"vditor-anchor\" href=\"#0x2-Self-hosted-Typecho\" aria-label=\"0x2-Self-hosted-Typecho\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e在大学的时候，niuti.org 这个域名后面搭建了 typecho 博客，用的腾讯云 1 元/月的学生扶持，那个时候网站开始需要备案了。图是没有了，静态资源文件好像没了。\u003cbr /\u003e\n考古链接：\u003ca href=\"/r/go?url=aHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTYwNDE0MDAxNzIxL2h0dHA6Ly93d3cubml1dGkub3JnLw==\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ehttps://web.archive.org/web/20160414001721/http://www.niuti.org/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e参加工作后，使用终身学习这个域名搭建了博客，还是 typecho，换过不少主题，也买过一个主题。工作后热衷于收藏域名，先后花了十几万买了很多域名，现在基本都砸手里成传家宝了。后面换成了自己开发的 Solitudes 博客引擎。\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"0x3-WordPress-Mundana\"\u003e0x3 WordPress Mundana\u003ca id=\"vditorAnchor-0x3-WordPress-Mundana\" class=\"vditor-anchor\" href=\"#0x3-WordPress-Mundana\" aria-label=\"0x3-WordPress-Mundana\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cimg src=\"/upload/1595149470893192141.png\" style=\"max-width: 500px\"\u003e\n\u003cp\u003e只在 2019 还是 2020 年用了短短几个月，这是个多用户的，因为注册了终身学习这个域名购买了 WowThemes 的 WordPress 主题，这是个多用户的准备请几个好友一起持续写作准备长期使用的，但是烂尾了，人的天性就是懒，长期写博客的人也没几个，我自己用样式也不好看，也不太喜欢 WordPress。没有给到我一种满足和成就感，还是换回了自己的博客引擎。\u003c/p\u003e\n\u003ch3 id=\"0x4-Solitudes\"\u003e0x4 Solitudes\u003ca id=\"vditorAnchor-0x4-Solitudes\" class=\"vditor-anchor\" href=\"#0x4-Solitudes\" aria-label=\"0x4-Solitudes\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003e终身学习经历了 \u003ccode\u003elifelonglearning.cc\u003c/code\u003e -\u0026gt; \u003ccode\u003elifelonglearni.ng\u003c/code\u003e -\u0026gt; \u003ccode\u003elifelonglearn.ing\u003c/code\u003e 域名的质量步步在提升，我也在不断进步。\u003c/p\u003e\n\u003cp\u003e欢迎使用我的 \u003ca href=\"/r/go?url=aHR0cHM6Ly9naXRodWIuY29tL25haWJhL3NvbGl0dWRlcw==\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e开源博客系统\u003c/a\u003e，2025 年 vibe coding redesign 了一下，整个 2025 感觉是一个飞跃，AI 编程在这一年里面突飞猛进，这个博客系统开发完 7 年了，现在优化后的样式看起来还能再战 7 年。\u003c/p\u003e\n",
      "summary": "这里是奶爸的一些经历～本文最初写自2020年7月，2025年进行调整并放到全局底部。 先整理下工作项目经历看下有哪些值得去记录一下的， Teveu 北京探视科技，16年8月 17年4月 1. 在君正定制的小型安卓开发版，在上面做一些 C/S 的开发，视频录制与同步。 2. 维护了一个企业网站（PHP），简易表单可提交邮箱。 M2IT 北京喵萌科技｜聚力向前（北京）科技有限公司，17年4月 19年3…",
      "date_published": "2026-01-01T03:39:56.176559Z",
      "date_modified": "2026-01-01T03:39:56.178125Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/202512250223",
      "title": "Vibe coding",
      "content_html": "\u003cp\u003e优化博客上头了，一点两点三点，时间就这样过去了，GitHub 的 Task 真的蛮舒服的，一边听相声一边 Vibe coding。\u003c/p\u003e\n",
      "summary": "优化博客上头了，一点两点三点，时间就这样过去了，GitHub 的 Task 真的蛮舒服的，一边听相声一边 Vibe coding。",
      "date_published": "2025-12-24T18:12:47.57961Z",
      "date_modified": "2025-12-25T13:31:18.239508Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/enterprise-smart-contract-management-practice-and-ai-talk",
      "title": "企业级智能合约管理实践 \u0026 AI 漫谈",
      "content_html": "\u003cp\u003e好久没写博客了，7 月份跟着装修完很累，又在上海呆了段时间，回来闲下来后发了个牢骚一直停到了现在，平时比较忙，除了干活就是陪媳妇看剧打游戏了，玩个手机都是奢侈，可以说是过上正常生活了，这才是正常的生活，忙忙碌碌，没啥时间。以前的时候漂泊在外打工，除了坐班工作，吃外卖，根本没啥事，闲的很，所以又搞开源又搞搞这搞搞那的，现在基本没什么时间关注自己的情绪。\u003c/p\u003e\n\u003cp\u003e我感觉在咱们这，不论什么行业不讲标准只讲良心……因为没什么规范可言。我这个房子装修时重新改了水，现在浴室里固定管子钉子全都生锈了。就算是恒洁的卫浴，装了三个钉子也生锈一个。厨房悍高的台盆还是奸商给我装的库存货搭配两个「纯铜阀门」的三无阀门。当时也没那精力研究和较真，太累了，什么不干坐工地一天都能把人急死。\u003c/p\u003e\n\u003cp\u003e好了，闲篇儿聊完了。先聊点正事最后聊聊 AI。\u003c/p\u003e\n\u003ch2 id=\"智能合约管理\"\u003e智能合约管理\u003ca id=\"vditorAnchor-智能合约管理\" class=\"vditor-anchor\" href=\"#智能合约管理\" aria-label=\"智能合约管理\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e简单来说就是要做可升级用多签钱包（MPC）管理，至于防黑天鹅（暂停、紧急提现）根据业务来看，一般来说是给非技术人员能够作为 backup 快速处理意外用的。\u003c/p\u003e\n\u003ch3 id=\"EVM\"\u003eEVM\u003ca id=\"vditorAnchor-EVM\" class=\"vditor-anchor\" href=\"#EVM\" aria-label=\"EVM\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003e一般采用 UUPS Upgradable 或者 DiamondCut 架构或者有些业务场景会用到 Beacon 架构，升级权限交由团队管理的多签钱包（MPC），这里坑比较少，市面上例子非常多了，相关文档开发工具也比较成熟，只提关键词吧。\u003c/p\u003e\n\u003ch4 id=\"Tron\"\u003eTron\u003ca id=\"vditorAnchor-Tron\" class=\"vditor-anchor\" href=\"#Tron\" aria-label=\"Tron\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h4\u003e\n\u003cp\u003e像 ZKsync 和 Tron 都是比较特殊的 EVM 链，为啥单单拿出 Tron 来说，因为 Tron 更加特殊一点 😂，他的 gas 模型比较特殊。如果你们准备赞助 transaction，就用一个公共的 deployer 部署你们的合约，方便统一进行赞助。\u003c/p\u003e\n\u003ch3 id=\"Solana\"\u003eSolana\u003ca id=\"vditorAnchor-Solana\" class=\"vditor-anchor\" href=\"#Solana\" aria-label=\"Solana\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eSolana 原生可升级，通过 BPFLoader 来执行升级，关键的方法就两个，一个 setAuthority，一个 upgrade，关键角色是 program 的 upgrade authority。这个 upgrade authority 是可以交给多签钱包管理的，前端构造一个升级交易就好了。\u003c/p\u003e\n\u003cp\u003e这里肯定不能这么简单，我要额外提一点就是自定义升级控制，比如说 30 天内是 A 可以控制升级，超过 30 天改为 B 可以控制升级该怎么做？答案是将 upgrade authority 交给 PDA，在 program 内部控制 PDA 调用升级，我用实操经验告诉你这是可行的，我就不手把手教你了，快十二点了我要睡觉了 😂，给你个小提示，可以在 \u003ccode\u003eAnchor.toml\u003c/code\u003e 里面定义创世数据，将 program 设置为可升级来编写测试用例进行测试。\u003c/p\u003e\n\u003ch3 id=\"Sui--move-\"\u003eSui (move)\u003ca id=\"vditorAnchor-Sui--move-\" class=\"vditor-anchor\" href=\"#Sui--move-\" aria-label=\"Sui--move-\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eSui 和 Aptos 算是将 move 魔改成了两个派系，Sui 的设计是非常好的，你写过他们两个平台的合约你就知道。Aptos 链的版本就比较混乱，像是农耕时代的产物。Sui 的链式调用和所有权都非常清晰，符合直觉，反观 Aptos 则是一团乱麻，如果 Sui 实现了忽略定义动态调用其他合约，它的开发体验一定不输 EVM 和 Solana。\u003c/p\u003e\n\u003cp\u003eSui 管理是有一个 UpgradeCap 的 object，在部署时会交给 deployer。同样你可以把这个 Cap 转给团队的多签。我在这里还是问你，怎么自定义升级控制，你可以看官网文档的 Upgrade Policy 部分。将 Cap 作为 shared object，通过你合约的方法吐出 upgrade ticket 进行升级，小提示是你可以额外加测试框架比如 jest 运行一个 local node 来测试升级，\u003ccode\u003esui move test\u003c/code\u003e 只测试升级外的业务。\u003c/p\u003e\n\u003ch3 id=\"Ton\"\u003eTon\u003ca id=\"vditorAnchor-Ton\" class=\"vditor-anchor\" href=\"#Ton\" aria-label=\"Ton\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eTon 这个链设计的太差劲，一个交易的多个消息可能在任意地方出错。还没真正做过合约，但是对他的交易构造和数据解析比较熟悉了，所以这里没什么指南了，只有一些心得。Ton 每个钱包都是合约，合约的实现是你自己选的甚至可以自定义，v3/v4/v5，第一笔交易需要 init，init 后你的使用其实就是调用你自己钱包合约的方法，不说了，没啥意思。\u003c/p\u003e\n\u003ch2 id=\"AI-漫谈\"\u003eAI 漫谈\u003ca id=\"vditorAnchor-AI-漫谈\" class=\"vditor-anchor\" href=\"#AI-漫谈\" aria-label=\"AI-漫谈\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e说起 AI 来我有点兴奋了，从 GitHub 给开源贡献者发 Copilot 开始我就在用 AI，因为之前大模型能力和 IDE 支持都不太行，也就一直在作为自动补全使用。慢慢大模型能力上来了，IDE 的花活更多了，事情就不一样了。我一直在用 Cursor，短暂的用过一个月 Claude Max Plan $100，Claude 是最舒服最牛逼的，Cursor 也不差。AI 写的又好又快，调调细节，来回几轮后就是很好的产出。\u003c/p\u003e\n\u003cp\u003e我曾经用一个下午时间通过 Claude 实现了一个 meme 发射平台包括合约、前端、简易后端（每个代币都是固定开头），你只要知道该怎么做作起来很快，现在完全看不到新牛马的未来，已经不是一行一行码字的时代了。\u003c/p\u003e\n",
      "summary": "好久没写博客了，7月份跟着装修完很累，又在上海呆了段时间，回来闲下来后发了个牢骚一直停到了现在，平时比较忙，除了干活就是陪媳妇看剧打游戏了，玩个手机都是奢侈，可以说是过上正常生活了，这才是正常的生活，忙忙碌碌，没啥时间。以前的时候漂泊在外打工，除了坐班工作，吃外卖，根本没啥事，闲的很，所以又搞开源又搞搞这搞搞那的，现在基本没什么时间关注自己的情绪。 我感觉在咱们这，不论什么行业不讲标准只讲良心………",
      "date_published": "2025-12-08T15:17:27.92584Z",
      "date_modified": "2025-12-08T15:49:58.937879Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/second-house-purchase",
      "title": "闲聊第二次买房",
      "content_html": "\u003cp\u003e也是没想到，我已经经历第二次买房了，还是第一次买的那种两层的联排。上上周末终于搬进了新家，从 1 月份买下来，到 3 月份过完年他们搬家清房，再经历几个月的装修。经过了半年时间才住进来，真的累，身体也累心也累，就算是搬进来两周了，也感觉没有休息过来。先重新刷了墙，然后做了点饰面，感觉不健康又花钱拆除，两份钱打水飘。在宜家选的家具，都是自己拼装，没有买安装服务，说明书还不错，就是太繁琐了，刨花板的破柜子质量也一般，经常会拧裂，搬来当天买了树新风的空气净化器带除甲醛的。\u003c/p\u003e\n\u003cp\u003e搬家和重新整理东西，太累了，真的是再也不想买房了。劝后来的小朋友，能租就租，千万别买，买也得找个 5 线城市买个联排，楼房真的太吵了，上下左右都是噪音源，别人不变精神病自己也要变神经了。这个房子 184 平，除去物业费，夏天电费估计一月 500，冬季取暖费 4700，家具电器折旧，房子折旧。买了房修缮房子就是自己的事情了，各种隐形成本很多，没有租房省心，租房最多损失些押金，搬进来前租了一年房只损失了 90 押金。\u003c/p\u003e\n\u003cp\u003e搬进来两周了，住着还算可以，这里平常安静得很，也是因为隔壁孩子都大了，没有小孩。现在办公环境很舒适，次卧现在作为我的办公室，有空调，平常就是开着空气净化器开着空调，因为有 WFH benefit，我就买了显示器和支架、买了 Magic Keyboard 和 Magic Mouse，因为第一份工作用的 iMac 所以我对 Magic Mouse 是比较熟悉的，也比较适应使用。\u003c/p\u003e\n\u003cp\u003e提到第一份工作又想起从前了，第一份工作在西二旗，后厂村那边的中关村领创空间，是个共享办公室，我和老板一人一个工位，中午一起去后面地震局食堂吃饭。待到后面他没再租了，他在沙河高教园金融街那边租了房子我就转去那边办公，办公环境是真差劲，中午得一块走两公里吃饭。再后面要降薪我就直接交接了下撤了，当时在他租的房子里录视频交接我的工作，那会 iMac 录的人声特别不错，播放出来老板也以为不是我的声音哈哈。\u003c/p\u003e\n\u003cp\u003e闲聊下 review 吧，年底或年中 review，感觉效果有限，对一些人是不公平的。假设你在年初做了些成果，帮了一些人。在年中时候这些东西就淡化了，成果可能已经变成平淡日常，帮了别人别人也都忘了。人只能记得别人近期对自己的帮助，在写 review 时可能不会记起来了。\u003c/p\u003e\n\u003cp\u003e最后说一下「终身学习」，这也是我的博客域名，我对她的理解是「永远接受学习，不需要见什么学什么，世界上的知识那么多，哪学的过来呀」。\u003c/p\u003e\n\u003cp\u003e5 月份线下见到很多人，输入了很多新东西，认识了老张，这里比较深了不是合同外人道。\u003c/p\u003e\n",
      "summary": "也是没想到，我已经经历第二次买房了，还是第一次买的那种两层的联排。上上周末终于搬进了新家，从1月份买下来，到3月份过完年他们搬家清房，再经历几个月的装修。经过了半年时间才住进来，真的累，身体也累心也累，就算是搬进来两周了，也感觉没有休息过来。先重新刷了墙，然后做了点饰面，感觉不健康又花钱拆除，两份钱打水飘。在宜家选的家具，都是自己拼装，没有买安装服务，说明书还不错，就是太繁琐了，刨花板的破柜子质量…",
      "date_published": "2025-07-17T15:20:07.02677Z",
      "date_modified": "2025-07-27T14:55:49.310235Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/solana-program-development",
      "title": "Solana 合约开发",
      "content_html": "\u003cp\u003e最近进行了大量 Solana 智能合约开发，积累了一些经验，分享给大家。\u003c/p\u003e\n\u003ch2 id=\"小提示-Tips\"\u003e小提示 Tips\u003ca id=\"vditorAnchor-小提示-Tips\" class=\"vditor-anchor\" href=\"#小提示-Tips\" aria-label=\"小提示-Tips\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003ch3 id=\"CPI-调用\"\u003eCPI 调用\u003ca id=\"vditorAnchor-CPI-调用\" class=\"vditor-anchor\" href=\"#CPI-调用\" aria-label=\"CPI-调用\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003e在进行 CPI 调用时可能会遇到 account infos 超出数量限制的问题，可以在 CPI 调用之前对 account infos 进行去重合并 AccountMeta 数据，instruction 的 accounts 还是传原始数量的 accounts，因为 CPI 调用的 keys 限制只针对于 account infos，去重后一般不会超限。\u003c/p\u003e\n\u003ch3 id=\"Out-of-memory\"\u003eOut of memory\u003ca id=\"vditorAnchor-Out-of-memory\" class=\"vditor-anchor\" href=\"#Out-of-memory\" aria-label=\"Out-of-memory\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eSolana VM 堆内存限制 32K，栈内存限制 4K。\u003c/p\u003e\n\u003cp\u003e当执行期间 program 报错 \u003ccode\u003eout of memory\u003c/code\u003e 一般是栈内存溢出，这种错误可以给你的 context 里面的 account 数据放到 box 里面讲内存转移到堆中，或者使用 anchor 0.31.0 开始有的 \u003ccode\u003eLazyAccount\u003c/code\u003e 来加载 account。\u003c/p\u003e\n\u003cp\u003e错误信息中含内存地址 \u003ccode\u003e0xfffff\u003c/code\u003e 之类的报错一般是堆内存溢出，这种错误只能重构合约，比如说你有个超大 account 需要加载，放到堆里也放不下，可以用 \u003ca href=\"/r/go?url=aHR0cHM6Ly93d3cuYW5jaG9yLWxhbmcuY29tL2RvY3MvZmVhdHVyZXMvemVyby1jb3B5\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ezero_copy\u003c/a\u003e 方案重构下。\u003c/p\u003e\n\u003cp\u003e可以着重注意用到 vec 的地方，可以确定长度的 vec 在初始化时就分配长度，避免 2 倍扩容。\u003c/p\u003e\n\u003ch3 id=\"PDA\"\u003ePDA\u003ca id=\"vditorAnchor-PDA\" class=\"vditor-anchor\" href=\"#PDA\" aria-label=\"PDA\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003ePDA 是十分灵活的，任何属于当前 program 的 PDA 都可以在 program 内作为 signer 进行 CPI 调用。这里有一个特殊的点就是假设你需要通过 SystemProgram 通过代码而不是 anchor 来创建和初始化账户，你可将 pda 作为 \u003ccode\u003enew_account\u003c/code\u003e 并作为 signer 调用 \u003ccode\u003eSystemProgram::CreateAccount\u003c/code\u003e，而不是必须使用 anchor 来创建 PDA。\u003c/p\u003e\n\u003ch2 id=\"安全检查-Security-Checklist\"\u003e安全检查 Security Checklist\u003ca id=\"vditorAnchor-安全检查-Security-Checklist\" class=\"vditor-anchor\" href=\"#安全检查-Security-Checklist\" aria-label=\"安全检查-Security-Checklist\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003ch3 id=\"realloc-陷阱\"\u003erealloc 陷阱\u003ca id=\"vditorAnchor-realloc-陷阱\" class=\"vditor-anchor\" href=\"#realloc-陷阱\" aria-label=\"realloc-陷阱\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003ePDA 账户每次增长的空间只能在 10240 内，我们在 \u003ccode\u003erealloc\u003c/code\u003e PDA 账户时可以从 10240 扩容到 20480，然后从 20480 扩容到 30720，这没关系，咱们的数据不会出现问题。但是不要忽略一点，如果账户被缩小呢？realloc 可以直接从 30720 降到 100，PDA 中储存的数据就会被回收，造成安全问题。所以在使用外部传入的 \u003ccode\u003erealloc::size\u003c/code\u003e 时\u003cstrong\u003e务必小心\u003c/strong\u003e。\u003c/p\u003e\n\u003ch3 id=\"bump-陷阱\"\u003ebump 陷阱\u003ca id=\"vditorAnchor-bump-陷阱\" class=\"vditor-anchor\" href=\"#bump-陷阱\" aria-label=\"bump-陷阱\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003e同样的 seeds 可以通过不同的 bump 创建出多个相同 seed 的账户，比如说 seed \u003ccode\u003eseed = [\u0026quot;nonce_used\u0026quot;, order_id, [args.bump]]\u003c/code\u003e 可以通过计算出多个 seed 相同但是 bump 不同的账户来，如果你的合约中用的是外部传入的 \u003cstrong\u003ebump\u003c/strong\u003e 会导致你的一些以来这个 account 的逻辑有安全风险。在使用外部传入 \u003ccode\u003ebump\u003c/code\u003e 时\u003cstrong\u003e务必小心\u003c/strong\u003e。尽量不要外部传入 bump，除了每次运行时计算还可以使用自己存到合约中的通过 \u003ccode\u003ePubkey::find_program_address\u003c/code\u003e 生成的 bump 来优化 gas。\u003c/p\u003e\n\u003ch3 id=\"writable-陷阱\"\u003ewritable 陷阱\u003ca id=\"vditorAnchor-writable-陷阱\" class=\"vditor-anchor\" href=\"#writable-陷阱\" aria-label=\"writable-陷阱\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003e即便你在合约里面没有将 \u003ccode\u003eaccount\u003c/code\u003e 标记为 \u003ccode\u003eaccount(mut)\u003c/code\u003e 但是在交易构造时传递的 \u003ccode\u003eAccountMeta\u003c/code\u003e 是可写的，且你的账户的 owner 是 signer，你的账户就会在执行时可写，所以如有必要检查你的 account 在 CPI 调用前后的变化。\u003c/p\u003e\n",
      "summary": "最近进行了大量 Solana 智能合约开发，积累了一些经验，分享给大家。 在进行 CPI 调用时可能会遇到 account infos 超出数量限制的问题，可以在 CPI 调用之前对 account infos 进行去重合并 AccountMeta 数据，instruction 的 accounts 还是传原始数量的 accounts，因为 CPI 调用的 keys 限制只针对于 account …",
      "date_published": "2025-03-25T02:48:47.706189Z",
      "date_modified": "2025-05-10T15:30:36.12099Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/amazing-growth-stories",
      "title": "惊事录：与优秀的人一同成长",
      "content_html": "\u003cp\u003e职场 9 年，自己也有些固步自封了，多少思维有点固化，这是人性使然。如果一个人能长期拿捏工作且思维没有一点僵化与偏见，真的很佩服。排斥没见过的东西，真的很可怕。希望我尽量保持空杯心态不断进步。\u003c/p\u003e\n\u003cp\u003e所有 case 按照时间顺序倒序排列，Think Growth。\u003c/p\u003e\n\u003ch2 id=\"100-不断进步\"\u003e100 不断进步\u003ca id=\"vditorAnchor-100-不断进步\" class=\"vditor-anchor\" href=\"#100-不断进步\" aria-label=\"100-不断进步\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e其他就是些小的技巧啦，比如说在写 SQL 时，注意幂等 \u003ccode\u003eupdate t set a = 1 where a != 1\u003c/code\u003e 这种的小细节。或者啥巧妙的 design pattern 的运用。\u003c/p\u003e\n\u003ch2 id=\"5-逆向思维\"\u003e5 逆向思维\u003ca id=\"vditorAnchor-5-逆向思维\" class=\"vditor-anchor\" href=\"#5-逆向思维\" aria-label=\"5-逆向思维\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e经常锻炼自己的逆向思维形成肌肉记忆，在做 Solana 合约时遇到 PDA 账户大小的问题，包括怎么一步步的创建一个 10mb 大小的 PDA 账户。在这个过程中我只是一步步解决了怎么逐步创建大账户的问题，遇到和解决了很多的限制。唯独没有逆向思考一下能否将一个大账户改为小账户，会发生什么。结果被审计查出来高危 bug。\u003c/p\u003e\n\u003cp\u003e因为在向前的过程中耗费了太多力气，忘记了如何向后。\u003c/p\u003e\n\u003ch2 id=\"4-追寻本质\"\u003e4 追寻本质\u003ca id=\"vditorAnchor-4-追寻本质\" class=\"vditor-anchor\" href=\"#4-追寻本质\" aria-label=\"4-追寻本质\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e在做 Solana 合约时，有个 cpi invoke accounts 数量限制，我已经黔驴技穷了，试过了所有想到的方法，已经放弃思考了。结果优秀的同事找了 cpi 调用相关的测试用例，拉下来 solana 源码，通过跑测试搞清楚了这个限制的作用范围。他给我一说我立马发现了问题，马上解决了这个技术上的卡点。\u003c/p\u003e\n\u003cp\u003e这个同事大大震惊了我，我在反思我为何会这样，我为啥没有想到去看测试用例，如果再了解具体的功能或者功能的上下限时可以看相关功能的测试代码。\u003c/p\u003e\n\u003ch3 id=\"4-1-基础知识\"\u003e4.1 基础知识\u003ca id=\"vditorAnchor-4-1-基础知识\" class=\"vditor-anchor\" href=\"#4-1-基础知识\" aria-label=\"4-1-基础知识\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003e关于 Solana 内存优化，Solana 执行时很容易超出内存限制，vec(rust)，slice(go) 在扩容时都有翻倍的策略，这点我就没注意到，还是被同事 点出来的……\u003c/p\u003e\n\u003ch2 id=\"3-信息获取\"\u003e3 信息获取\u003ca id=\"vditorAnchor-3-信息获取\" class=\"vditor-anchor\" href=\"#3-信息获取\" aria-label=\"3-信息获取\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e就信息获取这方面有两次被震惊\u003c/p\u003e\n\u003ch3 id=\"3-1-官方文档\"\u003e3.1 官方文档\u003ca id=\"vditorAnchor-3-1-官方文档\" class=\"vditor-anchor\" href=\"#3-1-官方文档\" aria-label=\"3-1-官方文档\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003e还是 Solana 需求，最近 Solana 需求做的多。有个需求需要验证链下签名，使用 Ed25519 或者 ECDSA 来做。然后我就开始 Google 「solana ed25519 verify」看了一些几个问答和一个 GitHub 的 demo。结果同事直接找到了官方的 Native Program Ed25519Program，震惊到了，比我找到有效信息的速度快多了。\u003c/p\u003e\n\u003cp\u003e后面我在复盘过程中感觉以后了解什么东西第一步先到官网，我通过 Solana 网站的 「Ask AI」中输入「ed25519 verify」第一篇就是同事发的文档链接。\u003c/p\u003e\n\u003ch3 id=\"3-2-单纯震惊\"\u003e3.2 单纯震惊\u003ca id=\"vditorAnchor-3-2-单纯震惊\" class=\"vditor-anchor\" href=\"#3-2-单纯震惊\" aria-label=\"3-2-单纯震惊\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003e我们准备在 Solana 合约中使用 ECDSA 验签，我还没开始研究。同事直接甩给我了解决方案 \u003ca href=\"/r/go?url=aHR0cHM6Ly9kb2NzLnJzL3NvbGFuYS1zZWNwMjU2azEtcmVjb3Zlcg==\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ehttps://docs.rs/solana-secp256k1-recover\u003c/a\u003e 我简单看了下回了句「OK，就是不知道这个库有没有经过审计」，结果同事说这好像是官方的，我点进去看了下 repo 确认是官方的。\u003c/p\u003e\n\u003cp\u003e单纯震惊于他并不没在 Solana 上花太多时间，却对这个不常见的技术点上手的如此快，很快找到了可靠的解决方案。\u003c/p\u003e\n\u003ch2 id=\"2-一知半解\"\u003e2 一知半解\u003ca id=\"vditorAnchor-2-一知半解\" class=\"vditor-anchor\" href=\"#2-一知半解\" aria-label=\"2-一知半解\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e有些文档真的是写的差劲，或者找起来费劲。比如说 Solana AddressLookupTable 相关的内容，我现在已经对 AddressLookupTable 十分了解了，但是在最开始开发 Solana 时，我对 AddressLookupTable 真是完全摸不着头脑，我也没有去操作去试，一味的翻来覆去的看文档，结果还是一知半解。\u003c/p\u003e\n\u003cp\u003e直到我自己创建了 AddressLookupTable、解析了 AddressLookupTable 的 data 和完全了解了 Version0 Transaction 结构之后我才完全了解这个东西。\u003c/p\u003e\n\u003cp\u003e有些同事是真的 \u003cstrong\u003e有点东西的\u003c/strong\u003e，我自己很多入门的知识也是从同事的代码、博客中学来的，他们的博文写的是真的好，直观又完整。\u003c/p\u003e\n\u003cp\u003e了解一些技术的原理一是看自己熟悉的语言的实现，二是要完全理解它，比如说了解交易结构，把交易打成 hex 字符串逐字节解析它的内容。\u003c/p\u003e\n\u003ch2 id=\"1-相信本质-谁也不轻信\"\u003e1 相信本质，谁也不轻信\u003ca id=\"vditorAnchor-1-相信本质-谁也不轻信\" class=\"vditor-anchor\" href=\"#1-相信本质-谁也不轻信\" aria-label=\"1-相信本质-谁也不轻信\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e接手了点 SpringBoot 的一点后端业务的一个小的接口，设计一个 DB 表创建记录，记录用户条款已读状态。因为我之前一直做 Go、PHP 没有 Spring 框架的 ORM 的使用经验，不知道它背后会做到什么程度。还跟同事确认了过一些锁、唯一索引问题。结果出现了一个用户一个条款存在多条记录的问题，最后我背的锅。我其实从原理上就感觉这个同事说的有问题，这么做可能会出问题，但是当时由于相信他没有坚持去确认……\u003c/p\u003e\n\u003cp\u003e结果后面出了这个问题被吊起来打。\u003c/p\u003e\n\u003ch2 id=\"0-再合上游我是狗\"\u003e0 再合上游我是狗\u003ca id=\"vditorAnchor-0-再合上游我是狗\" class=\"vditor-anchor\" href=\"#0-再合上游我是狗\" aria-label=\"0-再合上游我是狗\"\u003e\u003csvg viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/h2\u003e\n\u003cp\u003e这是我加入团队不久第一次被坑，刚加入团队在做一些前端的事情，前端 mono repo 的 master 分支经常 force push，导致我的分支在不断 rebase，写三天代码 rebase 两天，经过两次这种事之后我只通过无冲突 pull request merge 后拉 master 代码，尽量避免开发过程中拉 master 新代码。\u003c/p\u003e\n",
      "summary": "职场 9 年，自己也有些固步自封了，多少思维有点固化，这是人性使然。如果一个人能长期拿捏工作且思维没有一点僵化与偏见，真的很佩服。排斥没见过的东西，真的很可怕。希望我尽量保持空杯心态不断进步。 所有 case 按照时间顺序倒序排列，Think Growth。 其他就是些小的技巧啦，比如说在写 SQL 时，注意幂等 update t set a = 1 where a = 1 这种的小细节。或者啥巧…",
      "date_published": "2025-03-19T16:21:20.511968Z",
      "date_modified": "2025-05-10T15:29:25.720137Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/summary-of-2024",
      "title": "2024 年终总结",
      "content_html": "\u003cp\u003e2024 年的年终总结终于来了，大年初三。根据惯例和发小深谈一下，二十九回家上坟那天着急去找他聊天喝两杯茶然后就要走了他改天再到我家找我，发小刚从这里离开，原本约的昨天，昨天有事来了半小时匆忙走了，又改约的今天，他家族联系还比较密切事情比较多。今天晚上过来的，还带了个西瓜，去年到家里也是带了东西。他的博客有一整年没更新了，还挺可惜，现在他有在聊的对象，今年也拿了年终奖，没喝上酒原本还准备罚他三杯。今年也是发生了好多事情，我想一下怎么捋一捋。\u003c/p\u003e\n\u003cp\u003e年初，记得是上个春节后老大说公司有点变化，项目准备停掉了。然后陆陆续续准备项目进入维护状态，准备面试。现在之前的公司已经解散了，项目也停掉了，我也开启了新的职业生涯，还在 crypto 行业，很庆幸能在这个行业深耕。之前只是在 EVM 链和 BTC 上面耕耘，这一年里对 Solana、Ton 也有了比较深的了解，SUI 也有了些许了解。在自己 \u003ca href=\"/the-end-of-wandering\"\u003e小房子\u003c/a\u003e 里过着简单的生活。\u003c/p\u003e\n\u003cp\u003e到年中 6 月份时因为噪音问题在对峙时被邻居从旁冲过来打了一拳，后面边工作边跟进这个事情，我太阳穴那里也肿了 2 周。消肿之后我就找中介把房子火速卖掉了，带着家具家电。我想的是近期不会再买房了，因为一般高层楼房太吵，和之前一样的联排也怕又很吵，我就想近几年一直租房，等过几年再看下自己发展。然后租了一年房子住着，过了整整 4 个月，10 月份派出所那边终于把 \u003ca href=\"/assault-by-neighbor-legal-battle-house-sale\"\u003e案件\u003c/a\u003e 处理完了，中间来来回回跑过多次派出所，基本上每星期都要打次电话督促处理，最终把他送进去 3 天，我也松了口气。\u003c/p\u003e\n\u003cp\u003e国庆\u003cstrong\u003e去了趟河南\u003c/strong\u003e，人生第一次在「胡麻地」买了个猫山王。去了「只有河南」，剧场也很不错，里面大剧场也可以看了粮仓那个剧，圆形剧场我以为是荧幕结果是人在巷道里面表演的，效果真不错。前面麦地的超远距离投影也很牛逼，就是晚上散场不好打车，有拼车就赶紧上别纠结。\u003c/p\u003e\n\u003cp\u003e回家后还是消不了气，我就开始准备诉讼，找家里亲戚请教，弄了份资料去立案了，法院那边也不顺利，如果不是家里亲戚打招呼都不直接让你在线缴费，实际上他们随便操作下你就能在线缴费，但是就选择更麻烦的方式。也是等了 1 个月，紧接着\u003cstrong\u003e去了西安\u003c/strong\u003e，穿了汉服去了长安街，去了回民街，城墙早市，吃了好多东西。回来都 12 月了才开庭，结果 \u003ca href=\"/sue-my-neighbor\"\u003e胜诉\u003c/a\u003e 拿到赔偿。这下是真释怀了，前后派出所 + 法院折腾了 6 个月我也累了。\u003c/p\u003e\n\u003cp\u003e接着就是准备结婚和订团去泰国，结婚的事情真是太多了，丈母娘那边一直要求买房，我就是不想买，没满意的房子，差点都聊崩了。订宴会厅、婚纱照、准备礼盒、订烟酒水、订婚车、安排朋友、通知亲戚、送礼、彩排、布置婚房、安排座位。跟丈母娘周旋，让丈母娘满意，结一次婚扒层皮。\u003c/p\u003e\n\u003cp\u003e期间我的开源项目 \u003ca href=\"/nezha-v1-alpha\"\u003e哪吒监控进入 v1.0 并捐赠给了社区\u003c/a\u003e 转出了我的个人账户，7k star 还是舍不得的，但是咱就是这么洒脱，一点不墨迹转给组织了。\u003c/p\u003e\n\u003cp\u003e接下来我 \u003cstrong\u003e又买房了\u003c/strong\u003e，说来也巧，结婚前 2 周突然看到一个边户联排，面积也挺大 184 平之前那个是 129 平，马上联系中介去看了下，立马谈价就定下来了，结婚前 1 周火速办完手续过户了，这下丈母娘家啥毛病挑不出来了。关于这个房子后面额外再做分享。结婚前天晚上我是真烦透了，直接撂挑子让家里人去走婚车路线布置婚房和处理一些习俗的东西了，我跟远道来的朋友吃饭唱歌去了。第二天 5 点多起来到丈母娘家，接亲然后到宴会厅办仪式拍照，百十个人安排座位也是大事情，不提前计划好到时候都麻爪。\u003c/p\u003e\n\u003cp\u003e结婚第二天马上飞去泰国，泰国时间凌晨 3 点到的曼谷，睡了几个小时后开始逛，我们相当于提前一天到自由行，逛了周边的商场和夜市，多亏对象有想法，在小红书上面找了找附近玩的吃的地方，我是懒的不行，吃了个米其林鱼粥很不错。第二天开始就集结开始跟团了，时间短任务重还是跟团方便些，我之前来过一次清迈但是也没怎么坐过公共交通，也没信心自由行能安排好就直接报了个团。跟团曼谷看了郑王庙、大皇宫又大巴去了芭提雅邮轮表演、住泳池酒店、成人秀、泰拳表演 播求有到擂台露面打招呼。后面就去了山体大金佛，然后去了个靶场打了 110 发，打了 4 种枪，打的胳膊都被枪托打青了。在 21 航站楼又吃了俩米其林一个很普通另一个很咸，后面几天有很多购物行程，虽然不强迫但是多少也花钱。加上吃喝、玩飞伞潜水的项目，带了几千基本都花光了，算上团费比预想的花的多。\u003c/p\u003e\n\u003cp\u003e回来之后就准备过年了，过年这几天是我工作以来感觉最放松的一年。家人一起打麻将打到 3 点，也没什么工作的事情需要考虑，之前过年总会想着工作的事，总会想着来年怎么办，总感觉有些事情没了结，今年玩这么疯好像内心有个结打开了，通透了。\u003c/p\u003e\n\u003cp\u003e有些亲友会偶尔情绪不稳定，深夜 EMO 睡不着觉，或者胡思乱想，我会开导专注的做事，找一个需要做或想做的事，自己的工作或爱好，一旦把事做好，有想要不断精进的事，有知道自己不足的地方，就会专注在那里。自然而然找到自我屏蔽掉一些身外的事物。我有自己想做的事，对自己有标准，对什么传统习俗的和其他人的看法之类的都不太关注。\u003c/p\u003e\n\u003cp\u003e明年要找人做硬装软装了，给明年留四个大字吧：把事做好。\u003c/p\u003e\n",
      "summary": "2024 年的年终总结终于来了，大年初三。根据惯例和发小深谈一下，二十九回家上坟那天着急去找他聊天喝两杯茶然后就要走了他改天再到我家找我，发小刚从这里离开，原本约的昨天，昨天有事来了半小时匆忙走了，又改约的今天，他家族联系还比较密切事情比较多。今天晚上过来的，还带了个西瓜，去年到家里也是带了东西。他的博客有一整年没更新了，还挺可惜，现在他有在聊的对象，今年也拿了年终奖，没喝上酒原本还准备罚他三杯。…",
      "date_published": "2025-01-31T13:53:19.252554Z",
      "date_modified": "2025-05-02T03:14:36.334855Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/awesome-mingyue",
      "title": "自惭形秽",
      "content_html": "\u003cp\u003e看到这个博主（\u003cstrong\u003e明月已经不困了\u003c/strong\u003e）是在某 tube 的某事录频道，一个片段，就感觉她的\u003cstrong\u003e思考很有深度\u003c/strong\u003e，不是一般人，又在信息流看到他在平台开账号了，直接关注一波，结果真是大开眼界，宝藏博主，思考有深度，\u003cstrong\u003e知识面比较广\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e今天给 nezha 加 oauth2 绑定功能，完了随便翻翻视频看到第一个推荐是这个视频，进去看了下，真牛逼 👍 \u003cstrong\u003e财务自由\u003c/strong\u003e了开始做视频。还是在一个行业的，我自惭形秽。看了那么多书，我不如她。多多学习。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/watch?v=y_-Zuau9IOs\"\u003ehttps://www.youtube.com/watch?v=y_-Zuau9IOs\u003c/a\u003e\u003c/p\u003e\n",
      "summary": "看到这个博主（明月已经不困了）是在某tube的某事录频道，一个片段，就感觉她的思考很有深度，不是一般人，又在信息流看到他在平台开账号了，直接关注一波，结果真是大开眼界，宝藏博主，思考有深度，知识面比较广。 今天给 nezha 加 oauth2 绑定功能，完了随便翻翻视频看到第一个推荐是这个视频，进去看了下，真牛逼 👍 财务自由了开始做视频。还是在一个行业的，我自惭形秽。看了那么多书，我不如她。多多…",
      "date_published": "2024-12-28T16:39:28.088676Z",
      "date_modified": "2024-12-28T16:43:33.922348Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/sue-my-neighbor",
      "title": "胜诉 · 还是起诉了",
      "content_html": "\u003cp\u003e还是之前房子那个事情，虽然用了四个月把他送进去了但是我也打了三天消炎针，受了三天罪。实在是忍不了，最后把他起诉了，起诉时什么信息都没有只有姓名和住址。民事诉讼法规定只要提供的信息足以使对方与他人相区别就能立案，实际操作中没有身份证号是没发立案的。然后我又回到派出所作为被侵害人去要的对方的行政处罚决定书副本，才拿到对方身份证号立案。\u003c/p\u003e\n\u003cp\u003e起诉时需要写诉状，可以用微信公众号在线立案，有模板。\u003c/p\u003e\n\u003cp\u003e建议大家遇到类似事情，一定要做好准备记录下必要信息。后面报案审核后先进入调节流程，虽然我选的不接受调解。调解时因为没有对方手机号只是走了下流程，调解员说你这个没有手机号没法调解等着立案吧，等快到调解结束期时才通知开庭，法官助理通知到那写了个申请书申请法院到派出所调取案件相关的记录。这个过程不需要自己去调取。\u003c/p\u003e\n\u003cp\u003e开庭前需要打印相关证据，做证据目录。一二三四五列出来，每个证据想要证明什么，注意证据的三性，真实性、合法性和关联性。你当庭质证时也可以根据这三性质证。\u003c/p\u003e\n\u003cp\u003e当然我最终也没走到庭审流程，今天是「开庭/调解」，听法官的话，拿钱调解了，拿了医药费对方承担诉讼费。原本想体验一下这个体制，体验下完整流程，但是嫌麻烦没坚持住。对方态度挺好，道歉了。调解完一起在法院门口聊了会天，抽了支烟。感觉他还是挺真诚的。\u003c/p\u003e\n\u003cp\u003e事情算是全部结束了，调解协议双方就此事停止追究，放弃诉讼。折腾这么久，松了口气，不知道啥感觉。\u003c/p\u003e\n",
      "summary": "还是之前房子那个事情，虽然用了四个月把他送进去了但是我也打了三天消炎针，受了三天罪。实在是忍不了，最后把他起诉了，起诉时什么信息都没有只有姓名和住址。民事诉讼法规定只要提供的信息足以使对方与他人相区别就能立案，实际操作中没有身份证号是没发立案的。然后我又回到派出所作为被侵害人去要的对方的行政处罚决定书副本，才拿到对方身份证号立案。 起诉时需要写诉状，可以用微信公众号在线立案，有模板。 建议大家遇到…",
      "date_published": "2024-12-25T14:20:06.445836Z",
      "date_modified": "2024-12-25T14:23:36.05997Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    },
    {
      "id": "",
      "url": "https://lifelonglearn.ing/ocbc-close-account-withdraw-paypal-tips",
      "title": "OCBC 关户提取资金及注册美区 PayPal 的妙招",
      "content_html": "\u003cp\u003eOCBC 关户是近期经历的一个大无语事件，账户和卡在收到邮件那一刻起就不能入金了，一点准备都没有，还说几天后才限制入金，实际上收到邮件已经毙了。SGD 还好，还能直接转出，在 GSA 里面还有刚好价值 98 SGD 的 USD，没法 convert 到 SGD 转出，也没法再转入了。\u003c/p\u003e\n\u003cp\u003e但是如果你申请过 360 debit card，还有一个妙招，可以绑定这个卡到 Apple Pay 或从网站上消费，比如我续费了两个贵点的域名就花掉了。SGD 也直接转出了，以后跟 OCBC 就没关联了。不过有些买了定期理财把 OCBC 当稳定账户用的兄弟就遭殃了，现在处理起来有点麻烦。我当时也想冲的，但是最后忘记因为啥没冲了，可能是金额也可能是没看懂他们的说明，也可能是太麻烦，反正是因此躲过了一劫。\u003c/p\u003e\n\u003cp\u003e另外一件事就是拥有了美区 PayPal，一般来说美区 PayPal 是很难申请的，因为我一直都信用良好规范使用，注册 Oracle 也都是一把过，所以我开始是想直接试一下，注销了国区账户到美区重新注册，因为 GV 收不到验证码直接用 —+86 和身份证一把梭注册下来。结果是想得太简单了，ID 验证后给我送回了国区，我直接注销再想办法。\u003c/p\u003e\n\u003cp\u003e经过一些检索发现很多地方都提到在给公益网站捐赠时，付款的登录表单那里注册成功几率会高一些。于是我抱着试试看的心态也去 donate，第一次注册失败后没注意点击直接付款就捐出去了，只好又捐赠一次。一次 1  USD，结果真的神了，第二次注册时用 GV 也成功收到了验证码。\u003c/p\u003e\n\u003cp\u003e然后等被要求提交 passport，上传之后扫了脸现在账户还在（自 12 月 15 日存活到现在），也没其他强制提示。我准备用来给 Oracle 付款，续费域名之类的，不会收款，隔段时间找自己喜欢的开源项目或公益服务捐个几刀。\u003c/p\u003e\n",
      "summary": "OCBC 关户是近期经历的一个大无语事件，账户和卡在收到邮件那一刻起就不能入金了，一点准备都没有，还说几天后才限制入金，实际上收到邮件已经毙了。SGD 还好，还能直接转出，在 GSA 里面还有刚好价值 98 SGD 的 USD，没法 convert 到 SGD 转出，也没法再转入了。 但是如果你申请过 360 debit card，还有一个妙招，可以绑定这个卡到 Apple Pay 或从网站上消费…",
      "date_published": "2024-12-17T15:40:07.757699Z",
      "date_modified": "2024-12-17T15:41:40.275923Z",
      "author": {
        "name": "奶爸"
      },
      "authors": [
        {
          "name": "奶爸"
        }
      ]
    }
  ]
}