feat(art): replace all 72 posts' artwork with the v2 pipeline
Deploy / build (push) Successful in 17s
Deploy / build (push) Successful in 17s
Every post now carries one unique local-ComfyUI/Ideogram 4 base frame, composited into EN + ZH share cards, a banner and list thumbs. - the shipped prompts_catalog held only 21 distinct metaphors for 72 posts (16 shared one visual), so all 72 were rewritten as unique object+state metaphors and 10 frames re-rolled after OCR found pseudo-text rendered at legible size - render_from_art.mjs emits JPEG by default (558 KB PNG -> 84 KB mozjpeg q85); the ZH 1200x630 card did not exist before this batch - 288 frontmatter fields migrated; the 144 v1 PNGs are gone - PostList's thumb helper keys off the base slug (a ZH card is zh-<slug>.jpg while the thumb is <slug>-800.webp, which 404'd the whole ZH listing) - [...slug].astro's <picture> regex accepts .jpg - the repo now carries the art inputs (metaphors.json, captions/<slug>.json, refreshed prompts_catalog.json) so a frame is reproducible from git alone
This commit is contained in:
1 parent
72a9a2af6f
commit
327d516ed9
802 files changed
+1289
-519
No files matched your search
@@ -5,8 +5,8 @@ pubDate: 2025-05-06
|
||||
updatedDate: 2026-10-16
|
||||
category: notes
|
||||
tags: ["email", "dns", "mailcow", "smtp", "deliverability"]
|
||||
ogImage: /og/adding-a-domain-to-someone-elses-mail-server.png
|
||||
banner: /banners/adding-a-domain-to-someone-elses-mail-server.png
|
||||
ogImage: /og/zh-adding-a-domain-to-someone-elses-mail-server.jpg
|
||||
banner: /banners/adding-a-domain-to-someone-elses-mail-server.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2025-06-11
|
||||
updatedDate: 2026-09-29
|
||||
category: engineering
|
||||
tags: ["i18n", "nginx", "vue", "javascript", "self-hosting"]
|
||||
ogImage: "/og/adding-english-mode-to-a-chinese-only-web-app.png"
|
||||
banner: "/banners/adding-english-mode-to-a-chinese-only-web-app.png"
|
||||
ogImage: "/og/zh-adding-english-mode-to-a-chinese-only-web-app.jpg"
|
||||
banner: "/banners/adding-english-mode-to-a-chinese-only-web-app.jpg"
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "用 fal.ai FLUX.1 Kontext 把家具产品照合成到风格化房
|
||||
pubDate: 2026-09-11
|
||||
category: case-studies
|
||||
tags: [fal-ai, flux, ai-image, javascript, canvas, ecommerce]
|
||||
ogImage: /og/ai-furniture-compositing-with-flux-kontext.png
|
||||
banner: /banners/ai-furniture-compositing-with-flux-kontext.png
|
||||
ogImage: /og/zh-ai-furniture-compositing-with-flux-kontext.jpg
|
||||
banner: /banners/ai-furniture-compositing-with-flux-kontext.jpg
|
||||
---
|
||||
|
||||
一位家具客户带着一个每个小电商卖家最终都会撞上的问题来找我:他们的产品图都是**孤立的产品照**——一张白底桌子、一张白底椅子——但顾客不会从一片白茫茫的虚无里买家具,他们买的是*房间*。给每个产品、每种室内风格都拍一次实体棚拍,对一个人的生意来说根本不可能。
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-09-20
|
||||
updatedDate: 2026-10-16
|
||||
category: devops
|
||||
tags: ["authentik", "css", "self-hosting", "debugging", "browser"]
|
||||
ogImage: /og/authentik-css-greater-than-bug.png
|
||||
banner: /banners/authentik-css-greater-than-bug.png
|
||||
ogImage: /og/zh-authentik-css-greater-than-bug.jpg
|
||||
banner: /banners/authentik-css-greater-than-bug.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-08-12
|
||||
updatedDate: 2026-09-29
|
||||
category: devops
|
||||
tags: ["authentik", "forward-auth", "cloudflare", "nginx", "docker", "self-hosting"]
|
||||
ogImage: /og/authentik-forward-auth-gate-wasnt-live.png
|
||||
banner: /banners/authentik-forward-auth-gate-wasnt-live.png
|
||||
ogImage: /og/zh-authentik-forward-auth-gate-wasnt-live.jpg
|
||||
banner: /banners/authentik-forward-auth-gate-wasnt-live.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "一年份的 authentik 大版本升级踩坑记录:存储挂载
|
||||
pubDate: 2026-09-09
|
||||
category: devops
|
||||
tags: [authentik, sso, docker, portainer, self-hosting, oidc, upgrade]
|
||||
ogImage: /og/authentik-major-upgrade-gotchas.png
|
||||
banner: /banners/authentik-major-upgrade-gotchas.png
|
||||
ogImage: /og/zh-authentik-major-upgrade-gotchas.jpg
|
||||
banner: /banners/authentik-major-upgrade-gotchas.jpg
|
||||
---
|
||||
|
||||
我把 authentik 当作自托管体系前面的单点登录闸门——邮箱、仪表盘、Synology
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "CyberPanel v2 砍掉了有文档的 JSON API,只留下 Angular
|
||||
pubDate: 2026-09-09
|
||||
category: devops
|
||||
tags: [cyberpanel, api, reverse-engineering, automation, django, self-hosting, curl]
|
||||
ogImage: /og/automating-cyberpanel-without-the-ui.png
|
||||
banner: /banners/automating-cyberpanel-without-the-ui.png
|
||||
ogImage: /og/zh-automating-cyberpanel-without-the-ui.jpg
|
||||
banner: /banners/automating-cyberpanel-without-the-ui.jpg
|
||||
---
|
||||
|
||||
我在家庭实验里的一台 Ubuntu 虚拟机里跑着 CyberPanel 2.4.4.1,用来托管几个小站,
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "对比 2026 年最好的 AI 视频生成器——免费与付费
|
||||
pubDate: 2026-09-11
|
||||
category: ai
|
||||
tags: [ai-video, video-generation, ltx, open-weights, pricing, veo]
|
||||
ogImage: /og/best-ai-video-generators-2026.png
|
||||
banner: /banners/best-ai-video-generators-2026.png
|
||||
ogImage: /og/zh-best-ai-video-generators-2026.jpg
|
||||
banner: /banners/best-ai-video-generators-2026.jpg
|
||||
---
|
||||
|
||||
2026 年,你究竟该用哪个 AI 视频生成器?其中又有多少是真免费的?
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-10-14
|
||||
updatedDate: 2026-10-16
|
||||
category: tutorials
|
||||
tags: ["ffmpeg", "hevc", "qsv", "transcoding", "video"]
|
||||
ogImage: /og/calibrating-intel-quick-sync-hevc-quality.png
|
||||
banner: /banners/calibrating-intel-quick-sync-hevc-quality.png
|
||||
ogImage: /og/zh-calibrating-intel-quick-sync-hevc-quality.jpg
|
||||
banner: /banners/calibrating-intel-quick-sync-hevc-quality.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2024-12-10
|
||||
updatedDate: 2026-09-29
|
||||
category: web3
|
||||
tags: [solidity, chainlink, vrf, foundry, hardhat, blockchain]
|
||||
ogImage: /og/chainlink-vrf-v2-lottery-contract.png
|
||||
banner: /banners/chainlink-vrf-v2-lottery-contract.png
|
||||
ogImage: /og/zh-chainlink-vrf-v2-lottery-contract.jpg
|
||||
banner: /banners/chainlink-vrf-v2-lottery-contract.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "NAS 上的容器不停「意外停止」,而 Docker 报的是 ex
|
||||
pubDate: 2026-10-16
|
||||
category: devops
|
||||
tags: ["docker", "oom", "traefik", "synology", "crawlers"]
|
||||
ogImage: /og/docker-reported-exit-0-the-oom-killer-disagreed.png
|
||||
banner: /banners/docker-reported-exit-0-the-oom-killer-disagreed.png
|
||||
ogImage: /og/zh-docker-reported-exit-0-the-oom-killer-disagreed.jpg
|
||||
banner: /banners/docker-reported-exit-0-the-oom-killer-disagreed.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "在真实文件上对 HEVC 编码器做的实测对比:NVENC cq2
|
||||
pubDate: 2026-10-08
|
||||
category: tutorials
|
||||
tags: [ffmpeg, hevc, x265, nvenc, video]
|
||||
ogImage: /og/does-hevc-actually-shrink-your-files.png
|
||||
banner: /banners/does-hevc-actually-shrink-your-files.png
|
||||
ogImage: /og/zh-does-hevc-actually-shrink-your-files.jpg
|
||||
banner: /banners/does-hevc-actually-shrink-your-files.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2025-01-22
|
||||
updatedDate: 2026-10-16
|
||||
category: engineering
|
||||
tags: ["pdf", "fonts", "mpdf", "typography", "php"]
|
||||
ogImage: /og/embedding-fonts-so-a-pdf-looks-the-same-everywhere.png
|
||||
banner: /banners/embedding-fonts-so-a-pdf-looks-the-same-everywhere.png
|
||||
ogImage: /og/zh-embedding-fonts-so-a-pdf-looks-the-same-everywhere.jpg
|
||||
banner: /banners/embedding-fonts-so-a-pdf-looks-the-same-everywhere.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "同一个 HEVC 文件,在 VLC、Chrome 和 iPad 上(离线)
|
||||
pubDate: 2026-10-08
|
||||
category: devops
|
||||
tags: [ffmpeg, nvdec, hevc, transcoding, video]
|
||||
ogImage: /og/every-player-stuttered-the-file-was-fine.png
|
||||
banner: /banners/every-player-stuttered-the-file-was-fine.png
|
||||
ogImage: /og/zh-every-player-stuttered-the-file-was-fine.jpg
|
||||
banner: /banners/every-player-stuttered-the-file-was-fine.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "AI 五步学习路线(基础、提示词、RAG、Agent、微调
|
||||
pubDate: 2026-10-13
|
||||
category: ai
|
||||
tags: ["llm", "rag", "agents", "self-hosting", "whisper", "mem0"]
|
||||
ogImage: /og/five-step-ai-roadmap-what-i-actually-run.png
|
||||
banner: /banners/five-step-ai-roadmap-what-i-actually-run.png
|
||||
ogImage: /og/zh-five-step-ai-roadmap-what-i-actually-run.jpg
|
||||
banner: /banners/five-step-ai-roadmap-what-i-actually-run.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2024-10-08
|
||||
updatedDate: 2026-09-29
|
||||
category: web3
|
||||
tags: [solidity, foundry, erc721, nft, svg, base64, onchain]
|
||||
ogImage: /og/fully-on-chain-svg-nfts.png
|
||||
banner: /banners/fully-on-chain-svg-nfts.png
|
||||
ogImage: /og/zh-fully-on-chain-svg-nfts.jpg
|
||||
banner: /banners/fully-on-chain-svg-nfts.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2025-12-10
|
||||
updatedDate: 2026-09-09
|
||||
category: devops
|
||||
tags: [tor, docker, security, self-hosting, networking]
|
||||
ogImage: /og/hardening-a-tor-onion-service.png
|
||||
banner: /banners/hardening-a-tor-onion-service.png
|
||||
ogImage: /og/zh-hardening-a-tor-onion-service.jpg
|
||||
banner: /banners/hardening-a-tor-onion-service.jpg
|
||||
---
|
||||
|
||||
我对暗网产生了好奇。不是集市那一面,而是无聊的那一半:人们像注册商和云控制台出现之前那样自托管——跑自己维护的软件,用一个自己掌控的地址就能访问。
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2024-09-24
|
||||
updatedDate: 2026-09-05
|
||||
category: notes
|
||||
tags: [intro]
|
||||
ogImage: /og/hello-world.png
|
||||
banner: /banners/hello-world.png
|
||||
ogImage: /og/zh-hello-world.jpg
|
||||
banner: /banners/hello-world.jpg
|
||||
---
|
||||
|
||||
欢迎。这里写下我构建与学习的东西——主要是工程、DevOps 和自托管,中间也会
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "一个全天候解答顾客问题、并在 Telegram 和 WhatsApp
|
||||
pubDate: 2026-09-06
|
||||
category: case-studies
|
||||
tags: [telegram, docker, cloudflare, litellm, typescript, ai]
|
||||
ogImage: /og/how-i-built-the-digikedai-telegram-bot.png
|
||||
banner: /banners/how-i-built-the-digikedai-telegram-bot.png
|
||||
ogImage: /og/zh-how-i-built-the-digikedai-telegram-bot.jpg
|
||||
banner: /banners/how-i-built-the-digikedai-telegram-bot.jpg
|
||||
---
|
||||
|
||||
Digi Kedai 销售数字产品——在线课程、电子书、模板——每一单都会带来一连串同样的顾客问题:*「这门课有免费试看吗?」「我怎么拿到账号?」「我该买哪个套餐?」*。对一个人的生意来说,人工回复根本忙不过来。于是我打造了一个 AI 客服机器人,全天候解答这些问题,甚至能在无人介入的情况下自动发放免费试用账号。
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "这篇文章完整拆解了这个网站背后的构建与部署管
|
||||
pubDate: 2026-09-04
|
||||
category: case-studies
|
||||
tags: [astro, gitea, ci-cd, self-hosting, docker, cloudflare]
|
||||
ogImage: /og/how-i-host-this-blog.png
|
||||
banner: /banners/how-i-host-this-blog.png
|
||||
ogImage: /og/zh-how-i-host-this-blog.jpg
|
||||
banner: /banners/how-i-host-this-blog.jpg
|
||||
---
|
||||
|
||||
这个博客本身,就是我用来说明「我到底会做什么」的一个项目。下面是完整的
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "自己写词、调风格提示词,用 Suno AI 做出七首原创
|
||||
pubDate: 2026-09-11
|
||||
category: case-studies
|
||||
tags: [suno, ai-music, music, lyrics, prompting, ai]
|
||||
ogImage: /og/how-i-made-my-own-songs-with-suno-ai.png
|
||||
banner: /banners/how-i-made-my-own-songs-with-suno-ai.png
|
||||
ogImage: /og/zh-how-i-made-my-own-songs-with-suno-ai.jpg
|
||||
banner: /banners/how-i-made-my-own-songs-with-suno-ai.jpg
|
||||
---
|
||||
|
||||
我做自己的歌。不是靠弹奏乐器——而是写歌词、打磨风格提示词,让 Suno AI
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2025-11-12
|
||||
updatedDate: 2026-09-09
|
||||
category: case-studies
|
||||
tags: [ai-orchestration, subagents, due-diligence, hosting, devops]
|
||||
ogImage: /og/how-i-vetted-20-vps-providers-with-parallel-subagents.png
|
||||
banner: /banners/how-i-vetted-20-vps-providers-with-parallel-subagents.png
|
||||
ogImage: /og/zh-how-i-vetted-20-vps-providers-with-parallel-subagents.jpg
|
||||
banner: /banners/how-i-vetted-20-vps-providers-with-parallel-subagents.jpg
|
||||
---
|
||||
|
||||
## 为什么这很重要
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2025-11-26
|
||||
updatedDate: 2026-09-09
|
||||
category: tutorials
|
||||
tags: [hosting, vps, due-diligence, whois, devops]
|
||||
ogImage: /og/how-to-verify-a-hosting-provider-before-you-buy.png
|
||||
banner: /banners/how-to-verify-a-hosting-provider-before-you-buy.png
|
||||
ogImage: /og/zh-how-to-verify-a-hosting-provider-before-you-buy.jpg
|
||||
banner: /banners/how-to-verify-a-hosting-provider-before-you-buy.jpg
|
||||
---
|
||||
|
||||
每家主机服务商的首页都是一串承诺:_「自 2005 年起运营」_、_「保证在线率」_、
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2025-07-08
|
||||
updatedDate: 2026-09-29
|
||||
category: ai
|
||||
tags: [ai-agent, shopee, automation, human-in-the-loop, ecommerce, cron]
|
||||
ogImage: /og/i-let-an-agent-manage-my-shopee-vouchers.png
|
||||
banner: /banners/i-let-an-agent-manage-my-shopee-vouchers.png
|
||||
ogImage: /og/zh-i-let-an-agent-manage-my-shopee-vouchers.jpg
|
||||
banner: /banners/i-let-an-agent-manage-my-shopee-vouchers.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "网络挂载盘对我的转换流水线撒的三种谎:一次 40
|
||||
pubDate: 2026-10-08
|
||||
category: devops
|
||||
tags: [storage, smb, verification, ffmpeg, python]
|
||||
ogImage: /og/it-reported-success-nothing-had-changed.png
|
||||
banner: /banners/it-reported-success-nothing-had-changed.png
|
||||
ogImage: /og/zh-it-reported-success-nothing-had-changed.jpg
|
||||
banner: /banners/it-reported-success-nothing-had-changed.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "在 REST + JPA 的读-改-写流程里,两个编辑同时保存
|
||||
pubDate: 2026-08-19
|
||||
category: engineering
|
||||
tags: [java, spring, jpa, hibernate, rest, testing]
|
||||
ogImage: /og/jpa-version-field-lost-update.png
|
||||
banner: /banners/jpa-version-field-lost-update.png
|
||||
ogImage: /og/zh-jpa-version-field-lost-update.jpg
|
||||
banner: /banners/jpa-version-field-lost-update.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "Loop engineering 是 2026 年对「设计让 agent 自己反复跑
|
||||
pubDate: 2026-10-01
|
||||
category: case-studies
|
||||
tags: ["loop-engineering", "ai-agents", "cron", "self-hosting", "automation", "monitoring"]
|
||||
ogImage: "/og/loop-engineering-without-a-coding-agent.png"
|
||||
banner: "/banners/loop-engineering-without-a-coding-agent.png"
|
||||
ogImage: "/og/zh-loop-engineering-without-a-coding-agent.jpg"
|
||||
banner: "/banners/loop-engineering-without-a-coding-agent.jpg"
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "我把一个 17,000 行的 CodeIgniter 4 应用从 Windows IIS 搬
|
||||
pubDate: 2026-09-27
|
||||
category: engineering
|
||||
tags: [codeigniter, php, openspeedway, cyberpanel, iis, migration, litespeed, linux]
|
||||
ogImage: /og/migrating-codeigniter-iis-to-openlitespeed.png
|
||||
banner: /banners/migrating-codeigniter-iis-to-openlitespeed.png
|
||||
ogImage: /og/zh-migrating-codeigniter-iis-to-openlitespeed.jpg
|
||||
banner: /banners/migrating-codeigniter-iis-to-openlitespeed.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-10-15
|
||||
updatedDate: 2026-10-16
|
||||
category: notes
|
||||
tags: ["rclone", "backup", "google-drive", "oauth", "restic"]
|
||||
ogImage: /og/my-backup-was-using-someone-elses-api-quota.png
|
||||
banner: /banners/my-backup-was-using-someone-elses-api-quota.png
|
||||
ogImage: /og/zh-my-backup-was-using-someone-elses-api-quota.jpg
|
||||
banner: /banners/my-backup-was-using-someone-elses-api-quota.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "我的自建 n8n 从 1.x 升级到 2.40.1,一次性暴露出七
|
||||
pubDate: 2026-09-18
|
||||
category: devops
|
||||
tags: [n8n, docker, upgrade, self-hosting, debugging, automation]
|
||||
ogImage: /og/n8n-v1-to-v2-upgrade-gotchas.png
|
||||
banner: /banners/n8n-v1-to-v2-upgrade-gotchas.png
|
||||
ogImage: /og/zh-n8n-v1-to-v2-upgrade-gotchas.jpg
|
||||
banner: /banners/n8n-v1-to-v2-upgrade-gotchas.jpg
|
||||
---
|
||||
|
||||
n8n 是我整个自建技术栈的自动化中枢——它负责文件交付权限、数据库备份,还有一套阅读应用依赖的语音合成 API。它一直停留在 `1.123.x` 版本线上快一年了,默默干活,没出过什么问题。
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "NocoDB 的 OIDC 环境变量是真的,启动时也会校验,
|
||||
pubDate: 2026-09-29
|
||||
category: notes
|
||||
tags: ["nocodb", "sso", "oidc", "self-hosting", "licensing", "docker"]
|
||||
ogImage: /og/nocodb-sso-is-a-licensed-feature.png
|
||||
banner: /banners/nocodb-sso-is-a-licensed-feature.png
|
||||
ogImage: /og/zh-nocodb-sso-is-a-licensed-feature.jpg
|
||||
banner: /banners/nocodb-sso-is-a-licensed-feature.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "埋点必须公开,仪表盘绝不能公开。我用 authentik
|
||||
pubDate: 2026-09-30
|
||||
category: devops
|
||||
tags: ["umami", "authentik", "sso", "nginx", "docker", "privacy"]
|
||||
ogImage: "/og/one-hostname-public-tracker-sso-dashboard.png"
|
||||
banner: "/banners/one-hostname-public-tracker-sso-dashboard.png"
|
||||
ogImage: "/og/zh-one-hostname-public-tracker-sso-dashboard.jpg"
|
||||
banner: "/banners/one-hostname-public-tracker-sso-dashboard.jpg"
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-07-29
|
||||
updatedDate: 2026-09-29
|
||||
category: case-studies
|
||||
tags: [prometheus, grafana, unraid, synology, dsm, cadvisor, monitoring, homelab]
|
||||
ogImage: /og/one-prometheus-for-unraid-synology-and-a-vps.png
|
||||
banner: /banners/one-prometheus-for-unraid-synology-and-a-vps.png
|
||||
ogImage: /og/zh-one-prometheus-for-unraid-synology-and-a-vps.jpg
|
||||
banner: /banners/one-prometheus-for-unraid-synology-and-a-vps.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-01-07
|
||||
updatedDate: 2026-09-13
|
||||
category: devops
|
||||
tags: [passbolt, docker, gpg, smtp, reverse-proxy, portainer]
|
||||
ogImage: /og/passbolt-hang-three-failure-modes.png
|
||||
banner: /banners/passbolt-hang-three-failure-modes.png
|
||||
ogImage: /og/zh-passbolt-hang-three-failure-modes.jpg
|
||||
banner: /banners/passbolt-hang-three-failure-modes.jpg
|
||||
---
|
||||
|
||||
我在 Synology NAS 上用 Docker 跑 Passbolt——一个开源的团队密码管理器,前面
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "MySQL Workbench 26.7.0 能连上 MySQL 8.4,却在 MariaDB 上报
|
||||
pubDate: 2026-09-19
|
||||
category: devops
|
||||
tags: [mysql, mariadb, workbench, debugging, electron, mysql-sh, cyberpanel, self-hosting]
|
||||
ogImage: /og/patching-workbench-26-for-mariadb.png
|
||||
banner: /banners/patching-workbench-26-for-mariadb.png
|
||||
ogImage: /og/zh-patching-workbench-26-for-mariadb.jpg
|
||||
banner: /banners/patching-workbench-26-for-mariadb.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2025-06-24
|
||||
updatedDate: 2026-10-06
|
||||
category: devops
|
||||
tags: ["nginx", "docker", "self-hosting", "seo", "branding"]
|
||||
ogImage: "/og/putting-a-front-door-on-an-app-you-cant-modify.png"
|
||||
banner: "/banners/putting-a-front-door-on-an-app-you-cant-modify.png"
|
||||
ogImage: "/og/zh-putting-a-front-door-on-an-app-you-cant-modify.jpg"
|
||||
banner: "/banners/putting-a-front-door-on-an-app-you-cant-modify.jpg"
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "把 NocoDB 直接指向另一台机器上的 MySQL/MariaDB,一
|
||||
pubDate: 2026-09-29
|
||||
category: devops
|
||||
tags: ["nocodb", "mysql", "mariadb", "docker", "networking", "dashboard"]
|
||||
ogImage: /og/read-only-nocodb-dashboard-for-a-remote-database.png
|
||||
banner: /banners/read-only-nocodb-dashboard-for-a-remote-database.png
|
||||
ogImage: /og/zh-read-only-nocodb-dashboard-for-a-remote-database.jpg
|
||||
banner: /banners/read-only-nocodb-dashboard-for-a-remote-database.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2025-10-01
|
||||
updatedDate: 2026-09-26
|
||||
category: notes
|
||||
tags: [docker, openapi, api, documentation, debugging, reverse-engineering]
|
||||
ogImage: /og/reading-a-containers-own-api-docs.png
|
||||
banner: /banners/reading-a-containers-own-api-docs.png
|
||||
ogImage: /og/zh-reading-a-containers-own-api-docs.jpg
|
||||
banner: /banners/reading-a-containers-own-api-docs.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "我把付费的 RDPGuard 7.8.7 换成了开源的 IPBan 4.1.0,
|
||||
pubDate: 2026-09-19
|
||||
category: devops
|
||||
tags: [windows, security, rdp, ipban, rdpguard, brute-force, firewall, self-hosting]
|
||||
ogImage: /og/replacing-rdpguard-with-ipban.png
|
||||
banner: /banners/replacing-rdpguard-with-ipban.png
|
||||
ogImage: /og/zh-replacing-rdpguard-with-ipban.jpg
|
||||
banner: /banners/replacing-rdpguard-with-ipban.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "一个人、三台主机、78 个 compose stack 里的 162 个容
|
||||
pubDate: 2026-10-06
|
||||
category: case-studies
|
||||
tags: [docker, traefik, monitoring, infrastructure, devops]
|
||||
ogImage: /og/running-production-infrastructure-solo.png
|
||||
banner: /banners/running-production-infrastructure-solo.png
|
||||
ogImage: /og/zh-running-production-infrastructure-solo.jpg
|
||||
banner: /banners/running-production-infrastructure-solo.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "一个阅读应用需要 TTS,而云服务免费版的 token 十
|
||||
pubDate: 2026-09-18
|
||||
category: ai
|
||||
tags: [n8n, tts, azure, google-cloud, docker, automation, sidecar]
|
||||
ogImage: /og/running-tts-as-a-service-with-token-sidecars.png
|
||||
banner: /banners/running-tts-as-a-service-with-token-sidecars.png
|
||||
ogImage: /og/zh-running-tts-as-a-service-with-token-sidecars.jpg
|
||||
banner: /banners/running-tts-as-a-service-with-token-sidecars.jpg
|
||||
---
|
||||
|
||||
我自建了一个电子书阅读服务器。它有个「朗读」功能,内置的引擎能用但很机械。所以我把它接到了真正的神经网络语音上——Azure Speech 和 Google Cloud TTS——通过我的 n8n 实例。
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "为一位做二手手机生意的客户:爬取有反爬墙的电
|
||||
pubDate: 2026-09-13
|
||||
category: engineering
|
||||
tags: ["scraping", "cdp", "headless-chrome", "anti-bot", "shopee", "python"]
|
||||
ogImage: "/og/scraping-bot-walled-marketplace-warm-browser-session.png"
|
||||
banner: "/banners/scraping-bot-walled-marketplace-warm-browser-session.png"
|
||||
ogImage: "/og/zh-scraping-bot-walled-marketplace-warm-browser-session.jpg"
|
||||
banner: "/banners/scraping-bot-walled-marketplace-warm-browser-session.jpg"
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "我如何用五个工作流搭出一套权限系统,自动授予
|
||||
pubDate: 2026-09-18
|
||||
category: case-studies
|
||||
tags: [n8n, nocodb, alist, access-control, docker, automation, digital-goods]
|
||||
ogImage: /og/self-healing-digital-goods-entitlements.png
|
||||
banner: /banners/self-healing-digital-goods-entitlements.png
|
||||
ogImage: /og/zh-self-healing-digital-goods-entitlements.jpg
|
||||
banner: /banners/self-healing-digital-goods-entitlements.jpg
|
||||
---
|
||||
|
||||
我卖数字产品——文件、美术素材、授权资源——并通过一个自建的文件门户交付。真正的难题从来不是存储,而是**授权**:确保客户在购买时拿到恰好他们买下的目录,拿到恰好他们付费的时长,并且在停止付费时访问权限真的被收回。
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "我用一台带 GPU 的电脑自建了语音转文字 API。Window
|
||||
pubDate: 2026-09-19
|
||||
category: case-studies
|
||||
tags: [whisper, cuda, stt, n8n, nginx, self-hosting, ai]
|
||||
ogImage: /og/self-hosted-speech-to-text-api.png
|
||||
banner: /banners/self-hosted-speech-to-text-api.png
|
||||
ogImage: /og/zh-self-hosted-speech-to-text-api.jpg
|
||||
banner: /banners/self-hosted-speech-to-text-api.jpg
|
||||
---
|
||||
|
||||
打字的办公效率里面,它是最慢的一环。一般人打字速度约每分钟 40 个字,但
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "一套私有、自托管的 AI 助手记忆层——mem0 API + Lit
|
||||
pubDate: 2026-09-16
|
||||
category: case-studies
|
||||
tags: [mem0, docker, postgres, pgvector, litellm, ai, sharing]
|
||||
ogImage: /og/self-hosting-mem0-memory-stack.png
|
||||
banner: /banners/self-hosting-mem0-memory-stack.png
|
||||
ogImage: /og/zh-self-hosting-mem0-memory-stack.jpg
|
||||
banner: /banners/self-hosting-mem0-memory-stack.jpg
|
||||
---
|
||||
|
||||
一个每次对话后都忘光一切的 AI 助手,就是一个每轮都要你重新自我介绍的工具。我的 AI 助手(就是驱动这个博客工作流的那个)曾经每场会话都从零开始——直到我给它加了一层**记忆**:一套自托管的 [mem0](https://mem0.ai) 栈,负责存储它学到的事实、按语义检索、并跨会话存活。
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "从单个 HTML 文件到一个真正上线的 WordPress 插件:f
|
||||
pubDate: 2026-09-18
|
||||
category: case-studies
|
||||
tags: [wordpress, php, fal-ai, docker, ai-image, javascript]
|
||||
ogImage: /og/shipping-an-ai-photo-editor-as-a-wordpress-plugin.png
|
||||
banner: /banners/shipping-an-ai-photo-editor-as-a-wordpress-plugin.png
|
||||
ogImage: /og/zh-shipping-an-ai-photo-editor-as-a-wordpress-plugin.jpg
|
||||
banner: /banners/shipping-an-ai-photo-editor-as-a-wordpress-plugin.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-04-14
|
||||
updatedDate: 2026-09-29
|
||||
category: notes
|
||||
tags: [smart, smartctl, unraid, monitoring, bash, disks, homelab]
|
||||
ogImage: /og/smartctl-exit-code-32-skips-the-disks-that-matter.png
|
||||
banner: /banners/smartctl-exit-code-32-skips-the-disks-that-matter.png
|
||||
ogImage: /og/zh-smartctl-exit-code-32-skips-the-disks-that-matter.jpg
|
||||
banner: /banners/smartctl-exit-code-32-skips-the-disks-that-matter.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-10-14
|
||||
updatedDate: 2026-10-16
|
||||
category: devops
|
||||
tags: ["synology", "btrfs", "snapshots", "storage", "nas"]
|
||||
ogImage: /og/space-reclamation-wasnt-stuck-it-was-waiting.png
|
||||
banner: /banners/space-reclamation-wasnt-stuck-it-was-waiting.png
|
||||
ogImage: /og/zh-space-reclamation-wasnt-stuck-it-was-waiting.jpg
|
||||
banner: /banners/space-reclamation-wasnt-stuck-it-was-waiting.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "我有一个定时任务连续失败 29 次,原因是我在一
|
||||
pubDate: 2026-10-01
|
||||
category: notes
|
||||
tags: ["loop-engineering", "cron", "ai-agents", "automation"]
|
||||
ogImage: "/og/stop-writing-agent-prompts-for-deterministic-work.png"
|
||||
banner: "/banners/stop-writing-agent-prompts-for-deterministic-work.png"
|
||||
ogImage: "/og/zh-stop-writing-agent-prompts-for-deterministic-work.jpg"
|
||||
banner: "/banners/stop-writing-agent-prompts-for-deterministic-work.jpg"
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-02-18
|
||||
updatedDate: 2026-09-11
|
||||
category: case-studies
|
||||
tags: [hermes, git, gitea, ai-agents, devops, sync]
|
||||
ogImage: /og/syncing-a-self-improving-ai-agent-across-machines.png
|
||||
banner: /banners/syncing-a-self-improving-ai-agent-across-machines.png
|
||||
ogImage: /og/zh-syncing-a-self-improving-ai-agent-across-machines.jpg
|
||||
banner: /banners/syncing-a-self-improving-ai-agent-across-machines.jpg
|
||||
---
|
||||
|
||||
我的 agent 会学习。每当我带它走一遍不平凡的工作流程——如何发布到 Gitea、如何排查一个时好时坏的 Docker 容器、如何写一条 Shopee 商品列表——它就会把过程存成一项 *skill*:一个下次遇到同类任务时自动加载的可复用流程。几个月下来,它累积了 172 项技能,横跨二十个分类。它们就是我的第二大脑。
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2025-09-10
|
||||
updatedDate: 2026-09-26
|
||||
category: notes
|
||||
tags: [synology, dsm, rest-api, tls, 2fa, debugging, authentication]
|
||||
ogImage: /og/synology-api-401-with-the-correct-password.png
|
||||
banner: /banners/synology-api-401-with-the-correct-password.png
|
||||
ogImage: /og/zh-synology-api-401-with-the-correct-password.jpg
|
||||
banner: /banners/synology-api-401-with-the-correct-password.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2025-08-20
|
||||
updatedDate: 2026-09-26
|
||||
category: devops
|
||||
tags: [synology, dsm, docker, portainer, rest-api, spreadsheet, debugging, self-hosting]
|
||||
ogImage: /og/synology-spreadsheet-api-is-a-container.png
|
||||
banner: /banners/synology-spreadsheet-api-is-a-container.png
|
||||
ogImage: /og/zh-synology-spreadsheet-api-is-a-container.jpg
|
||||
banner: /banners/synology-spreadsheet-api-is-a-container.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-09-16
|
||||
category: devops
|
||||
tags: [unraid, sata, ssd, storage, troubleshooting, smart, fio, cable]
|
||||
draft: false
|
||||
ogImage: /og/that-dying-ssd-was-just-a-bad-sata-cable.png
|
||||
banner: /banners/that-dying-ssd-was-just-a-bad-sata-cable.png
|
||||
ogImage: /og/zh-that-dying-ssd-was-just-a-bad-sata-cable.jpg
|
||||
banner: /banners/that-dying-ssd-was-just-a-bad-sata-cable.jpg
|
||||
---
|
||||
|
||||
所有存储指南都告诉你:先看 SMART,再信事件日志。我也照做了,两者都指向同一个结论:这颗 SSD 要死了。而我距离把一颗健康硬盘送去 RMA 只差一步。
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "两周前 btrfs RAID1 阵列在看似健康的 NVMe 盘上静默
|
||||
pubDate: 2026-09-18
|
||||
category: devops
|
||||
tags: [unraid, btrfs, trim, ssd, raid, data-loss, smart, troubleshooting, seagate]
|
||||
ogImage: /og/the-cause-was-trim-not-the-ssds.png
|
||||
banner: /banners/the-cause-was-trim-not-the-ssds.png
|
||||
ogImage: /og/zh-the-cause-was-trim-not-the-ssds.jpg
|
||||
banner: /banners/the-cause-was-trim-not-the-ssds.jpg
|
||||
---
|
||||
|
||||
两周前我写了一篇文章,讲一个 btrfs RAID1 阵列如何在两块看起来完全健康的三星 PM9A3 NVMe 盘上静默损坏 Windows 虚拟机——读出来的全是**全零**数据块,单靠一块坏盘根本无法解释。那次调查以一句诚实的「不确定」收尾:两块盘测试都干净,最大嫌疑是它们共用的 M.2 转接卡。
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-02-04
|
||||
updatedDate: 2026-09-10
|
||||
category: notes
|
||||
tags: [nocodb, backfill, python, regex, data-pipeline]
|
||||
ogImage: /og/the-nocodb-attachment-that-wouldnt-update.png
|
||||
banner: /banners/the-nocodb-attachment-that-wouldnt-update.png
|
||||
ogImage: /og/zh-the-nocodb-attachment-that-wouldnt-update.jpg
|
||||
banner: /banners/the-nocodb-attachment-that-wouldnt-update.jpg
|
||||
---
|
||||
|
||||
在 NocoDB 里回填 300 行数据的经历,暴露了两个小坑,每一个都耗掉了我一段时间。
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "我线上跑的阅读服务,依赖的镜像官方仓库已经 40
|
||||
pubDate: 2026-10-06
|
||||
category: devops
|
||||
tags: ["docker", "self-hosting", "upstream", "maintenance", "registry"]
|
||||
ogImage: "/og/the-upstream-was-deleted-then-came-back-rewritten.png"
|
||||
banner: "/banners/the-upstream-was-deleted-then-came-back-rewritten.png"
|
||||
ogImage: "/og/zh-the-upstream-was-deleted-then-came-back-rewritten.jpg"
|
||||
banner: "/banners/the-upstream-was-deleted-then-came-back-rewritten.jpg"
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2025-02-20
|
||||
updatedDate: 2026-10-16
|
||||
category: engineering
|
||||
tags: ["javascript", "i18n", "debugging", "frontend"]
|
||||
ogImage: /og/two-ways-a-javascript-file-stops-working-and-looks-fine.png
|
||||
banner: /banners/two-ways-a-javascript-file-stops-working-and-looks-fine.png
|
||||
ogImage: /og/zh-two-ways-a-javascript-file-stops-working-and-looks-fine.jpg
|
||||
banner: /banners/two-ways-a-javascript-file-stops-working-and-looks-fine.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "Unraid 停止阵列时一直卡在卸载磁盘:btrfs RAID1 上
|
||||
pubDate: 2026-09-15
|
||||
category: devops
|
||||
tags: [unraid, swap, btrfs, zram, docker, user-scripts]
|
||||
ogImage: /og/unraid-stop-array-hangs-on-swapfile.png
|
||||
banner: /banners/unraid-stop-array-hangs-on-swapfile.png
|
||||
ogImage: /og/zh-unraid-stop-array-hangs-on-swapfile.jpg
|
||||
banner: /banners/unraid-stop-array-hangs-on-swapfile.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "CodeIgniter 4.7 官方升级指南列了八项破坏性变更。
|
||||
pubDate: 2026-09-27
|
||||
category: notes
|
||||
tags: [codeigniter, php, upgrade, composer, breaking-changes, config, framework]
|
||||
ogImage: /og/upgrading-codeigniter-46-to-47.png
|
||||
banner: /banners/upgrading-codeigniter-46-to-47.png
|
||||
ogImage: /og/zh-upgrading-codeigniter-46-to-47.jpg
|
||||
banner: /banners/upgrading-codeigniter-46-to-47.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "从马来西亚使用中国大模型 API(GLM-5.3、DeepSeek V4
|
||||
pubDate: 2026-09-11
|
||||
category: ai
|
||||
tags: [llm, api, deepseek, glm, alipay, malaysia]
|
||||
ogImage: /og/using-chinese-llm-apis-from-malaysia.png
|
||||
banner: /banners/using-chinese-llm-apis-from-malaysia.png
|
||||
ogImage: /og/zh-using-chinese-llm-apis-from-malaysia.jpg
|
||||
banner: /banners/using-chinese-llm-apis-from-malaysia.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-09-28
|
||||
updatedDate: 2026-09-29
|
||||
category: engineering
|
||||
tags: [php, codeigniter, pdf, css, print, testing]
|
||||
ogImage: /og/verifying-a-pdf-report-page-by-page.png
|
||||
banner: /banners/verifying-a-pdf-report-page-by-page.png
|
||||
ogImage: /og/zh-verifying-a-pdf-report-page-by-page.jpg
|
||||
banner: /banners/verifying-a-pdf-report-page-by-page.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "六项检查,专门抓出「文档说得漂亮、代码里其实
|
||||
pubDate: 2026-09-29
|
||||
category: devops
|
||||
tags: ["open-source", "due-diligence", "oidc", "self-hosting", "docker"]
|
||||
ogImage: "/og/vetting-an-open-source-dependency-before-you-bet-on-it.png"
|
||||
banner: "/banners/vetting-an-open-source-dependency-before-you-bet-on-it.png"
|
||||
ogImage: "/og/zh-vetting-an-open-source-dependency-before-you-bet-on-it.jpg"
|
||||
banner: "/banners/vetting-an-open-source-dependency-before-you-bet-on-it.jpg"
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "两块看起来完全健康的 NVMe 组成的 btrfs RAID1 阵列
|
||||
pubDate: 2026-09-16
|
||||
category: devops
|
||||
tags: [unraid, btrfs, nvme, raid, storage, data-loss, troubleshooting]
|
||||
ogImage: /og/when-smart-says-healthy-but-your-raid-is-corrupting-data.png
|
||||
banner: /banners/when-smart-says-healthy-but-your-raid-is-corrupting-data.png
|
||||
ogImage: /og/zh-when-smart-says-healthy-but-your-raid-is-corrupting-data.jpg
|
||||
banner: /banners/when-smart-says-healthy-but-your-raid-is-corrupting-data.jpg
|
||||
---
|
||||
|
||||
所有存储指南都告诉你同一件事:相信 SMART、检查事件日志、相信你的文件系统。我的硬件不这么想。2026 年 9 月,一个 btrfs RAID1 阵列——两块企业级 NVMe 盘镜像,我用每个能想到的工具查它都说**「健康」**——却在悄悄地把我的 Windows 11 虚拟机喂成全零字节。不是看得见的故障,是静默损坏。
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@ description: "过去 30 天,自主编程 Agent 在 5 个仓库中累计新增
|
||||
pubDate: "2026-10-18"
|
||||
category: "engineering"
|
||||
tags: ["ai", "git", "devops", "testing", "refactoring"]
|
||||
ogImage: "/og/why-500000-lines-of-commit-churn-only-left-230000-in-production.png"
|
||||
banner: "/banners/why-500000-lines-of-commit-churn-only-left-230000-in-production.png"
|
||||
ogImage: "/og/zh-why-500000-lines-of-commit-churn-only-left-230000-in-production.jpg"
|
||||
banner: "/banners/why-500000-lines-of-commit-churn-only-left-230000-in-production.jpg"
|
||||
---
|
||||
|
||||
上周我做了一件平时几乎不会做的事:数了数自己的提交。不是数我记得写过的那些,而是数仓库里真实记录下来的那些。自建 Gitea 上 5 个生产仓库、三十天、一个人:865 次 Commit、新增 518,233 行、删除 130,892 行。
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "Chrome 的「继续上次浏览」在 Docker 容器里根本不会
|
||||
pubDate: 2026-09-29
|
||||
category: devops
|
||||
tags: [docker, chrome, cdp, persistence, synology, self-hosting]
|
||||
ogImage: /og/why-chrome-forgets-its-tabs-in-a-container.png
|
||||
banner: /banners/why-chrome-forgets-its-tabs-in-a-container.png
|
||||
ogImage: /og/zh-why-chrome-forgets-its-tabs-in-a-container.jpg
|
||||
banner: /banners/why-chrome-forgets-its-tabs-in-a-container.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "Claude Opus 和 GPT 確實比我能在本地跑的任何模型都
|
||||
pubDate: 2026-09-21
|
||||
category: ai
|
||||
tags: [local-llm, gpu, llama-cpp, lm-studio, agents, self-hosting, cost]
|
||||
ogImage: /og/why-i-still-bought-a-local-gpu.png
|
||||
banner: /banners/why-i-still-bought-a-local-gpu.png
|
||||
ogImage: /og/zh-why-i-still-bought-a-local-gpu.jpg
|
||||
banner: /banners/why-i-still-bought-a-local-gpu.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ description: "为什么我在 Windows 上克隆后链上 NFT 的图像变了:c
|
||||
pubDate: 2026-08-19
|
||||
category: web3
|
||||
tags: [foundry, solidity, svg, base64, git, windows, crlf]
|
||||
ogImage: /og/why-my-on-chain-nft-art-changed-on-windows.png
|
||||
banner: /banners/why-my-on-chain-nft-art-changed-on-windows.png
|
||||
ogImage: /og/zh-why-my-on-chain-nft-art-changed-on-windows.jpg
|
||||
banner: /banners/why-my-on-chain-nft-art-changed-on-windows.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-03-25
|
||||
updatedDate: 2026-09-09
|
||||
category: devops
|
||||
tags: [docker, telegram, python, dns, ipv6, debugging, portainer]
|
||||
ogImage: /og/why-telegram-bot-notifications-die.png
|
||||
banner: /banners/why-telegram-bot-notifications-die.png
|
||||
ogImage: /og/zh-why-telegram-bot-notifications-die.jpg
|
||||
banner: /banners/why-telegram-bot-notifications-die.jpg
|
||||
---
|
||||
|
||||
我跑着一个小监控机器人,专门盯着 Carousell 上新上架的商品,一旦有新品就通过
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2025-03-19
|
||||
updatedDate: 2026-09-29
|
||||
category: devops
|
||||
tags: [cdp, chrome, react, browser-automation, debugging, python]
|
||||
ogImage: /og/why-your-cdp-clicks-silently-fail.png
|
||||
banner: /banners/why-your-cdp-clicks-silently-fail.png
|
||||
ogImage: /og/zh-why-your-cdp-clicks-silently-fail.jpg
|
||||
banner: /banners/why-your-cdp-clicks-silently-fail.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-05-17
|
||||
updatedDate: 2026-09-29
|
||||
category: devops
|
||||
tags: [grafana, prometheus, dashboards, monitoring, promql, observability]
|
||||
ogImage: /og/why-your-grafana-dashboard-shows-no-data.png
|
||||
banner: /banners/why-your-grafana-dashboard-shows-no-data.png
|
||||
ogImage: /og/zh-why-your-grafana-dashboard-shows-no-data.jpg
|
||||
banner: /banners/why-your-grafana-dashboard-shows-no-data.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-01-21
|
||||
updatedDate: 2026-09-10
|
||||
category: case-studies
|
||||
tags: [scraping, playwright, browserless, docker, goofish, carousell, anti-bot]
|
||||
ogImage: /og/why-your-headless-browser-cant-scrape-everything.png
|
||||
banner: /banners/why-your-headless-browser-cant-scrape-everything.png
|
||||
ogImage: /og/zh-why-your-headless-browser-cant-scrape-everything.jpg
|
||||
banner: /banners/why-your-headless-browser-cant-scrape-everything.jpg
|
||||
---
|
||||
|
||||
我在短短几周里,分别在两个不同的二手交易平台上撞上了同一堵墙,而这组对照
|
||||
|
||||
@@ -5,8 +5,8 @@ pubDate: 2026-06-24
|
||||
updatedDate: 2026-09-29
|
||||
category: devops
|
||||
tags: [monitoring, alerting, prometheus, grafana, storage, capacity, observability]
|
||||
ogImage: /og/your-disk-full-alert-is-lying.png
|
||||
banner: /banners/your-disk-full-alert-is-lying.png
|
||||
ogImage: /og/zh-your-disk-full-alert-is-lying.jpg
|
||||
banner: /banners/your-disk-full-alert-is-lying.jpg
|
||||
draft: false
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user