From fcc7232861339867a2da59efa919a6cd993ddd35 Mon Sep 17 00:00:00 2001 From: JackZhu Date: Fri, 4 Sep 2026 04:11:10 +0800 Subject: [PATCH] =?UTF-8?q?=E7=85=A7=E7=89=87=E5=A2=99=E4=B8=8E=E6=96=87?= =?UTF-8?q?=E7=AB=A0=E8=A7=A3=E8=80=A6=20+=20=E5=88=A0=E6=A0=87=E7=AD=BE/?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E9=A1=B5=20+=20=E6=B8=85=E7=90=86=E8=BF=81?= =?UTF-8?q?=E7=A7=BB=E6=AE=8B=E7=95=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .agent/CURRENT_STATE.md | 61 - .agent/TASKS.md | 19 - AGENTS.md | 36 +- docs/design-spec.md | 139 -- migration/content-manifest.json | 1212 ---------------- migration/image-audit.json | 1282 ----------------- migration/link-audit.json | 618 -------- migration/manual-review.md | 183 --- migration/taxonomy-map.json | 328 ----- migration/url-manifest.json | 92 -- scripts/audit-legacy-content.mjs | 731 ---------- scripts/migrate-content.mjs | 248 ---- scripts/verify-build.mjs | 46 +- site.config.yaml | 91 +- src/components/Head.astro | 2 +- src/consts.ts | 4 - src/content.config.ts | 4 +- .../index.md" | 2 - .../index.md" | 6 - src/content/blog/HRNet/index.md | 2 - .../index.md" | 2 - .../index.md" | 8 - .../index.md" | 2 - .../hermes-self-evolving-blog-engine/index.md | 9 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 7 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - .../index.md" | 2 - src/lib/site-config.ts | 9 +- src/pages/categories/[...category].astro | 47 - src/pages/photos.astro | 67 +- src/styles/global.css | 45 + tests/e2e/blog.spec.ts | 22 +- 76 files changed, 196 insertions(+), 5220 deletions(-) delete mode 100644 .agent/CURRENT_STATE.md delete mode 100644 .agent/TASKS.md delete mode 100644 docs/design-spec.md delete mode 100644 migration/content-manifest.json delete mode 100644 migration/image-audit.json delete mode 100644 migration/link-audit.json delete mode 100644 migration/manual-review.md delete mode 100644 migration/taxonomy-map.json delete mode 100644 migration/url-manifest.json delete mode 100644 scripts/audit-legacy-content.mjs delete mode 100644 scripts/migrate-content.mjs delete mode 100644 src/pages/categories/[...category].astro diff --git a/.agent/CURRENT_STATE.md b/.agent/CURRENT_STATE.md deleted file mode 100644 index e71694457..000000000 --- a/.agent/CURRENT_STATE.md +++ /dev/null @@ -1,61 +0,0 @@ -# Current State - -## Current Focus - -迁移已上线(PR #26 merged,2026-09-04)。当前工作树有**未提交**改动(`/photos/` 页、`src/lib/site-config.ts` + `site.config.yaml` 配置重构、footer/header/about/link/blog 分页等多处调整),尚未反映到本文件——需要先确认这批改动的内容与验收状态,再推进 Phase J 清理。 - -## Last Updated - -2026-09-04(本文件为重构后初版,待同步未提交改动) - -## Done - -- 建立隔离分支 `migration/astro` 与 worktree `/Users/jackzhu/projects/blog-astro-migration` -- 从 Astro Micro 锁 commit `af69926` 拷入模板(保留 MIT LICENSE) -- 保留 CNAME、robots.txt、百度/Google 站点验证文件到 `public/`,新增 `public/.nojekyll` -- 配置 astro.config.mjs(site=https://www.jackzhu.top)、package.json(engines ≥22.12)、.nvmrc、.editorconfig、.gitignore -- CI:astro_ci.yml(PR 只构建)+ astro_build_deploy.yml(仅 main,dist→html) -- 裁剪模板:blog 单集合新 schema、consts/types 对齐、删示例/项目/giscus/tags/rss.xml -- 建页面与路由:文章日期 URL、首页/列表+分页/关于/友链/分类/atom.xml/404、legacyPath 解析、zh-CN -- 视觉样式:Demo 设计系统(CSS 变量浅/深两套)、Header/Footer/文章页按 Demo 观感重写、浅色默认 -- 迁移脚本与清单(Phase B):`scripts/*.mjs` + `migration/*.json`(54 篇四分类已批准) -- 批量迁移 54 篇(Phase D):frontmatter 转换、清署名、数学三件套、build 通过 -- 图片处置(Phase E):66 条失效 `cdn.noedgeai.com` 图按 `note` 删除并加注;`cdn.nlark.com` 5 条实测 200 保留 -- 旧 URL/SEO/订阅兼容(Phase F):百度统计、robots→sitemap-index、canonical/CNAME/.nojekyll/验证文件/atom.xml -- 8 篇课程报告历史格式修复:目录列表化、公式 `$...$`/`$$...$$`、代码围栏+缩进恢复 -- Header/favicon:`.site-header` 占满 1080px 防重叠、导航分文字组与图标组、`J` 矢量 favicon 替换模板显微镜 -- Phase H 本地验证:`scripts/verify-build.mjs` 静态审计(10 类)+ Playwright E2E(13 用例),`npm ci`/`npm run build`/`npm run test`/`npm run test:e2e` 全绿 -- 清理未引用依赖 `@fontsource/geist-mono`、`@fontsource/geist-sans`;`npm audit fix` 降 17 → 5 项 -- 站点图标替换为 bloggallery `art_favicon.webp`(1024×1024)→ 本地 `favicon.png`(32)+`apple-touch-icon.png`(180)+`og-image.png`(1024) -- push `migration/astro` 到 origin,开 PR #26(CI build 通过),merge 并部署到 `html` 分支,线上回归验证通过 - -## In Progress - -- 工作树未提交改动(`git status` 可见):`package.json`/`package-lock.json`、`Footer.astro`、`Header.astro`、`consts.ts`、`links.ts`、`about.astro`、`blog/[page].astro`、`blog/index.astro`、`link.astro`、`global.css`、`tests/e2e/blog.spec.ts`,新增 `site.config.yaml`、`src/lib/site-config.ts`、`src/pages/photos.astro` - -## Known Issues - -- 剩余 5 项 npm 审计(1 low / 2 moderate / 2 high,无 critical)需 `npm audit fix --force` 升 Astro 7(breaking),上线前无计划硬升,建议单独评估。 -- `/atom.xml` 用 `@astrojs/rss` 输出 RSS 2.0 非严格 Atom;URL 已保留,格式对齐未做。 -- About 文案为草稿,用户逐字审阅(Phase G 文案验收门)。 -- 未提交改动(见 In Progress)尚未跑验证,状态未知。 - -## Important Context - -- 工作目录:`/Users/jackzhu/projects/blog-astro-migration`(branch `migration/astro`) -- 迁移计划(7 阶段):`/Users/jackzhu/projects/blog/.hermes/plans/2026-09-03_195621-astro-blog-migration.md` -- 设计规范:`docs/design-spec.md`(唯一设计事实来源) -- 视觉参考 Demo(已批准):`/Users/jackzhu/Documents/blog-style-demos/jack-blog-recommended-demo.html` -- 原站源码(只读):`/Users/jackzhu/projects/blog`(main),文章 `source/_posts/*.md`(54 篇) -- 实施 worker:Codex CLI;Hermes 负责范围控制/diff 审查/测试复验。 - -## Verification - -Last verified at: 2026-09-04 -Commit: `a1dfb0d`(HEAD);注意工作树有未提交改动,下列验证针对 HEAD 提交状态 -Command: `npm run build` / `npm run test` / `npm run test:e2e` -Result: -- `npm ci` → exit 0(5 vulnerabilities,需 Astro 7 的强制升级未做) -- `npm run build` → exit 0,astro check 0 errors,67 page(s) built,Pagefind 索引 69 pages -- `npm run test` → 10/10 PASS(54 篇一致、54 URL、1156 内链、署名清除、favicon、CNAME/验证文件、sitemap/atom/canonical、Pagefind、代表文章、无凭证) -- `npm run test:e2e` → 13/13 passed(360/390/768/1440 响应式、首页/分页/关于/友链/404、代码/数学/原始 HTML/多图、搜索、主题、键盘、360px 溢出、favicon) diff --git a/.agent/TASKS.md b/.agent/TASKS.md deleted file mode 100644 index ca9718653..000000000 --- a/.agent/TASKS.md +++ /dev/null @@ -1,19 +0,0 @@ -# Tasks - -## Now - -(迁移已上线,无进行中任务) - -## Next - -- [ ] 稳定期清理(Phase J)—— 验收:对 `migration/*.json`、`scripts/*.mjs` 逐项给出保留或归档结论并落地;剩余 npm audit 5 项给出处置方案 -- [ ] 评估 Pages artifact 模式 —— 验收:写清从 `html` 分支发布迁移到官方 Pages artifact 模式的收益/成本与迁移步骤,给出 Go/No-Go - -## Later - -- [ ] `/photos/` 极简摄影页(范围变更,需单独设计)—— 验收:`npm run build` exit 0、`npm run test:e2e` 全绿、仅放用户自拍照片不放文章插图 -- [ ] npm audit 剩余 5 项(1 low / 2 moderate / 2 high)—— 验收:评估 Astro 7 升级(breaking)的必要性并给出结论,不擅自 `--force` - -## Backlog - -- [ ] Astro 7 升级结论落地(如评估批准) diff --git a/AGENTS.md b/AGENTS.md index a1240f16d..e295c122e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,34 +1,28 @@ -# Blog Astro Migration +# Jack's Blog -## Goal +## 概述 -把 Hexo + Butterfly 博客(54 篇,六年)迁移为基于 Astro Micro 的克制现代独立博客,替换线上唯一站点 `www.jackzhu.top`,保留全部旧文章日期型 URL、公开身份信息与订阅地址。已于 2026-09-04 上线(PR #26 merged)。 +Jack 的个人博客,基于 Astro Micro 构建,部署到 www.jackzhu.top(GitHub Pages,`html` 分支)。 -## Stack & Commands +## 技术栈与命令 -- Astro 6.4.8 + @astrojs/mdx 5.x + @astrojs/rss 4.0.19 + @astrojs/markdown-remark(供 `unified()`) -- Node 22(≥22.12);Astro Micro 锁 commit `af69926c87341719846fe0e7a415483deb4e05ee` +- Astro 6.4.8 + @astrojs/mdx 5.x + @astrojs/rss 4.0.19 + @astrojs/markdown-remark +- Node 22(≥22.12) - 安装:`npm ci` - 构建:`npm run build`(astro check + 构建 + Pagefind 索引) -- 静态审计:`npm run test`(10 用例,`scripts/verify-build.mjs`) -- E2E:`npm run test:e2e`(13 用例,Playwright 矩阵 360/390/768/1440px) +- 静态审计:`npm run test`(`scripts/verify-build.mjs`) +- E2E:`npm run test:e2e`(Playwright 矩阵 360/390/768/1440px) -## Conventions & Gotchas +## 约定 - 工作目录:`/Users/jackzhu/projects/blog-astro-migration`(branch `migration/astro`) -- 设计事实来源:`docs/design-spec.md`(唯一) -- 视觉参考 Demo(已批准):`/Users/jackzhu/Documents/blog-style-demos/jack-blog-recommended-demo.html` -- 原站源码(只读):`/Users/jackzhu/projects/blog`(main),文章 `source/_posts/*.md` -- 迁移计划(7 阶段):`/Users/jackzhu/projects/blog/.hermes/plans/2026-09-03_195621-astro-blog-migration.md` -- 部署:GitHub Pages artifact 模式,CI `astro_build_deploy.yml`(仅 main,dist→html 分支) +- 站点可改文案集中在 `site.config.yaml`(站点/导航/社交/友链/页脚/关于/各页文案/照片墙),由 `src/lib/site-config.ts` 用 js-yaml 加载。 +- 文章在 `src/content/blog//index.md`,frontmatter:`title` / `description` / `date` / `section` / `legacyPath` / `cover`(`updated`、`draft` 可选)。 +- 文章 URL 由 `legacyPath` 决定,路由 `[year]/[month]/[day]/[...slug]`;改文章标题不改变 URL。 +- 部署:GitHub Pages artifact 模式,CI `astro_build_deploy.yml`(仅 main,dist→html 分支)。 -## Project Rules +## 项目规则 1. 公开署名只写 `Jack` / `Jack's Blog`,不写真名、公司履历、非公开项目细节。 2. 不自动 git commit / push / deploy / publish——本地验证 + 用户批准后才 push。 -3. 迁移期间只读旧内容 `main` 工作树的源 Markdown(正文改动另立编辑任务)。 -4. 文章优先,不是作品集/仪表盘;不设评论、独立归档、标签云、Projects/Publications。 - -## Continuation - -每次继续前先读 `.agent/TASKS.md` 和 `.agent/CURRENT_STATE.md`。 +3. 文章优先,不是作品集/仪表盘;不设评论、独立归档、标签云、Projects/Publications。 diff --git a/docs/design-spec.md b/docs/design-spec.md deleted file mode 100644 index 4cedb22a0..000000000 --- a/docs/design-spec.md +++ /dev/null @@ -1,139 +0,0 @@ -# Jack's Blog 设计规范(Design Spec) - -> 本文件是迁移目标站点的唯一设计事实来源,实施前以本文件为准。 -> 状态:已批准(2026-09-03)。与迁移实施计划冲突时,以本文件为准。 - -## 1. 定位 - -文章优先的现代独立博客。不是作品集、个人仪表盘、履历主页或研究者/评测专家形象。 - -- 站名:`Jack's Blog` -- 作者署名:`Jack`(不出现中文真名或 "Jack Zhu" 署名;域名 `jackzhu.top` 与 GitHub 用户名 `CoderJackZhu` 属既有公开标识,不在本次改名) -- 首页定位语(已批准,逐字使用): - -> 记录技术实践、学习过程,以及对一些长期问题的思考。 - -## 2. 页面架构(路由) - -主导航固定为:`Jack's Blog|文章|关于|友链|搜索|深浅色切换`。站名点击回首页;不设"首页"文字入口;分类不入主导航。 - -| 路由 | 页面 | 说明 | -|---|---|---| -| `/` | 首页 | 定位语 + 最近 6 篇(标题/日期/摘要/分类)+ "查看全部文章" | -| `/blog/` | 文章列表 | 全部 54 篇,按发布日期倒序,每页 12 篇 | -| `/blog/[page]/` | 文章分页 | 第 2 页起 | -| `/about/` | 关于 | `Jack,一名算法工程师` + 写作范围 + 旧文章时效说明 + 社交链接 | -| `/link/` | 友链 | 11 个友链(9 友情 + 2 网站)原样保留 | -| `/categories/[category]/` | 分类结果页 | 四个公开分类的静态列表 | -| `/[year]/[month]/[day]/[slug]/` | 文章页 | 保留旧日期型永久链接 | -| `/atom.xml` | Atom 订阅 | 保留旧订阅地址,不改成 rss.xml | -| `/404` | 404 | | - -**明确不做:** 独立归档栏目(旧 `/archives/` 直接 404,不建兼容页)、标签云、Now/Uses、Projects、Proof of Work、Publications、首页友链墙、作者信息卡片。 - -## 3. 公开分类(四类,单选) - -`技术与工程`|`学习与研究`|`思考与随笔`|`经历与记录` - -54 篇逐一映射到上述四类之一。`Archive` 不是文章分类。原 Hexo 分类与标签只保留在迁移清单(`migration/taxonomy-map.json`)中供审计,不原样生成公开标签云;逗号拼接的标签需拆分、去重。 - -## 4. 内容模型(frontmatter schema) - -`src/content.config.ts` 的 blog 集合: - -```ts -{ - title: string; - description: string; - date: Date; - updated?: Date; - section: "技术与工程" | "学习与研究" | "思考与随笔" | "经历与记录"; - tags?: string[]; - legacyPath: string; // 例如 "/2026/08/29/当文明踩下加速踏板之后/" - draft?: boolean; - cover?: string; -} -``` - -规则: - -- `legacyPath` 唯一,是文章 canonical URL;路由日期直接取 `legacyPath`,不得受 Node/构建机时区漂移影响。 -- 54 篇文章全部保留原日期型 URL,不做一次性 URL 重构。 -- `date` 保留原发布日期;`updated` 仅在原文有明确更新时间时保留,不用迁移日期覆盖。 -- `description` 缺失时人工补写,不自动生成空泛摘要。 -- 17 篇标题与源文件名不同;旧 URL 从现有生成路径取,不从新标题重算。 -- 删除模板 projects 集合;删除 Giscus 评论组件与配置。 - -## 5. 视觉规范(克制的现代独立刊物风格) - -> 视觉参考 Demo(用户已批准):`/Users/jackzhu/Documents/blog-style-demos/jack-blog-recommended-demo.html`(URL 参数 `?view=home|blog|article|about|link`、`?theme=dark`)。实现时以该 Demo 的观感为准,颜色/字体/布局 token 见本节。 - -### 颜色 - -浅色(默认): - -- 背景 `#f6f7f9`,卡片/表面 `#ffffff`,正文 `#1a1d22` -- 次级 `#68717d`,弱化 `#9099a5` -- 分隔线 `#dce1e7`,强调分隔 `#c7ced7` -- 强调色 `#3f6384`(单一低饱和),强调浅底 `#eaf0f5` -- 代码块底 `#181b20`,代码字 `#e7ebef` - -深色(阅读选项): - -- 背景 `#121417`,表面 `#181b1f`,正文 `#edf0f3` -- 次级 `#a4acb6`,弱化 `#7f8994` -- 分隔线 `#2d333a`,强调分隔 `#3b434d` -- 强调色 `#91b1cf`,强调浅底 `#202c37` -- 代码块底 `#0d0f12` - -### 字体 - -- 正文:无衬线中文为主(Inter + PingFang SC + Hiragino Sans GB + Microsoft YaHei) -- 代码:等宽(SFMono / Menlo / Consolas),仅用于代码 - -### 布局 - -- 站点最大宽 1080px;文章正文阅读宽约 730px -- 首页少量留白,无夸张大 Hero -- 文章列表用分隔线分隔,不用大卡片 -- 文章页标题左对齐、无巨型封面;元数据只留日期/分类/阅读时间 -- 宽屏轻量目录(sticky),移动端折叠或隐藏 -- 图片/代码块可适度突破正文宽度 - -### 禁用(AI 感元素一律不出现) - -渐变光晕、玻璃面板、网格背景、终端元素、AI 标签、数据仪表盘、能力徽章墙、GitHub 数据面板、"我专注于……"关键词堆砌、超大 Hero、动效堆砌。 - -## 6. 文章页 - -标题、日期、分类、真实更新时间(若有)、阅读时间、桌面 TOC、移动折叠 TOC、代码复制按钮、上一篇/下一篇、返回文章列表。 - -## 7. 页脚与公开信息 - -- 建站年份 `2020`,版权行 `© 2020–2026 Jack` -- ICP 备案号 `陕ICP备2023003055号-1` → `https://beian.miit.gov.cn/` -- 又拍云加速说明「本网站由又拍云提供加速服务」+ 原 logo → `https://www.upyun.com/` -- 百度统计(`baidu_analytics`)同一 ID 迁入 ``;不新增可见访客计数器 -- 订阅:RSS / Atom -- 社交链接:GitHub(github.com/CoderJackZhu)、知乎(zhihu.com/people/zhu-yijie-51)、哔哩哔哩(space.bilibili.com/355295657)、RSS -- 不放:社交图标墙、邮箱、私人联系方式 - -## 8. 评论 / 其他栏目 - -- **评论**:第一版不设置;旧评论数据不迁移、不备份、不恢复;不复制 Butterfly 评论配置与凭据。 -- **音乐 / 电影 / 相册**:空壳页面,直接忽略并允许 404,不做处理。 -- **友链**:11 个全部原样保留(名称、链接、头像、简介),含当前已失效链接;不做健康过滤。 - -## 9. 部署(CI/CD) - -- 源码分支 `main`,发布分支 `html`(GitHub Pages,legacy branch 模式,继续沿用)。 -- `astro_ci.yml`:仅 PR / 手动触发,`npm ci` + `npm run build`,不部署。 -- `astro_build_deploy.yml`:仅 `main` push / 手动触发,`npm ci` + `npm run build`,把 `dist/` 发布到 `html`。 -- 触发条件只允许 `main`,feature 分支 / PR 不得触发部署(修复现有 workflow 的"任意非 html 分支都构建 main"缺陷)。 -- 部署产物必须包含 `CNAME` 与 `.nojekyll`(避免 GitHub Pages 忽略 `/_astro/` 资源)。 -- Node 统一 22(≥22.12.0),本地与 CI 一致;Astro Micro 锁定 commit `af69926c87341719846fe0e7a415483deb4e05ee`,保留 MIT LICENSE 与来源记录。 -- 域名唯一正式域名 `www.jackzhu.top`;`jackzhu.top` 跳转到 www;canonical 一律 HTTPS + www。 - -## 10. 非目标 - -不建第二个生产站、不改域名、不切换 Pages artifact 模式、不建 Projects/PoW/Publications、不美化未完成项目、不补造数据、不恢复音乐/电影/相册、不做 AI 聊天/RAG/llms.txt/JSON API、不重写全部旧文章、不改变文章 URL、不在用户验收前 push/部署。 diff --git a/migration/content-manifest.json b/migration/content-manifest.json deleted file mode 100644 index c44b29941..000000000 --- a/migration/content-manifest.json +++ /dev/null @@ -1,1212 +0,0 @@ -[ - { - "filename": "记录第一次搭博客.md", - "title": "记录我的第一次搭建博客", - "date": "2020-10-31", - "updated": null, - "legacyPath": "/2020/10/31/记录第一次搭博客/", - "description": "我太难了", - "categories": [ - "生活" - ], - "tags": [ - "记录生活" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "数据挖掘报告——MIMC数据集的预处理.md", - "title": "数据挖掘报告——MIMC数据集的预处理", - "date": "2021-04-08", - "updated": null, - "legacyPath": "/2021/04/08/数据挖掘报告——MIMC数据集的预处理/", - "description": null, - "categories": [ - "数据挖掘" - ], - "tags": [ - "数据挖掘" - ], - "flags": { - "mathjax": true, - "html": true, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": false - }, - { - "filename": "机器学习报告——数据分类的实现.md", - "title": "机器学习报告——数据分类的实现", - "date": "2021-04-11", - "updated": null, - "legacyPath": "/2021/04/11/机器学习报告——数据分类的实现/", - "description": null, - "categories": [ - "机器学习" - ], - "tags": [ - "机器学习" - ], - "flags": { - "mathjax": true, - "html": true, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": false - }, - { - "filename": "计算智能导论作业——遗传算法的实现.md", - "title": "计算智能导论作业——遗传算法的实现", - "date": "2021-04-16", - "updated": null, - "legacyPath": "/2021/04/16/计算智能导论作业——遗传算法的实现/", - "description": null, - "categories": [ - "计算智能" - ], - "tags": [ - "计算智能" - ], - "flags": { - "mathjax": true, - "html": true, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": false - }, - { - "filename": "机器学习报告——高光谱遥感特征选择.md", - "title": "机器学习作业——高光谱遥感特征选择", - "date": "2021-04-28", - "updated": null, - "legacyPath": "/2021/04/28/机器学习报告——高光谱遥感特征选择/", - "description": null, - "categories": [ - "机器学习" - ], - "tags": [ - "机器学习" - ], - "flags": { - "mathjax": true, - "html": true, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": false - }, - { - "filename": "机器学习上机报告——聚类分析.md", - "title": "机器学习上机报告——聚类分析", - "date": "2021-05-23", - "updated": null, - "legacyPath": "/2021/05/23/机器学习上机报告——聚类分析/", - "description": "本文使用了 K-means 和 DBSCAN 两种聚类方法, 较好的完成了聚类任务, 并将得到的结果使用了 t-SNE 和 PCA 两种方法进行降维可视化,从而更好的得到聚类的效果,并计算了轮廓系数、 \\(\\mathrm{CH}\\) score、 DBI 这些聚类指标, 对于 K-means 方法还使用了图片进行聚类, 使得效果更加直观, 实验效果非常好。", - "categories": [ - "机器学习" - ], - "tags": [ - "机器学习" - ], - "flags": { - "mathjax": true, - "html": true, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "计算智能导论作业——感知器实现二分类.md", - "title": "计算智能导论作业——感知器实现二分类", - "date": "2021-05-30", - "updated": null, - "legacyPath": "/2021/05/30/计算智能导论作业——感知器实现二分类/", - "description": null, - "categories": [ - "计算智能" - ], - "tags": [ - "计算智能" - ], - "flags": { - "mathjax": true, - "html": true, - "code": true, - "hexoTag": true - }, - "copyright_author": "Jack Zhu", - "hasDescription": false - }, - { - "filename": "计算智能导论作业——FCM 聚类的实现.md", - "title": "计算智能导论作业——FCM 聚类的实现", - "date": "2021-05-30", - "updated": null, - "legacyPath": "/2021/05/30/计算智能导论作业——FCM 聚类的实现/", - "description": null, - "categories": [ - "计算智能" - ], - "tags": [ - "计算智能" - ], - "flags": { - "mathjax": true, - "html": true, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": false - }, - { - "filename": "机器学习课程报告——波士顿房价预测.md", - "title": "机器学习课程报告——波士顿房价预测", - "date": "2021-06-18", - "updated": null, - "legacyPath": "/2021/06/18/机器学习课程报告——波士顿房价预测/", - "description": null, - "categories": [ - "机器学习" - ], - "tags": [ - "机器学习" - ], - "flags": { - "mathjax": true, - "html": true, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": false - }, - { - "filename": "我的生活.md", - "title": "考研后的思考", - "date": "2021-12-29", - "updated": null, - "legacyPath": "/2021/12/29/我的生活/", - "description": "反内卷而不躺平", - "categories": [ - "生活" - ], - "tags": [ - "生活" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md", - "title": "Ubuntu 20.04下Pytorch深度学习环境搭建以及常用工具配置", - "date": "2022-04-10", - "updated": null, - "legacyPath": "/2022/04/10/Ubuntu 20.04下深度学习环境搭建以及常用工具配置/", - "description": "一点小记录", - "categories": [ - "深度学习" - ], - "tags": [ - "深度学习" - ], - "flags": { - "mathjax": false, - "html": false, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "今日随笔.md", - "title": "今日随笔", - "date": "2022-05-10", - "updated": null, - "legacyPath": "/2022/05/10/今日随笔/", - "description": "进步了", - "categories": [ - "生活" - ], - "tags": [ - "记录生活" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "HRNet.md", - "title": "【论文阅读】 Deep High-Resolution Representation Learning for Visual Recognition", - "date": "2022-09-21", - "updated": null, - "legacyPath": "/2022/09/21/HRNet/", - "description": "读论文的记录", - "categories": [ - "姿态估计" - ], - "tags": [ - "深度学习" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "ubuntu的使用.md", - "title": "Ubuntu的基本使用", - "date": "2022-11-02", - "updated": null, - "legacyPath": "/2022/11/02/ubuntu的使用/", - "description": "一点小记录", - "categories": [ - "Ubuntu" - ], - "tags": [ - "Ubuntu" - ], - "flags": { - "mathjax": false, - "html": false, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "学术交流分享ActionFormer.md", - "title": "ActionFormer论文分享", - "date": "2022-11-10", - "updated": null, - "legacyPath": "/2022/11/10/学术交流分享ActionFormer/", - "description": "之前读的论文", - "categories": [ - "时序定位" - ], - "tags": [ - "ActionFormer" - ], - "flags": { - "mathjax": true, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "浅谈《原神》游戏的理解.md", - "title": "浅谈《原神》游戏的理解", - "date": "2023-02-07", - "updated": null, - "legacyPath": "/2023/02/07/浅谈《原神》游戏的理解/", - "description": "一点点的理解", - "categories": [ - "生活" - ], - "tags": [ - "随笔" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "服务器常见技术问题与技巧.md", - "title": "服务器常见技术问题与技巧", - "date": "2023-09-03", - "updated": null, - "legacyPath": "/2023/09/03/服务器常见技术问题与技巧/", - "description": "本文记录了一些常见的技术问题与技巧", - "categories": [ - "技术问题" - ], - "tags": [ - "技术问题" - ], - "flags": { - "mathjax": false, - "html": false, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署.md", - "title": "Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署", - "date": "2024-03-03", - "updated": null, - "legacyPath": "/2024/03/03/Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署/", - "description": "本文介绍如何使用Github Actions自动部署博客,并且使用仓库分支存储图片等资源。", - "categories": [ - "博客配置" - ], - "tags": [ - "博客配置" - ], - "flags": { - "mathjax": false, - "html": false, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "华为暑期实习面试分享.md", - "title": "华为暑期实习面试分享", - "date": "2024-04-28", - "updated": null, - "legacyPath": "/2024/04/28/华为暑期实习面试分享/", - "description": "华为一面二面的面试记录分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "淘天暑期实习面试分享.md", - "title": "淘天暑期实习计算机视觉面试凉经", - "date": "2024-04-30", - "updated": null, - "legacyPath": "/2024/04/30/淘天暑期实习面试分享/", - "description": "淘天技术的面试记录分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": true, - "html": false, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "钉钉和淘天机器学习捞暑期实习面试分享.md", - "title": "钉钉和淘天机器学习捞暑期实习面试分享", - "date": "2024-05-22", - "updated": null, - "legacyPath": "/2024/05/22/钉钉和淘天机器学习捞暑期实习面试分享/", - "description": "淘天技术的面试记录分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": true, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "阿里国际暑实面试分享.md", - "title": "阿里国际暑实面试分享", - "date": "2024-05-23", - "updated": null, - "legacyPath": "/2024/05/23/阿里国际暑实面试分享/", - "description": "阿里国际技术的面试记录分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": true, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "腾讯AI Lab暑实面试分享.md", - "title": "腾讯AI Lab暑实面试分享", - "date": "2024-05-28", - "updated": null, - "legacyPath": "/2024/05/28/腾讯AI Lab暑实面试分享/", - "description": "腾讯AI Lab暑实面试记录分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": true, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招提前批百度面试分享.md", - "title": "秋招提前批百度机器学习/数据挖掘/自然语言处理工程师面试分享", - "date": "2024-08-06", - "updated": null, - "legacyPath": "/2024/08/06/秋招提前批百度面试分享/", - "description": "秋招提前批百度机器学习/数据挖掘/自然语言处理工程师面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招美团面试分享.md", - "title": "秋招美团机器学习面试分享", - "date": "2024-09-12", - "updated": null, - "legacyPath": "/2024/09/12/秋招美团面试分享/", - "description": "秋招正式批美团机器学习面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招淘天面试分享.md", - "title": "秋招淘天凉经", - "date": "2024-09-19", - "updated": null, - "legacyPath": "/2024/09/19/秋招淘天面试分享/", - "description": "秋招正式批淘天面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": true, - "html": false, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招中兴面试分享.md", - "title": "秋招中兴面试分享", - "date": "2024-09-19", - "updated": null, - "legacyPath": "/2024/09/19/秋招中兴面试分享/", - "description": "秋招正式批中兴面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招得物面试分享.md", - "title": "秋招得物面试分享", - "date": "2024-09-22", - "updated": null, - "legacyPath": "/2024/09/22/秋招得物面试分享/", - "description": "秋招正式批得物面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招比亚迪面试分享.md", - "title": "秋招比亚迪面试分享", - "date": "2024-09-23", - "updated": null, - "legacyPath": "/2024/09/23/秋招比亚迪面试分享/", - "description": "秋招正式批比亚迪面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招合肥安迅精密技术面试分享.md", - "title": "秋招合肥安迅精密技术面试分享", - "date": "2024-09-23", - "updated": null, - "legacyPath": "/2024/09/23/秋招合肥安迅精密技术面试分享/", - "description": "秋招正式批合肥安迅精密技术面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招快手面试分享.md", - "title": "秋招快手面试分享", - "date": "2024-09-24", - "updated": null, - "legacyPath": "/2024/09/24/秋招快手面试分享/", - "description": "秋招正式批快手技术面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招蚂蚁面试分享.md", - "title": "秋招蚂蚁面试分享", - "date": "2024-09-25", - "updated": null, - "legacyPath": "/2024/09/25/秋招蚂蚁面试分享/", - "description": "秋招正式批蚂蚁技术面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招理想面试分享.md", - "title": "秋招理想面试分享", - "date": "2024-09-26", - "updated": null, - "legacyPath": "/2024/09/26/秋招理想面试分享/", - "description": "秋招正式批理想技术面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招滴滴面试分享.md", - "title": "秋招滴滴面试分享", - "date": "2024-09-28", - "updated": null, - "legacyPath": "/2024/09/28/秋招滴滴面试分享/", - "description": "秋招正式批滴滴技术面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招拼多多面试分享.md", - "title": "秋招拼多多面试分享", - "date": "2024-10-10", - "updated": null, - "legacyPath": "/2024/10/10/秋招拼多多面试分享/", - "description": "秋招正式批拼多多技术面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招科大讯飞面试分享.md", - "title": "秋招科大讯飞面试分享", - "date": "2024-10-12", - "updated": null, - "legacyPath": "/2024/10/12/秋招科大讯飞面试分享/", - "description": "秋招正式批科大讯飞技术面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招荣耀面试分享.md", - "title": "秋招荣耀面试分享", - "date": "2024-10-14", - "updated": null, - "legacyPath": "/2024/10/14/秋招荣耀面试分享/", - "description": "秋招正式批荣耀面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招华为面试分享.md", - "title": "秋招华为面试分享", - "date": "2024-10-15", - "updated": null, - "legacyPath": "/2024/10/15/秋招华为面试分享/", - "description": "秋招正式批华为面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": true, - "html": false, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招携程面试分享.md", - "title": "秋招携程面试分享", - "date": "2024-10-15", - "updated": null, - "legacyPath": "/2024/10/15/秋招携程面试分享/", - "description": "秋招正式批携程面试分享", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招招联面试分享.md", - "title": "秋招招联面试分享", - "date": "2024-10-19", - "updated": null, - "legacyPath": "/2024/10/19/秋招招联面试分享/", - "description": "秋招正式批招联面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": true, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招虾皮面试分享.md", - "title": "秋招虾皮面试分享", - "date": "2024-10-20", - "updated": null, - "legacyPath": "/2024/10/20/秋招虾皮面试分享/", - "description": "秋招正式批虾皮面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": true, - "html": false, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招百信银行面试分享.md", - "title": "秋招百信银行面试分享", - "date": "2024-10-22", - "updated": null, - "legacyPath": "/2024/10/22/秋招百信银行面试分享/", - "description": "秋招正式批百信银行面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": true, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招上海银行面试分享.md", - "title": "秋招上海银行面试分享", - "date": "2024-10-25", - "updated": null, - "legacyPath": "/2024/10/25/秋招上海银行面试分享/", - "description": "秋招正式批上海银行面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招广联达面试分享.md", - "title": "秋招广联达", - "date": "2024-10-31", - "updated": null, - "legacyPath": "/2024/10/31/秋招广联达面试分享/", - "description": "秋招正式批广联达技术面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招蔚来面试分享.md", - "title": "秋招蔚来面试分享", - "date": "2024-11-01", - "updated": null, - "legacyPath": "/2024/11/01/秋招蔚来面试分享/", - "description": "秋招正式批蔚来面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招中金所面试分享.md", - "title": "秋招中金所面试分享", - "date": "2024-11-01", - "updated": null, - "legacyPath": "/2024/11/01/秋招中金所面试分享/", - "description": "秋招正式批中金所面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招金山面试分享.md", - "title": "秋招金山面试分享", - "date": "2024-11-06", - "updated": null, - "legacyPath": "/2024/11/06/秋招金山面试分享/", - "description": "秋招正式批金山技术面试分享。", - "categories": [ - "面试记录" - ], - "tags": [ - "面试记录" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "秋招面试总结分享.md", - "title": "秋招面试总结分享", - "date": "2024-11-30", - "updated": null, - "legacyPath": "/2024/11/30/秋招面试总结分享/", - "description": "秋招结束后的面试总结分享。", - "categories": [ - "面试总结" - ], - "tags": [ - "面试总结" - ], - "flags": { - "mathjax": false, - "html": false, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "现代的包管理工具uv.md", - "title": "现代化的包管理工具:uv", - "date": "2025-04-30", - "updated": null, - "legacyPath": "/2025/04/30/现代的包管理工具uv/", - "description": "秋招正式批拼多多技术面试分享。", - "categories": [ - "技术知识" - ], - "tags": [ - "技术知识" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "Agent上下文工程:从Token管理到终身记忆.md", - "title": "Agent 上下文工程:从 Token 管理到终身记忆", - "date": "2026-05-10", - "updated": null, - "legacyPath": "/2026/05/10/Agent上下文工程:从Token管理到终身记忆/", - "description": "深入探讨 AI Agent 的上下文工程,从 Token 预算管理到三层记忆架构,构建能让 Agent 越用越聪明的记忆系统。", - "categories": [ - "AI技术" - ], - "tags": [ - "Agent" - ], - "flags": { - "mathjax": false, - "html": false, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "hermes-self-evolving-blog-engine.md", - "title": "Hermes 自进化博客引擎:从选题到部署,几十分钟全自动闭环", - "date": "2026-05-13", - "updated": null, - "legacyPath": "/2026/05/13/hermes-self-evolving-blog-engine/", - "description": "作为 Agent 算法工程师,我用 Hermes 搭建了一套从选题到部署全自动的博客流水线——几十分钟完成一篇带 SVG 配图的技术文章,而且每次执行后自动沉淀 Skill,让下次更稳更快。", - "categories": [ - "技术" - ], - "tags": [ - "Hermes", - "Agent", - "自动化", - "博客", - "Skill", - "自进化", - "OpenClaw", - "Claude Code" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "Codex造零件Hermes养系统.md", - "title": "Codex 造零件,Hermes 养系统:我用 Hermes 实践 PassiveAgent 的过程", - "date": "2026-06-10", - "updated": null, - "legacyPath": "/2026/06/10/Codex造零件Hermes养系统/", - "description": "以 PassiveAgent 为案例,记录我如何用 Hermes 作为长期项目工作台,配合 Codex/Claude Code 开发一个个人注意力调度系统,以及对 Agent 自进化和工程化实践的思考。", - "categories": [ - "Agent实践" - ], - "tags": [ - "Agent", - "Hermes", - "PassiveAgent", - "AI工具", - "工程实践" - ], - "flags": { - "mathjax": false, - "html": false, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "SkillEvolver自进化实验复盘.md", - "title": "SkillEvolver 复盘:自进化没有成功,但评测框架留下来了", - "date": "2026-06-20", - "updated": null, - "legacyPath": "/2026/06/20/SkillEvolver自进化实验复盘/", - "description": "复盘我做 SkillEvolver 自进化项目的全过程:从“让 Prompt Skill 自动变强”的期待,到发现正结果被消融收窄、跨模型迁移为零,最后把项目重新定位为 Agent / Prompt Skill 回归评测框架。", - "categories": [ - "Agent实践" - ], - "tags": [ - "Agent", - "SkillEvolver", - "自进化", - "Agent评测", - "Prompt工程", - "负结果", - "工程实践" - ], - "flags": { - "mathjax": false, - "html": false, - "code": true, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - }, - { - "filename": "当文明踩下加速踏板之后.md", - "title": "当文明踩下加速踏板之后", - "date": "2026-08-29", - "updated": null, - "legacyPath": "/2026/08/29/当文明踩下加速踏板之后/", - "description": "从童年对动能回收的疑问出发,思考费米悖论、衰老与长寿、人工智能、商业航天和文明的自我约束:当人类不断突破自然边界,我们是否具备承担这些突破的能力?", - "categories": [ - "随笔" - ], - "tags": [ - "人类文明", - "科技", - "人工智能", - "费米悖论", - "航天", - "长寿" - ], - "flags": { - "mathjax": false, - "html": false, - "code": false, - "hexoTag": false - }, - "copyright_author": "Jack Zhu", - "hasDescription": true - } -] diff --git a/migration/image-audit.json b/migration/image-audit.json deleted file mode 100644 index fb01720d6..000000000 --- a/migration/image-audit.json +++ /dev/null @@ -1,1282 +0,0 @@ -{ - "images": [ - { - "url": "https://cdn.nlark.com/yuque/0/2024/jpeg/1574965/1714410444470-9305c89b-aa36-4998-b623-9c3b1c0caf41.jpeg#clientId=u8884b877-175c-4&from=paste&id=u1cb9436b&originHeight=196&originWidth=467&originalType=url&ratio=1&rotation=0&showTitle=false&size=6239&status=done&style=none&taskId=ud1d4d6ec-170b-458b-a212-499e5614e66&title=", - "domain": "cdn.nlark.com", - "referencedBy": [ - "淘天暑期实习面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://cdn.nlark.com/yuque/0/2024/jpeg/1574965/1714410444477-8e426dd3-37ed-473f-ab5f-7d445ed7592b.jpeg#clientId=u8884b877-175c-4&from=paste&id=u147acd2d&originHeight=75&originWidth=390&originalType=url&ratio=1&rotation=0&showTitle=false&size=4542&status=done&style=none&taskId=u5130429b-212c-4651-83d6-557bf8c86d9&title=", - "domain": "cdn.nlark.com", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://cdn.nlark.com/yuque/0/2024/jpeg/1574965/1714410444594-19c3638e-08f5-4a3c-b392-afed682a17a1.jpeg#clientId=u8884b877-175c-4&from=paste&id=udd8910f7&originHeight=185&originWidth=482&originalType=url&ratio=1&rotation=0&showTitle=false&size=8952&status=done&style=none&taskId=u082ebbba-f43b-4beb-9b72-69ac67eb0ef&title=", - "domain": "cdn.nlark.com", - "referencedBy": [ - "淘天暑期实习面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://cdn.nlark.com/yuque/0/2024/jpeg/1574965/1714410444607-da855304-da72-4fa6-8f9b-fd9cf3440b94.jpeg#clientId=u8884b877-175c-4&from=paste&id=ud89f8e75&originHeight=59&originWidth=273&originalType=url&ratio=1&rotation=0&showTitle=false&size=2641&status=done&style=none&taskId=ub3f3a342-b73d-485d-8964-e14e29f56aa&title=", - "domain": "cdn.nlark.com", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://cdn.nlark.com/yuque/0/2024/jpeg/1574965/1714410444701-894badfa-d3a2-4f1b-ac27-42ec384fcb6e.jpeg#clientId=u8884b877-175c-4&from=paste&id=ub19aa012&originHeight=423&originWidth=670&originalType=url&ratio=1&rotation=0&showTitle=false&size=45178&status=done&style=none&taskId=u4c4ffcc6-6980-4366-84f1-ac4104983cd&title=", - "domain": "cdn.nlark.com", - "referencedBy": [ - "淘天暑期实习面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://cdn.noedgeai.com/13b8aff7-d660-486b-8d4a-83244a4fc29c_5.jpg?x=181&y=341&w=479&h=254", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——FCM 聚类的实现.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/34077bd4-b209-4949-97d0-44f33cab3459_2.jpg?x=251&y=680&w=342&h=294", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习报告——高光谱遥感特征选择.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_10.jpg?x=187&y=566&w=462&h=333", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_10.jpg?x=188&y=142&w=461&h=332", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_11.jpg?x=186&y=126&w=464&h=333", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_11.jpg?x=186&y=635&w=464&h=334", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_12.jpg?x=186&y=522&w=462&h=331", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_12.jpg?x=187&y=95&w=462&h=332", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_13.jpg?x=186&y=126&w=464&h=334", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_13.jpg?x=186&y=635&w=463&h=333", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_14.jpg?x=186&y=126&w=463&h=333", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_14.jpg?x=187&y=635&w=463&h=332", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_15.jpg?x=185&y=63&w=466&h=333", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_15.jpg?x=187&y=493&w=463&h=333", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_16.jpg?x=186&y=126&w=464&h=334", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_16.jpg?x=189&y=640&w=459&h=324", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_17.jpg?x=187&y=165&w=469&h=258", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_17.jpg?x=187&y=591&w=468&h=258", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_9.jpg?x=187&y=467&w=466&h=238", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_9.jpg?x=188&y=768&w=465&h=253", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/373f4192-7bc0-4d1c-9d14-e9c31dcc7467_9.jpg?x=192&y=76&w=457&h=320", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习课程报告——波士顿房价预测.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_10.jpg?x=128&y=477&w=583&h=240", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_10.jpg?x=129&y=61&w=583&h=234", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_11.jpg?x=131&y=422&w=583&h=235", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_11.jpg?x=131&y=62&w=582&h=235", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_12.jpg?x=132&y=368&w=579&h=239", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_12.jpg?x=133&y=62&w=579&h=238", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_4.jpg?x=131&y=649&w=580&h=232", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_5.jpg?x=131&y=94&w=580&h=235", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_5.jpg?x=133&y=466&w=577&h=238", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_6.jpg?x=130&y=62&w=581&h=238", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_6.jpg?x=131&y=774&w=579&h=236", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_7.jpg?x=131&y=199&w=579&h=238", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_7.jpg?x=131&y=529&w=579&h=237", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_8.jpg?x=133&y=365&w=577&h=235", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_8.jpg?x=133&y=62&w=578&h=235", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_9.jpg?x=131&y=404&w=580&h=233", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a33d2563-22a5-40a9-9c0b-dd358f6aff7d_9.jpg?x=157&y=62&w=524&h=211", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "数据挖掘报告——MIMC数据集的预处理.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a5fee367-df47-4713-89f7-58942dcd50cc_10.jpg?x=131&y=96&w=581&h=394", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习上机报告——聚类分析.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a5fee367-df47-4713-89f7-58942dcd50cc_10.jpg?x=132&y=606&w=580&h=391", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习上机报告——聚类分析.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a5fee367-df47-4713-89f7-58942dcd50cc_11.jpg?x=131&y=64&w=579&h=300", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习上机报告——聚类分析.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a5fee367-df47-4713-89f7-58942dcd50cc_11.jpg?x=147&y=584&w=250&h=187", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习上机报告——聚类分析.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a5fee367-df47-4713-89f7-58942dcd50cc_11.jpg?x=429&y=584&w=255&h=187", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习上机报告——聚类分析.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a5fee367-df47-4713-89f7-58942dcd50cc_12.jpg?x=143&y=714&w=255&h=186", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习上机报告——聚类分析.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a5fee367-df47-4713-89f7-58942dcd50cc_12.jpg?x=153&y=206&w=245&h=187", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习上机报告——聚类分析.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a5fee367-df47-4713-89f7-58942dcd50cc_12.jpg?x=431&y=715&w=255&h=186", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习上机报告——聚类分析.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a5fee367-df47-4713-89f7-58942dcd50cc_12.jpg?x=432&y=205&w=251&h=189", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习上机报告——聚类分析.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a5fee367-df47-4713-89f7-58942dcd50cc_13.jpg?x=150&y=139&w=248&h=187", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习上机报告——聚类分析.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a5fee367-df47-4713-89f7-58942dcd50cc_13.jpg?x=437&y=140&w=246&h=187", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习上机报告——聚类分析.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/a5fee367-df47-4713-89f7-58942dcd50cc_9.jpg?x=134&y=473&w=577&h=303", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习上机报告——聚类分析.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/d053b280-ea92-40ab-9212-b8dc526c4b19_3.jpg?x=158&y=61&w=520&h=338", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习报告——数据分类的实现.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/d053b280-ea92-40ab-9212-b8dc526c4b19_4.jpg?x=133&y=64&w=574&h=239", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "机器学习报告——数据分类的实现.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e291bc60-ee22-4de1-aca0-eb54cd5a99af_6.jpg?x=242&y=62&w=409&h=397", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——遗传算法的实现.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e291bc60-ee22-4de1-aca0-eb54cd5a99af_7.jpg?x=189&y=643&w=442&h=348", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——遗传算法的实现.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e291bc60-ee22-4de1-aca0-eb54cd5a99af_7.jpg?x=193&y=172&w=415&h=275", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——遗传算法的实现.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e61111d4-9579-4d1a-b6be-0d3a5e039cb8_5.jpg?x=152&y=415&w=246&h=196", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——感知器实现二分类.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e61111d4-9579-4d1a-b6be-0d3a5e039cb8_5.jpg?x=153&y=744&w=243&h=196", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——感知器实现二分类.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e61111d4-9579-4d1a-b6be-0d3a5e039cb8_5.jpg?x=437&y=414&w=248&h=196", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——感知器实现二分类.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e61111d4-9579-4d1a-b6be-0d3a5e039cb8_5.jpg?x=438&y=744&w=247&h=195", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——感知器实现二分类.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e61111d4-9579-4d1a-b6be-0d3a5e039cb8_6.jpg?x=142&y=228&w=257&h=194", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——感知器实现二分类.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e61111d4-9579-4d1a-b6be-0d3a5e039cb8_6.jpg?x=142&y=531&w=256&h=197", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——感知器实现二分类.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e61111d4-9579-4d1a-b6be-0d3a5e039cb8_6.jpg?x=430&y=227&w=256&h=197", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——感知器实现二分类.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e61111d4-9579-4d1a-b6be-0d3a5e039cb8_6.jpg?x=430&y=531&w=254&h=196", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——感知器实现二分类.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e61111d4-9579-4d1a-b6be-0d3a5e039cb8_7.jpg?x=178&y=475&w=474&h=254", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——感知器实现二分类.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e61111d4-9579-4d1a-b6be-0d3a5e039cb8_7.jpg?x=183&y=79&w=473&h=203", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——感知器实现二分类.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://cdn.noedgeai.com/e61111d4-9579-4d1a-b6be-0d3a5e039cb8_8.jpg?x=180&y=83&w=473&h=255", - "domain": "cdn.noedgeai.com", - "referencedBy": [ - "计算智能导论作业——感知器实现二分类.md" - ], - "httpStatus": null, - "status": "broken", - "disposition": "待恢复" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/11d5911824c8fffcda4e77dfbee6164e.jpeg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "秋招中兴面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/15c68ad5ba57c4307aaf8b5475c4205.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "秋招淘天面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303020755.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303020837.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303020935.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303021139.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303021234.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240430181423.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "淘天暑期实习面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240522153311.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "钉钉和淘天机器学习捞暑期实习面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240528110403.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "腾讯AI Lab暑实面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240528131347.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "阿里国际暑实面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240528131547.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "钉钉和淘天机器学习捞暑期实习面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240530145109.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "腾讯AI Lab暑实面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240531013518.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20241017224856.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "秋招华为面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/3d0afaab4a49212c06ee3d91bc12e82.jpg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "秋招华为面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/7162652ed15d942a69859975d27f38d.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "秋招金山面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/action_structure.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "学术交流分享ActionFormer.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/agent-framework-comparison.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "hermes-self-evolving-blog-engine.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/agent-memory-architecture.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Agent上下文工程:从Token管理到终身记忆.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/base_ActionFormer.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "学术交流分享ActionFormer.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/capability-wisdom-gap.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "当文明踩下加速踏板之后.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/civilization-acceleration-cover.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "当文明踩下加速踏板之后.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/civilization-boundaries-v2.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "当文明踩下加速踏板之后.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/f0e470325b3d2276037b6d9878231f6.jpg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "秋招比亚迪面试分享.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/from-earth-to-stars.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "当文明踩下加速踏板之后.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/hermes-blog-engine-cover.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "hermes-self-evolving-blog-engine.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/HRnet1.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "HRNet.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/HRnet2.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "HRNet.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/hybrid-retrieval.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Agent上下文工程:从Token管理到终身记忆.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/image2.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "服务器常见技术问题与技巧.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/image3.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "服务器常见技术问题与技巧.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/image4.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "服务器常见技术问题与技巧.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/image5.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "服务器常见技术问题与技巧.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/loss_actionformer.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "学术交流分享ActionFormer.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/lost-in-middle-chart.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Agent上下文工程:从Token管理到终身记忆.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/passiveagent-hermes-architecture.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Codex造零件Hermes养系统.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/passiveagent-hermes-cover.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Codex造零件Hermes养系统.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/passiveagent-hermes-evolution-loop.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Codex造零件Hermes养系统.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/skillevolver-claim-funnel.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "SkillEvolver自进化实验复盘.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/skillevolver-eval-cover.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "SkillEvolver自进化实验复盘.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/skillevolver-pivot-roadmap.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "SkillEvolver自进化实验复盘.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/skillevolver-routing-harness.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "SkillEvolver自进化实验复盘.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/tal_input.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "学术交流分享ActionFormer.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/tal_pwc.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "学术交流分享ActionFormer.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/token-budget-chart.svg", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Agent上下文工程:从Token管理到终身记忆.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102136053.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102136125.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102136735.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102136894.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102137133.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102137141.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102137217.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102137818.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102137992.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - }, - { - "url": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102138180.png", - "domain": "gcore.jsdelivr.net", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ], - "httpStatus": 200, - "status": "ok", - "disposition": "保留" - } - ], - "summary": { - "total": 127, - "broken": 66, - "ok": 61, - "unknown": 0 - } -} diff --git a/migration/link-audit.json b/migration/link-audit.json deleted file mode 100644 index 746d9e78b..000000000 --- a/migration/link-audit.json +++ /dev/null @@ -1,618 +0,0 @@ -{ - "internalLinks": [ - { - "url": "https://jackzhu.top", - "referencedBy": [ - "Agent上下文工程:从Token管理到终身记忆.md" - ] - } - ], - "externalLinks": [ - { - "url": "https://adsabs.harvard.edu/pdf/1964SvA.....8..217K", - "referencedBy": [ - "当文明踩下加速踏板之后.md" - ] - }, - { - "url": "https://blog.csdn.net/xiaoyuxin1/article/details/124526430", - "referencedBy": [ - "服务器常见技术问题与技巧.md" - ] - }, - { - "url": "https://developer.nvidia.com/cuda-downloads", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ] - }, - { - "url": "https://developer.nvidia.com/cudnn", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ] - }, - { - "url": "https://developer.nvidia.com/rdp/cudnn-archive#a-collapse742-10", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ] - }, - { - "url": "https://doi.org/10.1016/j.cell.2022.11.001", - "referencedBy": [ - "当文明踩下加速踏板之后.md" - ] - }, - { - "url": "https://download.pytorch.org/whl/torch_stable.html", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ] - }, - { - "url": "https://github.com/CoderJackZhu/XD-AI-graduate_entrance_exam", - "referencedBy": [ - "今日随笔.md" - ] - }, - { - "url": "https://github.com/settings/keys", - "referencedBy": [ - "服务器常见技术问题与技巧.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483686&idx=1&sn=79b3d0eb8a034cf7fe8746cd5e362899&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483697&idx=1&sn=82e8cbb46aa2a0a656ae6f76ed225b03&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483713&idx=1&sn=c90af03630f92999eed214d5dc9f06a3&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483723&idx=1&sn=baa9b82a7ac4f12e936ff8b58dcf8977&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483731&idx=1&sn=08cb4b390e80f3ca4a1e0fa2dd5a3020&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483745&idx=1&sn=ee37c895b25bf2a1f8387edf1d687e30&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483750&idx=1&sn=18d9c270e8d58a32dc4792fbc5f8f6e8&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483757&idx=1&sn=79394fd14e39948d1fc98aa09e031561&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483773&idx=1&sn=003c347fc05e1a3fa4328ac09dddb797&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483790&idx=1&sn=308fb18b66cc66b78f7e15822cdd6eff&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483839&idx=1&sn=b66447f92f4dbfa8be7922f53aa8ba4b&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483853&idx=2&sn=f717767538329ce17325de72aa58ba1b&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483862&idx=1&sn=0dc0ee080532d397b2b00bdd20c86260&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483884&idx=1&sn=e1f4d13589606786f2d2467e11b4e2dc&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483896&idx=1&sn=6b79f7eb585cc1d91a1f61010941477c&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483919&idx=1&sn=c9a530ecce9e60af4fad4c06062ec9ce&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483942&idx=1&sn=a5ba1da8459df0b76e1ea70bfa4dc068&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s?__biz=MzkyNTY0Mjg0OQ==&mid=2247483957&idx=1&sn=abec4b75b9865b754f8a303c340c13a3&scene=21#wechat_redirect", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://mp.weixin.qq.com/s/TAFvUlqdyqP-W6C10F1Hzw", - "referencedBy": [ - "淘天暑期实习面试分享.md", - "秋招面试总结分享.md" - ] - }, - { - "url": "https://pytorch.org/", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ] - }, - { - "url": "https://www.anaconda.com/products/individual", - "referencedBy": [ - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md" - ] - }, - { - "url": "https://www.cnblogs.com/2012blog/p/9431432.html", - "referencedBy": [ - "服务器常见技术问题与技巧.md" - ] - }, - { - "url": "https://www.cnblogs.com/phoenixzq/p/3539619.html", - "referencedBy": [ - "机器学习报告——数据分类的实现.md" - ] - }, - { - "url": "https://www.engineering.org.cn/engi/CN/PDF/10.1016/j.eng.2023.11.007", - "referencedBy": [ - "当文明踩下加速踏板之后.md" - ] - }, - { - "url": "https://www.nature.com/articles/s41586-021-03819-2", - "referencedBy": [ - "当文明踩下加速踏板之后.md" - ] - }, - { - "url": "https://www.spacex.com/vehicles/falcon-9", - "referencedBy": [ - "当文明踩下加速踏板之后.md" - ] - }, - { - "url": "https://zhuanlan.zhihu.com/p/38269530", - "referencedBy": [ - "机器学习报告——数据分类的实现.md" - ] - }, - { - "url": "https://zhuanlan.zhihu.com/p/570747928?utm_id=0", - "referencedBy": [ - "服务器常见技术问题与技巧.md" - ] - } - ], - "specialLinks": [ - { - "url": "mailto:git@github.com", - "referencedBy": [ - "服务器常见技术问题与技巧.md" - ] - } - ], - "friendLinks": [ - { - "name": "六个骨头", - "link": "https://sixbones.dev/", - "avatar": "https://raw.githubusercontent.com/zrr1999/hosting/main/images/avatar.png", - "descr": "飞桨开发者专家", - "group": "友情链接" - }, - { - "name": "散步", - "link": "https://www.aispacewalk.cn/", - "avatar": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240311234109.png", - "descr": "开源社区算法工程师", - "group": "友情链接" - }, - { - "name": "Evan CHEN", - "link": "https://lhchen.top/", - "avatar": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/_8RG~~1E221F8I(K2FUV4KJ.bmp", - "descr": "直博清深的图表示学习、语音驱动、动作生成大牛", - "group": "友情链接" - }, - { - "name": "BB酱", - "link": "https://www.bbbbchan.com/", - "avatar": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/bb.jpg", - "descr": "南开大学分割领域强者", - "group": "友情链接" - }, - { - "name": "sund", - "link": "http://www.sund-xys.cn/", - "avatar": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/sund.jpg", - "descr": "西交网络&无线&侧信道大爹", - "group": "友情链接" - }, - { - "name": "冉崇治", - "link": "http://resetran.top/", - "avatar": "https://gcore.jsdelivr.net/gh/ranchongzhi/ranchongzhi.github.io@master/medias/logo.png", - "descr": "王者打野贼溜的NeRF研究者", - "group": "友情链接" - }, - { - "name": "冯玉龙", - "link": "http://bestxinyu.com/", - "avatar": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/feng.jpg", - "descr": "又一个大佬", - "group": "友情链接" - }, - { - "name": "西电浪潮俱乐部", - "link": "http://www.xdu-inspur.cn", - "avatar": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/inspur.jpg", - "descr": "在西电的技术性交流社团", - "group": "友情链接" - }, - { - "name": "破碎羽翼", - "link": "https://miroier.github.io/", - "avatar": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/4349b3624507ab566092929d1f0cb9d3_1.jpg", - "descr": "中科院软件所破碎羽翼", - "group": "友情链接" - }, - { - "name": "跟李沐学AI的入门课", - "link": "https://space.bilibili.com/1567748478/channel/seriesdetail?sid=358497", - "avatar": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20221004001647.png", - "descr": "视频网站", - "group": "网站" - }, - { - "name": "OpenMMLab", - "link": "https://openmmlab.com/", - "avatar": "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/httpsi.loli.net202005145VyHPQqR6LWF39a.png.png", - "descr": "比较综合性的AI框架", - "group": "网站" - } - ], - "legacyAggregatePaths": [ - { - "path": "/Gallery/", - "disposition": "移除/404" - }, - { - "path": "/archives/", - "disposition": "移除/404" - }, - { - "path": "/archives/2020/", - "disposition": "移除/404" - }, - { - "path": "/archives/2020/10/", - "disposition": "移除/404" - }, - { - "path": "/archives/2021/", - "disposition": "移除/404" - }, - { - "path": "/archives/2021/04/", - "disposition": "移除/404" - }, - { - "path": "/archives/2021/05/", - "disposition": "移除/404" - }, - { - "path": "/archives/2021/06/", - "disposition": "移除/404" - }, - { - "path": "/archives/2021/12/", - "disposition": "移除/404" - }, - { - "path": "/archives/2022/", - "disposition": "移除/404" - }, - { - "path": "/archives/2022/04/", - "disposition": "移除/404" - }, - { - "path": "/archives/2022/05/", - "disposition": "移除/404" - }, - { - "path": "/archives/2022/09/", - "disposition": "移除/404" - }, - { - "path": "/archives/2022/11/", - "disposition": "移除/404" - }, - { - "path": "/archives/2023/", - "disposition": "移除/404" - }, - { - "path": "/archives/2023/02/", - "disposition": "移除/404" - }, - { - "path": "/archives/2023/09/", - "disposition": "移除/404" - }, - { - "path": "/archives/2024/", - "disposition": "移除/404" - }, - { - "path": "/archives/2024/03/", - "disposition": "移除/404" - }, - { - "path": "/archives/2024/04/", - "disposition": "移除/404" - }, - { - "path": "/archives/2024/05/", - "disposition": "移除/404" - }, - { - "path": "/archives/2024/08/", - "disposition": "移除/404" - }, - { - "path": "/archives/2024/09/", - "disposition": "移除/404" - }, - { - "path": "/archives/2024/10/", - "disposition": "移除/404" - }, - { - "path": "/archives/2024/11/", - "disposition": "移除/404" - }, - { - "path": "/archives/2024/page/2/", - "disposition": "移除/404" - }, - { - "path": "/archives/2024/page/3/", - "disposition": "移除/404" - }, - { - "path": "/archives/2024/page/4/", - "disposition": "移除/404" - }, - { - "path": "/archives/2025/", - "disposition": "移除/404" - }, - { - "path": "/archives/2025/04/", - "disposition": "移除/404" - }, - { - "path": "/archives/2026/", - "disposition": "移除/404" - }, - { - "path": "/archives/2026/05/", - "disposition": "移除/404" - }, - { - "path": "/archives/2026/06/", - "disposition": "移除/404" - }, - { - "path": "/archives/2026/08/", - "disposition": "移除/404" - }, - { - "path": "/archives/page/2/", - "disposition": "移除/404" - }, - { - "path": "/archives/page/3/", - "disposition": "移除/404" - }, - { - "path": "/archives/page/4/", - "disposition": "移除/404" - }, - { - "path": "/archives/page/5/", - "disposition": "移除/404" - }, - { - "path": "/archives/page/6/", - "disposition": "移除/404" - }, - { - "path": "/movies/", - "disposition": "移除/404" - }, - { - "path": "/music/", - "disposition": "移除/404" - }, - { - "path": "/page/2/", - "disposition": "移除/404" - }, - { - "path": "/page/3/", - "disposition": "移除/404" - }, - { - "path": "/page/4/", - "disposition": "移除/404" - }, - { - "path": "/page/5/", - "disposition": "移除/404" - }, - { - "path": "/page/6/", - "disposition": "移除/404" - }, - { - "path": "/photos/", - "disposition": "移除/404" - }, - { - "path": "/tags/", - "disposition": "移除/404" - }, - { - "path": "/tags/ActionFormer/", - "disposition": "移除/404" - }, - { - "path": "/tags/Agent-Hermes-PassiveAgent-AI工具-工程实践/", - "disposition": "移除/404" - }, - { - "path": "/tags/Agent-SkillEvolver-自进化-Agent评测-Prompt工程-负结果-工程实践/", - "disposition": "移除/404" - }, - { - "path": "/tags/Agent/", - "disposition": "移除/404" - }, - { - "path": "/tags/Hermes-Agent-自动化-博客-Skill-自进化-OpenClaw-Claude-Code/", - "disposition": "移除/404" - }, - { - "path": "/tags/Ubuntu/", - "disposition": "移除/404" - }, - { - "path": "/tags/人类文明-科技-人工智能-费米悖论-航天-长寿/", - "disposition": "移除/404" - }, - { - "path": "/tags/博客配置/", - "disposition": "移除/404" - }, - { - "path": "/tags/技术知识/", - "disposition": "移除/404" - }, - { - "path": "/tags/技术问题/", - "disposition": "移除/404" - }, - { - "path": "/tags/数据挖掘/", - "disposition": "移除/404" - }, - { - "path": "/tags/机器学习/", - "disposition": "移除/404" - }, - { - "path": "/tags/深度学习/", - "disposition": "移除/404" - }, - { - "path": "/tags/生活/", - "disposition": "移除/404" - }, - { - "path": "/tags/计算智能/", - "disposition": "移除/404" - }, - { - "path": "/tags/记录生活/", - "disposition": "移除/404" - }, - { - "path": "/tags/随笔/", - "disposition": "移除/404" - }, - { - "path": "/tags/面试总结/", - "disposition": "移除/404" - }, - { - "path": "/tags/面试记录/", - "disposition": "移除/404" - }, - { - "path": "/tags/面试记录/page/2/", - "disposition": "移除/404" - }, - { - "path": "/tags/面试记录/page/3/", - "disposition": "移除/404" - } - ] -} diff --git a/migration/manual-review.md b/migration/manual-review.md deleted file mode 100644 index 63fe6d893..000000000 --- a/migration/manual-review.md +++ /dev/null @@ -1,183 +0,0 @@ -# 图片处置清单(Phase E 第一步) - -> 本清单为只读审计结果,仅生成 `migration/manual-review.md`,未改动 `src/content/blog` 下任何文章。 -> 失效域 `cdn.noedgeai.com` 共 66 条 URL 引用,分布在 8 篇文章;按底层 UUID 去重后共 33 张原始截图。 -> 处置建议含义:`remove` = 直接删除失效图引用(装饰性/重复);`note` = 删除失效图引用,并在原位置补一句简短说明(图承载实验结果,删除会导致正文读不通)。 - -## 总览 - -| 文章 | legacyPath | URL 引用数 | 底层截图数 | note | remove | -| --- | --- | ---: | ---: | ---: | ---: | -| 计算智能导论作业——FCM 聚类的实现 | /2021/05/30/计算智能导论作业——FCM 聚类的实现/ | 1 | 1 | 1 | 0 | -| 机器学习作业——高光谱遥感特征选择 | /2021/04/28/机器学习报告——高光谱遥感特征选择/ | 1 | 1 | 1 | 0 | -| 机器学习报告——数据分类的实现 | /2021/04/11/机器学习报告——数据分类的实现/ | 2 | 2 | 2 | 0 | -| 机器学习课程报告——波士顿房价预测 | /2021/06/18/机器学习课程报告——波士顿房价预测/ | 19 | 9 | 19 | 0 | -| 数据挖掘报告——MIMC数据集的预处理 | /2021/04/08/数据挖掘报告——MIMC数据集的预处理/ | 17 | 9 | 17 | 0 | -| 机器学习上机报告——聚类分析 | /2021/05/23/机器学习上机报告——聚类分析/ | 12 | 5 | 12 | 0 | -| 计算智能导论作业——遗传算法的实现 | /2021/04/16/计算智能导论作业——遗传算法的实现/ | 3 | 2 | 3 | 0 | -| 计算智能导论作业——感知器实现二分类 | /2021/05/30/计算智能导论作业——感知器实现二分类/ | 11 | 4 | 11 | 0 | -| **合计** | | **66** | **33** | **66** | **0** | - -说明:本次 8 篇均为课程报告/作业,失效图全部是实验结果截图、代码输出图或数据可视化图,未发现可判为装饰性或重复的图片,因此建议全部采用 `note`。处置实现待用户确认后再改文章。 - ---- - -## 1. 计算智能导论作业——FCM 聚类的实现 - -- 标题:计算智能导论作业——FCM 聚类的实现 -- legacyPath:`/2021/05/30/计算智能导论作业——FCM 聚类的实现/` -- 失效图:底层截图 1 张 / URL 引用 1 条 -- 处置统计:note 1 / remove 0 - -引用清单: - -- L167 `13b8aff7-d660-486b-8d4a-83244a4fc29c_5.jpg?x=181&y=341&w=479&h=254`(图 1:结果图;实验结果截图,FCM 聚类结果)→ note - ---- - -## 2. 机器学习作业——高光谱遥感特征选择 - -- 标题:机器学习作业——高光谱遥感特征选择 -- legacyPath:`/2021/04/28/机器学习报告——高光谱遥感特征选择/` -- 失效图:底层截图 1 张 / URL 引用 1 条 -- 处置统计:note 1 / remove 0 - -引用清单: - -- L51 `34077bd4-b209-4949-97d0-44f33cab3459_2.jpg?x=251&y=680&w=342&h=294`(图 1:KSC 数据预览图;数据可视化)→ note - ---- - -## 3. 机器学习报告——数据分类的实现 - -- 标题:机器学习报告——数据分类的实现 -- legacyPath:`/2021/04/11/机器学习报告——数据分类的实现/` -- 失效图:底层截图 2 张 / URL 引用 2 条 -- 处置统计:note 2 / remove 0 - -引用清单: - -- L81 `d053b280-ea92-40ab-9212-b8dc526c4b19_3.jpg?x=158&y=61&w=520&h=338`(图 1:sigmoid 函数图像;代码输出图/函数可视化)→ note -- L103 `d053b280-ea92-40ab-9212-b8dc526c4b19_4.jpg?x=133&y=64&w=574&h=239`(图 2:logistic 分类结果;实验结果截图)→ note - ---- - -## 4. 机器学习课程报告——波士顿房价预测 - -- 标题:机器学习课程报告——波士顿房价预测 -- legacyPath:`/2021/06/18/机器学习课程报告——波士顿房价预测/` -- 失效图:底层截图 9 张 / URL 引用 19 条 -- 处置统计:note 19 / remove 0 - -引用清单: - -- L299 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_9.jpg?x=192&y=76&w=457&h=320`(图 1:特征直方图;数据可视化)→ note -- L303 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_9.jpg?x=187&y=467&w=466&h=238`(图 2:盒图;数据可视化)→ note -- L307 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_9.jpg?x=188&y=768&w=465&h=253`(图 3:特征相关性热力图;数据可视化)→ note -- L313 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_10.jpg?x=188&y=142&w=461&h=332`(图 4:犯罪率相关图;数据可视化)→ note -- L319 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_10.jpg?x=187&y=566&w=462&h=333`(图 5:住宅用地比例图;数据可视化)→ note -- L328 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_11.jpg?x=186&y=126&w=464&h=333`(图 6:城镇非商业用地比例图;数据可视化)→ note -- L332 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_11.jpg?x=186&y=635&w=464&h=334`(图 7:是否处于查尔斯河边图;数据可视化)→ note -- L337 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_12.jpg?x=187&y=95&w=462&h=332`(图 8:一氧化氮浓度相关图;数据可视化)→ note -- L343 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_12.jpg?x=186&y=522&w=462&h=331`(图 9:每栋住宅房间数图;数据可视化)→ note -- L352 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_13.jpg?x=186&y=126&w=464&h=334`(图 10:1940 年前建成业主自住比例图;数据可视化)→ note -- L356 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_13.jpg?x=186&y=635&w=463&h=333`(图 11:距离 5 个波士顿就业中心的距离图;数据可视化)→ note -- L359 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_14.jpg?x=186&y=126&w=463&h=333`(图 12:距离高速公路的便利指数图;数据可视化)→ note -- L363 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_14.jpg?x=187&y=635&w=463&h=332`(图 13:每一万美元的不动产税率图;数据可视化)→ note -- L366 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_15.jpg?x=185&y=63&w=466&h=333`(图 14:城镇中学教师比例图;数据可视化)→ note -- L372 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_15.jpg?x=187&y=493&w=463&h=333`(图 15:黑人比例图;数据可视化)→ note -- L384 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_16.jpg?x=186&y=126&w=464&h=334`(图 16:低收入阶层占比图;数据可视化)→ note -- L388 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_16.jpg?x=189&y=640&w=459&h=324`(图 17:迭代过程损失变化图;实验结果截图)→ note -- L395 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_17.jpg?x=187&y=165&w=469&h=258`(图 18:神经网络预测值与准确率对比图;实验结果截图)→ note -- L403 `373f4192-7bc0-4d1c-9d14-e9c31dcc7467_17.jpg?x=187&y=591&w=468&h=258`(图 19:线性模型预测值与准确率对比图;实验结果截图)→ note - ---- - -## 5. 数据挖掘报告——MIMC数据集的预处理 - -- 标题:数据挖掘报告——MIMC数据集的预处理 -- legacyPath:`/2021/04/08/数据挖掘报告——MIMC数据集的预处理/` -- 失效图:底层截图 9 张 / URL 引用 17 条 -- 处置统计:note 17 / remove 0 - -引用清单: - -- L121 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_4.jpg?x=131&y=649&w=580&h=232`(图 3:离群点处理前;数据可视化)→ note -- L130 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_5.jpg?x=131&y=94&w=580&h=235`(图 4:离群点处理后;数据可视化)→ note -- L138 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_5.jpg?x=133&y=466&w=577&h=238`(图 5:一部分去噪前;数据可视化)→ note -- L143 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_6.jpg?x=130&y=62&w=581&h=238`(图 6:二部分去噪前;数据可视化)→ note -- L170 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_6.jpg?x=131&y=774&w=579&h=236`(图 7:二部分去噪后;数据可视化)→ note -- L178 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_7.jpg?x=131&y=199&w=579&h=238`(图 8:样本三第二部分部分数据插值前;数据可视化)→ note -- L184 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_7.jpg?x=131&y=529&w=579&h=237`(图 9:样本三第二部分部分数据插值后;数据可视化)→ note -- L193 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_8.jpg?x=133&y=62&w=578&h=235`(图 10:第二组数据离群点处理前;数据可视化)→ note -- L197 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_8.jpg?x=133&y=365&w=577&h=235`(图 11:第二组数据离群点处理后;数据可视化)→ note -- L202 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_9.jpg?x=157&y=62&w=524&h=211`(图 12:第二组数据去噪处理后;数据可视化)→ note -- L209 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_9.jpg?x=131&y=404&w=580&h=233`(图 13:第二组数据插值前;数据可视化)→ note -- L212 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_10.jpg?x=129&y=61&w=583&h=234`(图 14:第二组数据插值后;数据可视化)→ note -- L220 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_10.jpg?x=128&y=477&w=583&h=240`(图 15:第三组数据去离群点前;数据可视化)→ note -- L223 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_11.jpg?x=131&y=62&w=582&h=235`(图 16:第三组数据去离群点后;数据可视化)→ note -- L229 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_11.jpg?x=131&y=422&w=583&h=235`(图 17:第三组数据去噪后;数据可视化)→ note -- L234 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_12.jpg?x=133&y=62&w=579&h=238`(图 18:第三组数据插值前;数据可视化)→ note -- L238 `a33d2563-22a5-40a9-9c0b-dd358f6aff7d_12.jpg?x=132&y=368&w=579&h=239`(图 19:第三组数据插值后;数据可视化)→ note - ---- - -## 6. 机器学习上机报告——聚类分析 - -- 标题:机器学习上机报告——聚类分析 -- legacyPath:`/2021/05/23/机器学习上机报告——聚类分析/` -- 失效图:底层截图 5 张 / URL 引用 12 条 -- 处置统计:note 12 / remove 0 - -引用清单: - -- L305 `a5fee367-df47-4713-89f7-58942dcd50cc_9.jpg?x=134&y=473&w=577&h=303`(图 1:kmeans 对 Iris 的聚类效果;实验结果截图)→ note -- L319 `a5fee367-df47-4713-89f7-58942dcd50cc_10.jpg?x=131&y=96&w=581&h=394`(图 2:聚类前的原图;实验结果截图)→ note -- L323 `a5fee367-df47-4713-89f7-58942dcd50cc_10.jpg?x=132&y=606&w=580&h=391`(图 3:kmeans 对图像的聚类效果;实验结果截图)→ note -- L326 `a5fee367-df47-4713-89f7-58942dcd50cc_11.jpg?x=131&y=64&w=579&h=300`(图 4:kmeans 对图片的聚类效果降维展示;实验结果截图)→ note -- L337 `a5fee367-df47-4713-89f7-58942dcd50cc_11.jpg?x=147&y=584&w=250&h=187`(图 5:密度聚类 1;实验结果截图)→ note -- L341 `a5fee367-df47-4713-89f7-58942dcd50cc_11.jpg?x=429&y=584&w=255&h=187`(图 6:密度聚类 2;实验结果截图)→ note -- L355 `a5fee367-df47-4713-89f7-58942dcd50cc_12.jpg?x=153&y=206&w=245&h=187`(图 7:密度聚类 3;实验结果截图)→ note -- L359 `a5fee367-df47-4713-89f7-58942dcd50cc_12.jpg?x=432&y=205&w=251&h=189`(图 8:密度聚类 4;实验结果截图)→ note -- L363 `a5fee367-df47-4713-89f7-58942dcd50cc_12.jpg?x=143&y=714&w=255&h=186`(图 9:密度聚类 5;实验结果截图)→ note -- L367 `a5fee367-df47-4713-89f7-58942dcd50cc_12.jpg?x=431&y=715&w=255&h=186`(图 10:密度聚类 6;实验结果截图)→ note -- L373 `a5fee367-df47-4713-89f7-58942dcd50cc_13.jpg?x=437&y=140&w=246&h=187`(图 12:密度聚类 8;实验结果截图)→ note -- L377 `a5fee367-df47-4713-89f7-58942dcd50cc_13.jpg?x=150&y=139&w=248&h=187`(图 11:密度聚类 7;实验结果截图)→ note - ---- - -## 7. 计算智能导论作业——遗传算法的实现 - -- 标题:计算智能导论作业——遗传算法的实现 -- legacyPath:`/2021/04/16/计算智能导论作业——遗传算法的实现/` -- 失效图:底层截图 2 张 / URL 引用 3 条 -- 处置统计:note 3 / remove 0 - -引用清单: - -- L144 `e291bc60-ee22-4de1-aca0-eb54cd5a99af_6.jpg?x=242&y=62&w=409&h=397`(图 1:函数图;实验结果截图)→ note -- L161 `e291bc60-ee22-4de1-aca0-eb54cd5a99af_7.jpg?x=193&y=172&w=415&h=275`(图 2:函数图;实验结果截图)→ note -- L165 `e291bc60-ee22-4de1-aca0-eb54cd5a99af_7.jpg?x=189&y=643&w=442&h=348`(图 3:函数图;实验结果截图)→ note - ---- - -## 8. 计算智能导论作业——感知器实现二分类 - -- 标题:计算智能导论作业——感知器实现二分类 -- legacyPath:`/2021/05/30/计算智能导论作业——感知器实现二分类/` -- 失效图:底层截图 4 张 / URL 引用 11 条 -- 处置统计:note 11 / remove 0 - -引用清单: - -- L202 `e61111d4-9579-4d1a-b6be-0d3a5e039cb8_5.jpg?x=152&y=415&w=246&h=196`(图 1:初始;实验结果截图)→ note -- L206 `e61111d4-9579-4d1a-b6be-0d3a5e039cb8_5.jpg?x=437&y=414&w=248&h=196`(图 2:迭代 400 次;实验结果截图)→ note -- L213 `e61111d4-9579-4d1a-b6be-0d3a5e039cb8_5.jpg?x=438&y=744&w=247&h=195`(图 4:最终结果;实验结果截图)→ note -- L217 `e61111d4-9579-4d1a-b6be-0d3a5e039cb8_5.jpg?x=153&y=744&w=243&h=196`(图 3:迭代 800 次;实验结果截图)→ note -- L230 `e61111d4-9579-4d1a-b6be-0d3a5e039cb8_6.jpg?x=430&y=227&w=256&h=197`(图 6:迭代 400 次;实验结果截图)→ note -- L234 `e61111d4-9579-4d1a-b6be-0d3a5e039cb8_6.jpg?x=142&y=228&w=257&h=194`(图 5:初始;实验结果截图)→ note -- L240 `e61111d4-9579-4d1a-b6be-0d3a5e039cb8_6.jpg?x=142&y=531&w=256&h=197`(图 7:迭代 800 次;实验结果截图)→ note -- L244 `e61111d4-9579-4d1a-b6be-0d3a5e039cb8_6.jpg?x=430&y=531&w=254&h=196`(图 8:最终结果;实验结果截图)→ note -- L257 `e61111d4-9579-4d1a-b6be-0d3a5e039cb8_7.jpg?x=183&y=79&w=473&h=203`(图 9:损失准确率结果图;实验结果截图)→ note -- L265 `e61111d4-9579-4d1a-b6be-0d3a5e039cb8_7.jpg?x=178&y=475&w=474&h=254`(图 10:降维结果图;实验结果截图)→ note -- L277 `e61111d4-9579-4d1a-b6be-0d3a5e039cb8_8.jpg?x=180&y=83&w=473&h=255`(图 11:Sonar 使用 kmeans 降维结果图;实验结果截图)→ note diff --git a/migration/taxonomy-map.json b/migration/taxonomy-map.json deleted file mode 100644 index b492155a2..000000000 --- a/migration/taxonomy-map.json +++ /dev/null @@ -1,328 +0,0 @@ -{ - "mapping": [ - { - "filename": "阿里国际暑实面试分享.md", - "title": "阿里国际暑实面试分享", - "legacyPath": "/2024/05/23/阿里国际暑实面试分享/", - "section": "经历与记录" - }, - { - "filename": "当文明踩下加速踏板之后.md", - "title": "当文明踩下加速踏板之后", - "legacyPath": "/2026/08/29/当文明踩下加速踏板之后/", - "section": "思考与随笔" - }, - { - "filename": "钉钉和淘天机器学习捞暑期实习面试分享.md", - "title": "钉钉和淘天机器学习捞暑期实习面试分享", - "legacyPath": "/2024/05/22/钉钉和淘天机器学习捞暑期实习面试分享/", - "section": "经历与记录" - }, - { - "filename": "服务器常见技术问题与技巧.md", - "title": "服务器常见技术问题与技巧", - "legacyPath": "/2023/09/03/服务器常见技术问题与技巧/", - "section": "技术与工程" - }, - { - "filename": "华为暑期实习面试分享.md", - "title": "华为暑期实习面试分享", - "legacyPath": "/2024/04/28/华为暑期实习面试分享/", - "section": "经历与记录" - }, - { - "filename": "机器学习报告——高光谱遥感特征选择.md", - "title": "机器学习作业——高光谱遥感特征选择", - "legacyPath": "/2021/04/28/机器学习报告——高光谱遥感特征选择/", - "section": "学习与研究" - }, - { - "filename": "机器学习报告——数据分类的实现.md", - "title": "机器学习报告——数据分类的实现", - "legacyPath": "/2021/04/11/机器学习报告——数据分类的实现/", - "section": "学习与研究" - }, - { - "filename": "机器学习课程报告——波士顿房价预测.md", - "title": "机器学习课程报告——波士顿房价预测", - "legacyPath": "/2021/06/18/机器学习课程报告——波士顿房价预测/", - "section": "学习与研究" - }, - { - "filename": "机器学习上机报告——聚类分析.md", - "title": "机器学习上机报告——聚类分析", - "legacyPath": "/2021/05/23/机器学习上机报告——聚类分析/", - "section": "学习与研究" - }, - { - "filename": "计算智能导论作业——感知器实现二分类.md", - "title": "计算智能导论作业——感知器实现二分类", - "legacyPath": "/2021/05/30/计算智能导论作业——感知器实现二分类/", - "section": "学习与研究" - }, - { - "filename": "计算智能导论作业——遗传算法的实现.md", - "title": "计算智能导论作业——遗传算法的实现", - "legacyPath": "/2021/04/16/计算智能导论作业——遗传算法的实现/", - "section": "学习与研究" - }, - { - "filename": "计算智能导论作业——FCM 聚类的实现.md", - "title": "计算智能导论作业——FCM 聚类的实现", - "legacyPath": "/2021/05/30/计算智能导论作业——FCM 聚类的实现/", - "section": "学习与研究" - }, - { - "filename": "记录第一次搭博客.md", - "title": "记录我的第一次搭建博客", - "legacyPath": "/2020/10/31/记录第一次搭博客/", - "section": "经历与记录" - }, - { - "filename": "今日随笔.md", - "title": "今日随笔", - "legacyPath": "/2022/05/10/今日随笔/", - "section": "思考与随笔" - }, - { - "filename": "浅谈《原神》游戏的理解.md", - "title": "浅谈《原神》游戏的理解", - "legacyPath": "/2023/02/07/浅谈《原神》游戏的理解/", - "section": "思考与随笔" - }, - { - "filename": "秋招百信银行面试分享.md", - "title": "秋招百信银行面试分享", - "legacyPath": "/2024/10/22/秋招百信银行面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招比亚迪面试分享.md", - "title": "秋招比亚迪面试分享", - "legacyPath": "/2024/09/23/秋招比亚迪面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招得物面试分享.md", - "title": "秋招得物面试分享", - "legacyPath": "/2024/09/22/秋招得物面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招滴滴面试分享.md", - "title": "秋招滴滴面试分享", - "legacyPath": "/2024/09/28/秋招滴滴面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招广联达面试分享.md", - "title": "秋招广联达", - "legacyPath": "/2024/10/31/秋招广联达面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招合肥安迅精密技术面试分享.md", - "title": "秋招合肥安迅精密技术面试分享", - "legacyPath": "/2024/09/23/秋招合肥安迅精密技术面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招华为面试分享.md", - "title": "秋招华为面试分享", - "legacyPath": "/2024/10/15/秋招华为面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招金山面试分享.md", - "title": "秋招金山面试分享", - "legacyPath": "/2024/11/06/秋招金山面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招科大讯飞面试分享.md", - "title": "秋招科大讯飞面试分享", - "legacyPath": "/2024/10/12/秋招科大讯飞面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招快手面试分享.md", - "title": "秋招快手面试分享", - "legacyPath": "/2024/09/24/秋招快手面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招理想面试分享.md", - "title": "秋招理想面试分享", - "legacyPath": "/2024/09/26/秋招理想面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招蚂蚁面试分享.md", - "title": "秋招蚂蚁面试分享", - "legacyPath": "/2024/09/25/秋招蚂蚁面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招美团面试分享.md", - "title": "秋招美团机器学习面试分享", - "legacyPath": "/2024/09/12/秋招美团面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招面试总结分享.md", - "title": "秋招面试总结分享", - "legacyPath": "/2024/11/30/秋招面试总结分享/", - "section": "经历与记录" - }, - { - "filename": "秋招拼多多面试分享.md", - "title": "秋招拼多多面试分享", - "legacyPath": "/2024/10/10/秋招拼多多面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招荣耀面试分享.md", - "title": "秋招荣耀面试分享", - "legacyPath": "/2024/10/14/秋招荣耀面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招上海银行面试分享.md", - "title": "秋招上海银行面试分享", - "legacyPath": "/2024/10/25/秋招上海银行面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招淘天面试分享.md", - "title": "秋招淘天凉经", - "legacyPath": "/2024/09/19/秋招淘天面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招提前批百度面试分享.md", - "title": "秋招提前批百度机器学习/数据挖掘/自然语言处理工程师面试分享", - "legacyPath": "/2024/08/06/秋招提前批百度面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招蔚来面试分享.md", - "title": "秋招蔚来面试分享", - "legacyPath": "/2024/11/01/秋招蔚来面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招虾皮面试分享.md", - "title": "秋招虾皮面试分享", - "legacyPath": "/2024/10/20/秋招虾皮面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招携程面试分享.md", - "title": "秋招携程面试分享", - "legacyPath": "/2024/10/15/秋招携程面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招招联面试分享.md", - "title": "秋招招联面试分享", - "legacyPath": "/2024/10/19/秋招招联面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招中金所面试分享.md", - "title": "秋招中金所面试分享", - "legacyPath": "/2024/11/01/秋招中金所面试分享/", - "section": "经历与记录" - }, - { - "filename": "秋招中兴面试分享.md", - "title": "秋招中兴面试分享", - "legacyPath": "/2024/09/19/秋招中兴面试分享/", - "section": "经历与记录" - }, - { - "filename": "数据挖掘报告——MIMC数据集的预处理.md", - "title": "数据挖掘报告——MIMC数据集的预处理", - "legacyPath": "/2021/04/08/数据挖掘报告——MIMC数据集的预处理/", - "section": "学习与研究" - }, - { - "filename": "淘天暑期实习面试分享.md", - "title": "淘天暑期实习计算机视觉面试凉经", - "legacyPath": "/2024/04/30/淘天暑期实习面试分享/", - "section": "经历与记录" - }, - { - "filename": "腾讯AI Lab暑实面试分享.md", - "title": "腾讯AI Lab暑实面试分享", - "legacyPath": "/2024/05/28/腾讯AI Lab暑实面试分享/", - "section": "经历与记录" - }, - { - "filename": "我的生活.md", - "title": "考研后的思考", - "legacyPath": "/2021/12/29/我的生活/", - "section": "思考与随笔" - }, - { - "filename": "现代的包管理工具uv.md", - "title": "现代化的包管理工具:uv", - "legacyPath": "/2025/04/30/现代的包管理工具uv/", - "section": "技术与工程" - }, - { - "filename": "学术交流分享ActionFormer.md", - "title": "ActionFormer论文分享", - "legacyPath": "/2022/11/10/学术交流分享ActionFormer/", - "section": "学习与研究" - }, - { - "filename": "Agent上下文工程:从Token管理到终身记忆.md", - "title": "Agent 上下文工程:从 Token 管理到终身记忆", - "legacyPath": "/2026/05/10/Agent上下文工程:从Token管理到终身记忆/", - "section": "技术与工程" - }, - { - "filename": "Codex造零件Hermes养系统.md", - "title": "Codex 造零件,Hermes 养系统:我用 Hermes 实践 PassiveAgent 的过程", - "legacyPath": "/2026/06/10/Codex造零件Hermes养系统/", - "section": "技术与工程" - }, - { - "filename": "hermes-self-evolving-blog-engine.md", - "title": "Hermes 自进化博客引擎:从选题到部署,几十分钟全自动闭环", - "legacyPath": "/2026/05/13/hermes-self-evolving-blog-engine/", - "section": "技术与工程" - }, - { - "filename": "Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署.md", - "title": "Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署", - "legacyPath": "/2024/03/03/Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署/", - "section": "技术与工程" - }, - { - "filename": "HRNet.md", - "title": "【论文阅读】 Deep High-Resolution Representation Learning for Visual Recognition", - "legacyPath": "/2022/09/21/HRNet/", - "section": "学习与研究" - }, - { - "filename": "SkillEvolver自进化实验复盘.md", - "title": "SkillEvolver 复盘:自进化没有成功,但评测框架留下来了", - "legacyPath": "/2026/06/20/SkillEvolver自进化实验复盘/", - "section": "技术与工程" - }, - { - "filename": "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md", - "title": "Ubuntu 20.04下Pytorch深度学习环境搭建以及常用工具配置", - "legacyPath": "/2022/04/10/Ubuntu 20.04下深度学习环境搭建以及常用工具配置/", - "section": "技术与工程" - }, - { - "filename": "ubuntu的使用.md", - "title": "Ubuntu的基本使用", - "legacyPath": "/2022/11/02/ubuntu的使用/", - "section": "技术与工程" - } - ] -} diff --git a/migration/url-manifest.json b/migration/url-manifest.json deleted file mode 100644 index d9be22880..000000000 --- a/migration/url-manifest.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "legacyPaths": [ - "/2020/10/31/记录第一次搭博客/", - "/2021/04/08/数据挖掘报告——MIMC数据集的预处理/", - "/2021/04/11/机器学习报告——数据分类的实现/", - "/2021/04/16/计算智能导论作业——遗传算法的实现/", - "/2021/04/28/机器学习报告——高光谱遥感特征选择/", - "/2021/05/23/机器学习上机报告——聚类分析/", - "/2021/05/30/计算智能导论作业——感知器实现二分类/", - "/2021/05/30/计算智能导论作业——FCM 聚类的实现/", - "/2021/06/18/机器学习课程报告——波士顿房价预测/", - "/2021/12/29/我的生活/", - "/2022/04/10/Ubuntu 20.04下深度学习环境搭建以及常用工具配置/", - "/2022/05/10/今日随笔/", - "/2022/09/21/HRNet/", - "/2022/11/02/ubuntu的使用/", - "/2022/11/10/学术交流分享ActionFormer/", - "/2023/02/07/浅谈《原神》游戏的理解/", - "/2023/09/03/服务器常见技术问题与技巧/", - "/2024/03/03/Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署/", - "/2024/04/28/华为暑期实习面试分享/", - "/2024/04/30/淘天暑期实习面试分享/", - "/2024/05/22/钉钉和淘天机器学习捞暑期实习面试分享/", - "/2024/05/23/阿里国际暑实面试分享/", - "/2024/05/28/腾讯AI Lab暑实面试分享/", - "/2024/08/06/秋招提前批百度面试分享/", - "/2024/09/12/秋招美团面试分享/", - "/2024/09/19/秋招淘天面试分享/", - "/2024/09/19/秋招中兴面试分享/", - "/2024/09/22/秋招得物面试分享/", - "/2024/09/23/秋招比亚迪面试分享/", - "/2024/09/23/秋招合肥安迅精密技术面试分享/", - "/2024/09/24/秋招快手面试分享/", - "/2024/09/25/秋招蚂蚁面试分享/", - "/2024/09/26/秋招理想面试分享/", - "/2024/09/28/秋招滴滴面试分享/", - "/2024/10/10/秋招拼多多面试分享/", - "/2024/10/12/秋招科大讯飞面试分享/", - "/2024/10/14/秋招荣耀面试分享/", - "/2024/10/15/秋招华为面试分享/", - "/2024/10/15/秋招携程面试分享/", - "/2024/10/19/秋招招联面试分享/", - "/2024/10/20/秋招虾皮面试分享/", - "/2024/10/22/秋招百信银行面试分享/", - "/2024/10/25/秋招上海银行面试分享/", - "/2024/10/31/秋招广联达面试分享/", - "/2024/11/01/秋招蔚来面试分享/", - "/2024/11/01/秋招中金所面试分享/", - "/2024/11/06/秋招金山面试分享/", - "/2024/11/30/秋招面试总结分享/", - "/2025/04/30/现代的包管理工具uv/", - "/2026/05/10/Agent上下文工程:从Token管理到终身记忆/", - "/2026/05/13/hermes-self-evolving-blog-engine/", - "/2026/06/10/Codex造零件Hermes养系统/", - "/2026/06/20/SkillEvolver自进化实验复盘/", - "/2026/08/29/当文明踩下加速踏板之后/" - ], - "preservedStaticUrls": [ - "/", - "/404.html", - "/CNAME", - "/about/", - "/atom.xml", - "/baidu_verify_codeva-pcll7x0O4y.html", - "/blog/", - "/categories/", - "/categories/AI技术/", - "/categories/Agent实践/", - "/categories/Ubuntu/", - "/categories/博客配置/", - "/categories/姿态估计/", - "/categories/技术/", - "/categories/技术知识/", - "/categories/技术问题/", - "/categories/数据挖掘/", - "/categories/时序定位/", - "/categories/机器学习/", - "/categories/深度学习/", - "/categories/生活/", - "/categories/计算智能/", - "/categories/随笔/", - "/categories/面试总结/", - "/categories/面试记录/", - "/categories/面试记录/page/2/", - "/categories/面试记录/page/3/", - "/google327efbcfd1c87180.html", - "/link/", - "/robots.txt", - "/sitemap.txt", - "/sitemap.xml" - ] -} diff --git a/scripts/audit-legacy-content.mjs b/scripts/audit-legacy-content.mjs deleted file mode 100644 index 3ee700a15..000000000 --- a/scripts/audit-legacy-content.mjs +++ /dev/null @@ -1,731 +0,0 @@ -import fs from "node:fs"; -import path from "node:path"; -import { fileURLToPath } from "node:url"; -import { parse as parseYaml } from "yaml"; - -const scriptDir = path.dirname(fileURLToPath(import.meta.url)); -const repoRoot = path.resolve(scriptDir, ".."); - -const SOURCE_POSTS_DIR = "/Users/jackzhu/projects/blog/source/_posts"; -const SOURCE_LINK_YAML = "/Users/jackzhu/projects/blog/source/_data/link.yml"; -const PUBLIC_DIR = "/Users/jackzhu/projects/blog/public"; -const OUT_DIR = path.join(repoRoot, "migration"); - -const FOUR_SECTIONS = ["技术与工程", "学习与研究", "思考与随笔", "经历与记录"]; - -// 第一版四分类草稿,由逐篇阅读标题 + description + 正文前段后人工归档。 -// 后续用户审核确认后,此处与 Phase D 批量迁移保持一致。 -const SECTION_BY_FILENAME = { - "Agent上下文工程:从Token管理到终身记忆.md": "技术与工程", - "Codex造零件Hermes养系统.md": "技术与工程", - "HRNet.md": "学习与研究", - "Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署.md": "技术与工程", - "SkillEvolver自进化实验复盘.md": "技术与工程", - "Ubuntu 20.04下深度学习环境搭建以及常用工具配置.md": "技术与工程", - "hermes-self-evolving-blog-engine.md": "技术与工程", - "ubuntu的使用.md": "技术与工程", - "今日随笔.md": "思考与随笔", - "华为暑期实习面试分享.md": "经历与记录", - "学术交流分享ActionFormer.md": "学习与研究", - "当文明踩下加速踏板之后.md": "思考与随笔", - "我的生活.md": "思考与随笔", - "数据挖掘报告——MIMC数据集的预处理.md": "学习与研究", - "服务器常见技术问题与技巧.md": "技术与工程", - "机器学习上机报告——聚类分析.md": "学习与研究", - "机器学习报告——数据分类的实现.md": "学习与研究", - "机器学习报告——高光谱遥感特征选择.md": "学习与研究", - "机器学习课程报告——波士顿房价预测.md": "学习与研究", - "浅谈《原神》游戏的理解.md": "思考与随笔", - "淘天暑期实习面试分享.md": "经历与记录", - "现代的包管理工具uv.md": "技术与工程", - "秋招上海银行面试分享.md": "经历与记录", - "秋招中兴面试分享.md": "经历与记录", - "秋招中金所面试分享.md": "经历与记录", - "秋招华为面试分享.md": "经历与记录", - "秋招合肥安迅精密技术面试分享.md": "经历与记录", - "秋招广联达面试分享.md": "经历与记录", - "秋招得物面试分享.md": "经历与记录", - "秋招快手面试分享.md": "经历与记录", - "秋招招联面试分享.md": "经历与记录", - "秋招拼多多面试分享.md": "经历与记录", - "秋招提前批百度面试分享.md": "经历与记录", - "秋招携程面试分享.md": "经历与记录", - "秋招比亚迪面试分享.md": "经历与记录", - "秋招淘天面试分享.md": "经历与记录", - "秋招滴滴面试分享.md": "经历与记录", - "秋招理想面试分享.md": "经历与记录", - "秋招百信银行面试分享.md": "经历与记录", - "秋招科大讯飞面试分享.md": "经历与记录", - "秋招美团面试分享.md": "经历与记录", - "秋招荣耀面试分享.md": "经历与记录", - "秋招蔚来面试分享.md": "经历与记录", - "秋招虾皮面试分享.md": "经历与记录", - "秋招蚂蚁面试分享.md": "经历与记录", - "秋招金山面试分享.md": "经历与记录", - "秋招面试总结分享.md": "经历与记录", - "腾讯AI Lab暑实面试分享.md": "经历与记录", - "计算智能导论作业——FCM 聚类的实现.md": "学习与研究", - "计算智能导论作业——感知器实现二分类.md": "学习与研究", - "计算智能导论作业——遗传算法的实现.md": "学习与研究", - "记录第一次搭博客.md": "经历与记录", - "钉钉和淘天机器学习捞暑期实习面试分享.md": "经历与记录", - "阿里国际暑实面试分享.md": "经历与记录", -}; - -function pad2(value) { - return String(value).padStart(2, "0"); -} - -function toLocalDate(value) { - if (value === null || value === undefined) return null; - - const text = String(value).trim(); - if (!text) return null; - - if (/^\d{4}\/\d{1,2}\/\d{1,2}$/.test(text)) { - const [year, month, day] = text.split("/"); - return `${year}-${pad2(month)}-${pad2(day)}`; - } - - if (/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/.test(text)) { - const [, year, month, day, hour, minute, second] = - /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/.exec(text); - const parsed = new Date( - Date.UTC( - Number(year), - Number(month) - 1, - Number(day), - Number(hour), - Number(minute), - Number(second), - ), - ); - const parts = new Intl.DateTimeFormat("en-CA", { - timeZone: "Asia/Shanghai", - year: "numeric", - month: "2-digit", - day: "2-digit", - }).formatToParts(parsed); - const get = (type) => parts.find((part) => part.type === type)?.value; - return `${get("year")}-${get("month")}-${get("day")}`; - } - - if (/^\d{4}-\d{2}-\d{2}$/.test(text)) { - return text; - } - - const parsed = new Date(value); - if (Number.isNaN(parsed.getTime())) return null; - - const parts = new Intl.DateTimeFormat("en-CA", { - timeZone: "Asia/Shanghai", - year: "numeric", - month: "2-digit", - day: "2-digit", - }).formatToParts(parsed); - const get = (type) => parts.find((part) => part.type === type)?.value; - return `${get("year")}-${get("month")}-${get("day")}`; -} - -function parseFrontmatter(raw) { - const match = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/.exec(raw); - if (!match) { - throw new Error("Post is missing YAML frontmatter."); - } - - const data = parseYaml(match[1]); - return { - frontmatter: data && typeof data === "object" ? data : {}, - body: raw.slice(match[0].length), - }; -} - -function asStringArray(value) { - if (value === null || value === undefined) return []; - const values = Array.isArray(value) ? value : String(value).split(/[,,]/); - return values - .map((item) => String(item).trim()) - .filter(Boolean); -} - -function normalizeForMatch(value) { - return String(value) - .normalize("NFKC") - .toLowerCase() - .replace(/\s+/g, "") - .replace(/[^\p{L}\p{N}]/gu, ""); -} - -function walkFiles(dir) { - const result = []; - const entries = fs.readdirSync(dir, { withFileTypes: true }); - for (const entry of entries) { - const full = path.join(dir, entry.name); - if (entry.isDirectory()) { - result.push(...walkFiles(full)); - } else if (entry.isFile()) { - result.push(full); - } - } - return result; -} - -function readPublicArticlePaths() { - const pattern = - /^(\d{4})\/(\d{2})\/(\d{2})\/([^/]+)\/index\.html$/; - const articles = []; - - for (const file of walkFiles(PUBLIC_DIR)) { - const relative = path.relative(PUBLIC_DIR, file).split(path.sep).join("/"); - const match = pattern.exec(relative); - if (!match) continue; - - const [, year, month, day, slug] = match; - articles.push({ - file, - relative, - year, - month, - day, - slug, - legacyPath: `/${year}/${month}/${day}/${slug}/`, - }); - } - - return articles; -} - -function matchLegacyPath(source, publicArticles) { - const sameDate = publicArticles.filter( - (article) => article.year && `${article.year}-${article.month}-${article.day}` === source.date, - ); - - if (sameDate.length === 0) { - throw new Error(`No public path for date ${source.date}: ${source.filename}`); - } - - const stem = source.filename.replace(/\.md$/i, ""); - const exact = sameDate.filter((article) => article.slug === stem); - if (exact.length === 1) return exact[0]; - - const normalizedStem = normalizeForMatch(stem); - const byStem = sameDate.filter( - (article) => normalizeForMatch(article.slug) === normalizedStem, - ); - if (byStem.length === 1) return byStem[0]; - - const normalizedTitle = normalizeForMatch(source.title); - const byTitle = sameDate.filter( - (article) => normalizeForMatch(article.slug) === normalizedTitle, - ); - if (byTitle.length === 1) return byTitle[0]; - - throw new Error( - `Unable to uniquely match public path for ${source.filename} on ${source.date}. ` + - `Candidates: ${sameDate.map((article) => article.slug).join(", ")}`, - ); -} - -function stripFencedCode(markdown) { - return markdown - .replace(/```[\s\S]*?```/g, " ") - .replace(/~~~[\s\S]*?~~~/g, " "); -} - -function stripInlineCode(text) { - return text.replace(/`[^`\r\n]*`/g, " "); -} - -function extractImages(markdown, filename) { - const text = stripFencedCode(markdown); - const found = []; - - const markdownImage = - /!\[[^\]]*\]\(\s*([^)\s]+)(?:\s+["'][^"']*["'])?\s*\)/g; - let match; - while ((match = markdownImage.exec(text))) { - found.push(match[1]); - } - - const htmlImage = /]*\bsrc=["']([^"']+)["']/gi; - while ((match = htmlImage.exec(text))) { - found.push(match[1]); - } - - return found.map((url) => ({ url: url.trim(), referencedBy: filename })); -} - -function extractLinks(markdown, filename) { - const text = stripInlineCode(stripFencedCode(markdown)); - const found = []; - - const markdownLink = - /(?]*\bhref=["']([^"']+)["'][^>]*>/gi; - while ((match = htmlLink.exec(text))) { - found.push(match[1].trim()); - } - - return found.filter(Boolean).map((url) => ({ url, referencedBy: filename })); -} - -function urlDomain(url) { - try { - return new URL(url).hostname.toLowerCase(); - } catch { - return ""; - } -} - -function classifyLink(url) { - if (/^(mailto:|tel:|#)/i.test(url)) return "special"; - if (url.startsWith("/") || url.startsWith("./") || url.startsWith("../")) { - return "internal"; - } - - try { - const host = new URL(url).hostname.toLowerCase(); - if ( - host === "jackzhu.top" || - host === "www.jackzhu.top" || - host === "coderjackzhu.github.io" - ) { - return "internal"; - } - } catch { - return "external"; - } - - return "external"; -} - -function groupReferencedLinks(items) { - const map = new Map(); - for (const item of items) { - if (!map.has(item.url)) { - map.set(item.url, new Set()); - } - map.get(item.url).add(item.referencedBy); - } - - return [...map.entries()] - .map(([url, files]) => ({ - url, - referencedBy: [...files].sort(), - })) - .sort((a, b) => a.url.localeCompare(b.url)); -} - -async function headCheck(url) { - const controller = new AbortController(); - const timeout = setTimeout(() => controller.abort(), 2500); - - try { - const response = await fetch(url, { - method: "HEAD", - redirect: "follow", - signal: controller.signal, - }); - return { - httpStatus: response.status, - reachable: response.status < 500, - }; - } catch { - return { - httpStatus: null, - reachable: false, - }; - } finally { - clearTimeout(timeout); - } -} - -async function runWithConcurrency(items, limit, worker) { - const results = new Array(items.length); - let nextIndex = 0; - - async function workerLoop() { - while (true) { - const index = nextIndex; - nextIndex += 1; - if (index >= items.length) return; - results[index] = await worker(items[index]); - } - } - - await Promise.all( - Array.from({ length: Math.min(limit, items.length) }, () => workerLoop()), - ); - return results; -} - -function collectIndexPathsUnder(rootDir, urlPrefix) { - const prefix = urlPrefix.endsWith("/") ? urlPrefix.slice(0, -1) : urlPrefix; - const found = []; - - if (!fs.existsSync(rootDir)) return found; - - function visit(dir, urlBase) { - const entries = fs.readdirSync(dir, { withFileTypes: true }); - for (const entry of entries) { - const full = path.join(dir, entry.name); - if (entry.isDirectory()) { - visit(full, `${urlBase}/${entry.name}`); - } else if (entry.isFile() && entry.name === "index.html") { - found.push(`${urlBase}/`); - } - } - } - - visit(rootDir, prefix); - return found.sort(); -} - -function buildStaticUrls() { - const fixed = [ - "/", - "/404.html", - "/CNAME", - "/about/", - "/atom.xml", - "/baidu_verify_codeva-pcll7x0O4y.html", - "/blog/", - "/google327efbcfd1c87180.html", - "/link/", - "/robots.txt", - "/sitemap.txt", - "/sitemap.xml", - ]; - - const categoryUrls = collectIndexPathsUnder( - path.join(PUBLIC_DIR, "categories"), - "/categories", - ); - - return [...new Set([...fixed, ...categoryUrls])].sort(); -} - -function buildLegacyAggregatePaths() { - const groups = ["archives", "tags", "music", "movies", "photos", "page", "Gallery"]; - const paths = []; - - for (const group of groups) { - const full = path.join(PUBLIC_DIR, group); - if (!fs.existsSync(full)) continue; - const groupPaths = collectIndexPathsUnder(full, `/${group}`); - paths.push(...groupPaths); - } - - return [...new Set(paths)].sort().map((path) => ({ - path, - disposition: "移除/404", - })); -} - -function buildFriendLinks() { - if (!fs.existsSync(SOURCE_LINK_YAML)) { - throw new Error(`Friend links file not found: ${SOURCE_LINK_YAML}`); - } - - const groups = parseYaml(fs.readFileSync(SOURCE_LINK_YAML, "utf8")); - if (!Array.isArray(groups)) { - throw new Error("Friend links YAML must be a list."); - } - - const links = []; - for (const group of groups) { - if (!Array.isArray(group.link_list)) continue; - for (const item of group.link_list) { - links.push({ - name: item.name ?? "", - link: item.link ?? "", - avatar: item.avatar ?? "", - descr: item.descr ?? "", - group: group.class_name ?? "", - }); - } - } - - return links; -} - -function verifySectionCoverage(posts) { - const missing = posts - .filter((post) => !SECTION_BY_FILENAME[post.filename]) - .map((post) => post.filename); - if (missing.length > 0) { - throw new Error(`Missing section mapping for: ${missing.join(", ")}`); - } - - for (const post of posts) { - if (!FOUR_SECTIONS.includes(SECTION_BY_FILENAME[post.filename])) { - throw new Error(`Invalid section for ${post.filename}`); - } - } -} - -async function main() { - fs.mkdirSync(OUT_DIR, { recursive: true }); - - const publicArticles = readPublicArticlePaths(); - if (publicArticles.length !== 54) { - throw new Error( - `Expected 54 article paths under public/, found ${publicArticles.length}.`, - ); - } - - const postFiles = fs - .readdirSync(SOURCE_POSTS_DIR) - .filter((file) => file.endsWith(".md")) - .sort((a, b) => a.localeCompare(b, "zh-Hans-CN")); - - if (postFiles.length !== 54) { - throw new Error(`Expected 54 source posts, found ${postFiles.length}.`); - } - - const posts = postFiles.map((filename) => { - const raw = fs.readFileSync(path.join(SOURCE_POSTS_DIR, filename), "utf8"); - const { frontmatter, body } = parseFrontmatter(raw); - const date = toLocalDate(frontmatter.date); - if (!date) { - throw new Error(`Cannot parse date for ${filename}`); - } - - const title = String(frontmatter.title ?? "").trim(); - const description = - frontmatter.description === null || - frontmatter.description === undefined || - String(frontmatter.description).trim() === "" - ? null - : String(frontmatter.description).trim(); - - return { - filename, - title, - date, - updated: toLocalDate(frontmatter.updated), - description, - categories: asStringArray(frontmatter.categories), - tags: asStringArray(frontmatter.tags), - copyright_author: frontmatter.copyright_author - ? String(frontmatter.copyright_author) - : null, - hasDescription: description !== null, - flags: { - mathjax: - frontmatter.mathjax === true || /\$\$|\\\(/.test(body), - html: /<(div|span|table|figure|video|iframe|center|font|style|script|details|summary|pre|blockquote|img|br|hr|p|h1|h2|h3|h4|h5|h6|a|ul|ol|li|code|kbd|s|del|u|sub|sup|small|strong|em|section|article|aside|header|footer|nav|main|picture|source|audio|object|embed|svg|math)(\s|>|\/)/i.test(body), - code: /```|~~~/.test(body), - hexoTag: /\{%[^%]*%\}/.test(body), - }, - body, - }; - }); - - for (const post of posts) { - const publicArticle = matchLegacyPath(post, publicArticles); - post.legacyPath = publicArticle.legacyPath; - post.publicRelative = publicArticle.relative; - } - - const usedLegacyPaths = new Set(); - for (const post of posts) { - if (usedLegacyPaths.has(post.legacyPath)) { - throw new Error(`Duplicate legacyPath: ${post.legacyPath}`); - } - usedLegacyPaths.add(post.legacyPath); - } - - const publicLegacyPaths = publicArticles.map((article) => article.legacyPath); - for (const publicPath of publicLegacyPaths) { - if (!usedLegacyPaths.has(publicPath)) { - throw new Error(`Unmatched public path: ${publicPath}`); - } - } - - verifySectionCoverage(posts); - - const contentManifest = posts - .map(({ filename, title, date, updated, legacyPath, description, categories, tags, flags, copyright_author, hasDescription }) => ({ - filename, - title, - date, - updated, - legacyPath, - description, - categories, - tags, - flags, - copyright_author, - hasDescription, - })) - .sort((a, b) => { - const byDate = a.date.localeCompare(b.date); - return byDate !== 0 ? byDate : a.filename.localeCompare(b.filename, "zh-Hans-CN"); - }); - - const taxonomyMap = { - mapping: posts - .map((post) => ({ - filename: post.filename, - title: post.title, - legacyPath: post.legacyPath, - section: SECTION_BY_FILENAME[post.filename], - })) - .sort((a, b) => a.filename.localeCompare(b.filename, "zh-Hans-CN")), - }; - - const imageItems = []; - const linkItems = []; - for (const post of posts) { - imageItems.push(...extractImages(post.body, post.filename)); - linkItems.push(...extractLinks(post.body, post.filename)); - } - - const imageGrouped = groupReferencedImages(imageItems); - const headChecks = await runWithConcurrency( - imageGrouped.filter((image) => image.domain !== "cdn.noedgeai.com"), - 5, - async (image) => ({ - image, - check: await headCheck(image.url), - }), - ); - - const headByUrl = new Map(); - for (const { image, check } of headChecks) { - headByUrl.set(image.url, check); - } - - const images = imageGrouped.map((image) => { - const isBrokenDomain = image.domain === "cdn.noedgeai.com"; - if (isBrokenDomain) { - return { - ...image, - httpStatus: null, - status: "broken", - disposition: "待恢复", - }; - } - - const check = headByUrl.get(image.url) ?? { httpStatus: null, reachable: false }; - const reachable = check.reachable; - const isGcore = image.domain === "gcore.jsdelivr.net"; - const status = reachable ? "ok" : "unknown"; - const disposition = isGcore - ? "保留" - : reachable - ? "保留" - : "unknown"; - - return { - ...image, - httpStatus: check.httpStatus, - status, - disposition, - }; - }); - - const internalLinks = []; - const externalLinks = []; - const specialLinks = []; - - for (const item of groupReferencedLinks(linkItems)) { - const kind = classifyLink(item.url); - if (kind === "internal") internalLinks.push(item); - else if (kind === "special") specialLinks.push(item); - else externalLinks.push(item); - } - - const friendLinks = buildFriendLinks(); - const legacyAggregatePaths = buildLegacyAggregatePaths(); - - const outputs = [ - { - file: "content-manifest.json", - data: contentManifest, - }, - { - file: "url-manifest.json", - data: { - legacyPaths: contentManifest - .map((post) => post.legacyPath) - .sort((a, b) => a.localeCompare(b, "zh-Hans-CN")), - preservedStaticUrls: buildStaticUrls(), - }, - }, - { - file: "image-audit.json", - data: { - images, - summary: { - total: images.length, - broken: images.filter((image) => image.status === "broken").length, - ok: images.filter((image) => image.status === "ok").length, - unknown: images.filter((image) => image.status === "unknown").length, - }, - }, - }, - { - file: "link-audit.json", - data: { - internalLinks, - externalLinks, - specialLinks, - friendLinks, - legacyAggregatePaths, - }, - }, - { - file: "taxonomy-map.json", - data: taxonomyMap, - }, - ]; - - for (const output of outputs) { - fs.writeFileSync( - path.join(OUT_DIR, output.file), - `${JSON.stringify(output.data, null, 2)}\n`, - "utf8", - ); - } - - const counts = { - posts: posts.length, - mathjax: posts.filter((post) => post.flags.mathjax).length, - html: posts.filter((post) => post.flags.html).length, - code: posts.filter((post) => post.flags.code).length, - hexoTag: posts.filter((post) => post.flags.hexoTag).length, - }; - - console.log(JSON.stringify(counts, null, 2)); - console.log(`Wrote ${outputs.length} files to ${OUT_DIR}`); -} - -function groupReferencedImages(items) { - const map = new Map(); - for (const item of items) { - if (!map.has(item.url)) { - map.set(item.url, new Set()); - } - map.get(item.url).add(item.referencedBy); - } - - return [...map.entries()] - .map(([url, files]) => ({ - url, - domain: urlDomain(url), - referencedBy: [...files].sort(), - })) - .sort((a, b) => { - const byDomain = a.domain.localeCompare(b.domain); - return byDomain !== 0 ? byDomain : a.url.localeCompare(b.url); - }); -} - -await main(); diff --git a/scripts/migrate-content.mjs b/scripts/migrate-content.mjs deleted file mode 100644 index 31d909bc0..000000000 --- a/scripts/migrate-content.mjs +++ /dev/null @@ -1,248 +0,0 @@ -import fs from "node:fs"; -import path from "node:path"; -import { fileURLToPath } from "node:url"; -import { parse as parseYaml, stringify as stringifyYaml } from "yaml"; - -const scriptDir = path.dirname(fileURLToPath(import.meta.url)); -const repoRoot = path.resolve(scriptDir, ".."); - -const SOURCE_POSTS_DIR = "/Users/jackzhu/projects/blog/source/_posts"; -const PUBLIC_DIR = "/Users/jackzhu/projects/blog/public"; -const MIGRATION_DIR = path.join(repoRoot, "migration"); -const BLOG_DIR = path.join(repoRoot, "src/content/blog"); - -const MANIFEST_FILE = path.join(MIGRATION_DIR, "content-manifest.json"); -const TAXONOMY_FILE = path.join(MIGRATION_DIR, "taxonomy-map.json"); -const URL_MANIFEST_FILE = path.join(MIGRATION_DIR, "url-manifest.json"); - -// §4 七篇缺失 description 的简洁一行描述(由标题与正文提炼)。 -const FALLBACK_DESCRIPTIONS = { - "数据挖掘报告——MIMC数据集的预处理.md": - "利用 MySQL 与 Python 对 MIMC 数据集进行提取、缺失值与离群点处理、去噪与插值的数据预处理实验记录。", - "机器学习报告——数据分类的实现.md": - "使用 logistic 回归、神经网络、高斯判别分析与贝叶斯方法对 Sonar 数据集进行分类的实现与比较。", - "计算智能导论作业——遗传算法的实现.md": - "实现遗传算法求解最优化问题,并分析编码、适应度函数与遗传算子的实验报告。", - "机器学习报告——高光谱遥感特征选择.md": - "基于 KSC 高光谱遥感数据集,用 Filter 与 Wrapper 方法进行波段特征选择并比较优缺点。", - "计算智能导论作业——感知器实现二分类.md": - "实现感知器算法,并在多组二维数据与 Sonar 高维数据集上完成二分类实验。", - "计算智能导论作业——FCM 聚类的实现.md": - "实现模糊 C 均值(FCM)聚类算法,并在 Iris 数据集上完成聚类实验。", - "机器学习课程报告——波士顿房价预测.md": - "实现波士顿房价预测,比较神经网络模型与线性回归模型的效果。", -}; - -function parseFrontmatter(raw) { - const match = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/.exec(raw); - if (!match) { - throw new Error("Post is missing YAML frontmatter."); - } - - const data = parseYaml(match[1]); - return { - frontmatter: data && typeof data === "object" ? data : {}, - body: raw.slice(match[0].length), - }; -} - -function asStringArray(value) { - if (value === null || value === undefined) return []; - const values = Array.isArray(value) ? value : String(value).split(/[,,]/); - const seen = new Set(); - const result = []; - for (const item of values) { - const text = String(item).trim(); - if (!text || seen.has(text)) continue; - seen.add(text); - result.push(text); - } - return result; -} - -function firstNonEmpty(...values) { - for (const value of values) { - if (value !== null && value !== undefined && String(value).trim() !== "") { - return String(value).trim(); - } - } - return undefined; -} - -function slugFromLegacyPath(legacyPath) { - const segments = legacyPath.split("/").filter(Boolean); - const raw = segments[segments.length - 1]; - try { - return decodeURIComponent(raw); - } catch { - return raw; - } -} - -function convertHexoRawTags(body) { - return body - .replace(/^[ \t]*\{% raw %\}[ \t]*\r?\n/gm, "") - .replace(/^[ \t]*\{% endraw %\}[ \t]*\r?\n/gm, ""); -} - -function readJson(file) { - return JSON.parse(fs.readFileSync(file, "utf8")); -} - -function ensureNoJackZhu(text) { - if (/Jack\s+Zhu/i.test(text)) { - throw new Error(`Found forbidden "Jack Zhu" string in migrated frontmatter.`); - } -} - -function main() { - const contentManifest = readJson(MANIFEST_FILE); - const taxonomy = readJson(TAXONOMY_FILE); - const urlManifest = readJson(URL_MANIFEST_FILE); - - if (!Array.isArray(contentManifest)) { - throw new Error("content-manifest.json must be an array."); - } - if (contentManifest.length !== 54) { - throw new Error(`Expected 54 manifest entries, got ${contentManifest.length}.`); - } - - const taxonomyByFilename = new Map( - taxonomy.mapping.map((entry) => [entry.filename, entry.section]), - ); - const legacyPathSet = new Set(urlManifest.legacyPaths); - - const manifestByFilename = new Map( - contentManifest.map((entry) => [entry.filename, entry]), - ); - - const sourceFiles = fs - .readdirSync(SOURCE_POSTS_DIR) - .filter((file) => file.endsWith(".md")) - .sort((a, b) => a.localeCompare(b, "zh-Hans-CN")); - - if (sourceFiles.length !== 54) { - throw new Error(`Expected 54 source posts, got ${sourceFiles.length}.`); - } - - // 幂等:清空并重建输出目录(作用域仅限 src/content/blog)。 - fs.rmSync(BLOG_DIR, { recursive: true, force: true }); - fs.mkdirSync(BLOG_DIR, { recursive: true }); - - const usedIds = new Set(); - const report = []; - - for (const filename of sourceFiles) { - const raw = fs.readFileSync(path.join(SOURCE_POSTS_DIR, filename), "utf8"); - const { frontmatter, body: originalBody } = parseFrontmatter(raw); - - const manifestEntry = manifestByFilename.get(filename); - if (!manifestEntry) { - throw new Error(`Missing manifest entry for ${filename}.`); - } - - const section = taxonomyByFilename.get(filename); - if (!section) { - throw new Error(`Missing taxonomy section for ${filename}.`); - } - - const legacyPath = manifestEntry.legacyPath; - if (!legacyPath || !legacyPathSet.has(legacyPath)) { - throw new Error(`legacyPath not found in url-manifest for ${filename}.`); - } - - // 从 public/ 目录结构校验(只读校验,绝不重算)。 - const publicDir = path.join(PUBLIC_DIR, legacyPath.replace(/^\//, "")); - if (!fs.existsSync(publicDir)) { - throw new Error(`Public directory missing for ${filename}: ${legacyPath}`); - } - - const title = firstNonEmpty(frontmatter.title, manifestEntry.title); - if (!title) { - throw new Error(`Missing title for ${filename}.`); - } - - const date = manifestEntry.date; - if (!date) { - throw new Error(`Missing date for ${filename}.`); - } - - const updated = manifestEntry.updated || null; - - const tags = asStringArray(frontmatter.tags); - - let description = firstNonEmpty(frontmatter.description); - if (!description) { - description = FALLBACK_DESCRIPTIONS[filename]; - } - if (!description) { - throw new Error(`Missing description and no fallback for ${filename}.`); - } - - const cover = firstNonEmpty(frontmatter.top_img, frontmatter.cover); - - const frontmatterOut = { - title, - date, - }; - if (updated) frontmatterOut.updated = updated; - frontmatterOut.section = section; - if (tags.length > 0) frontmatterOut.tags = tags; - frontmatterOut.description = description; - frontmatterOut.legacyPath = legacyPath; - if (cover) frontmatterOut.cover = cover; - - ensureNoJackZhu( - JSON.stringify({ ...frontmatterOut, description, title }), - ); - - // Hexo `{% raw %}` 标签:去掉包裹,保留内部 $$...$$ 数学公式。 - const body = convertHexoRawTags(originalBody); - - let id = slugFromLegacyPath(legacyPath); - if (usedIds.has(id)) { - id = `${id}-${date.replace(/-/g, "")}`; - } - if (usedIds.has(id)) { - throw new Error(`Duplicate output id after date suffix: ${id}`); - } - usedIds.add(id); - - const outDir = path.join(BLOG_DIR, id); - fs.mkdirSync(outDir, { recursive: true }); - - const yamlString = stringifyYaml(frontmatterOut, { lineWidth: 0 }); - const output = `---\n${yamlString}---\n${body}`; - - fs.writeFileSync(path.join(outDir, "index.md"), output, "utf8"); - - report.push({ - filename, - id, - title, - legacyPath, - section, - bodyLength: originalBody.length, - }); - } - - const dirs = fs - .readdirSync(BLOG_DIR, { withFileTypes: true }) - .filter((entry) => entry.isDirectory()).length; - - console.log( - JSON.stringify( - { - migrated: report.length, - outputDirectories: dirs, - hexoTagConverted: - report.find((entry) => entry.filename === "计算智能导论作业——感知器实现二分类.md") - ?.filename ?? null, - }, - null, - 2, - ), - ); -} - -main(); diff --git a/scripts/verify-build.mjs b/scripts/verify-build.mjs index d045d1d49..e4531c2d7 100644 --- a/scripts/verify-build.mjs +++ b/scripts/verify-build.mjs @@ -33,25 +33,6 @@ function ensure(condition, message) { if (!condition) throw new Error(message); } -function readJson(path) { - return JSON.parse(readFileSync(path, "utf8")); -} - -function sorted(values) { - return [...values].sort((a, b) => a.localeCompare(b, "zh-CN")); -} - -function equalLists(label, actual, expected) { - const left = sorted(actual); - const right = sorted(expected); - const missing = right.filter((value) => !left.includes(value)); - const extra = left.filter((value) => !right.includes(value)); - ensure( - left.length === right.length && missing.length === 0 && extra.length === 0, - `${label} 不一致:missing=${JSON.stringify(missing)}, extra=${JSON.stringify(extra)}`, - ); -} - function distCandidates(urlPath) { let pathname; try { @@ -112,32 +93,25 @@ function htmlFor(urlPath) { ensure(existsSync(distDir), "dist 不存在;请先运行 npm run build"); -const contentManifest = readJson(join(root, "migration/content-manifest.json")); -const urlManifest = readJson(join(root, "migration/url-manifest.json")); const contentFiles = walk(contentDir, (path) => path.endsWith(`${sep}index.md`)); +const sourceLegacyPaths = contentFiles.map((path) => { + const source = readFileSync(path, "utf8"); + const match = source.match(/^legacyPath:\s*(.+?)\s*$/m); + ensure(match, `${relative(root, path)} 缺少 legacyPath`); + return match[1].trim().replace(/^['"]|['"]$/g, ""); +}); const htmlFiles = walk(distDir, (path) => path.endsWith(".html")); const siteHtmlFiles = htmlFiles.filter((path) => //i.test(readFileSync(path, "utf8"))); -check("内容、清单与 legacyPath 一致", () => { - const sourceLegacyPaths = contentFiles.map((path) => { - const source = readFileSync(path, "utf8"); - const match = source.match(/^legacyPath:\s*(.+?)\s*$/m); - ensure(match, `${relative(root, path)} 缺少 legacyPath`); - return match[1].trim().replace(/^['"]|['"]$/g, ""); - }); +check("源文章数量与 legacyPath 一致", () => { ensure(contentFiles.length === 54, `source content 应为 54,实际 ${contentFiles.length}`); - ensure(contentManifest.length === 54, `content manifest 应为 54,实际 ${contentManifest.length}`); ensure(new Set(sourceLegacyPaths).size === 54, "source legacyPath 不是 54 个唯一值"); - ensure(new Set(contentManifest.map((entry) => entry.legacyPath)).size === 54, "content manifest legacyPath 不唯一"); - ensure(new Set(urlManifest.legacyPaths).size === 54, "URL manifest legacyPath 不唯一"); - equalLists("source 与 content manifest", sourceLegacyPaths, contentManifest.map((entry) => entry.legacyPath)); - equalLists("source 与 URL manifest", sourceLegacyPaths, urlManifest.legacyPaths); - return "54 source = 54 content manifest = 54 unique URL manifest"; + return "54 source、54 个唯一 legacyPath"; }); check("全部 legacy URL 已构建", () => { - for (const legacyPath of urlManifest.legacyPaths) assertDistTarget(legacyPath, "legacy URL"); - return `${urlManifest.legacyPaths.length} 个日期型 URL`; + for (const legacyPath of sourceLegacyPaths) assertDistTarget(legacyPath, "legacy URL"); + return `${sourceLegacyPaths.length} 个日期型 URL`; }); check("内部绝对链接全部可解析", () => { diff --git a/site.config.yaml b/site.config.yaml index 3838bde7d..5d22e9b6a 100644 --- a/site.config.yaml +++ b/site.config.yaml @@ -36,13 +36,6 @@ friendLinks: - { name: 西电浪潮俱乐部, link: "http://www.xdu-inspur.cn", descr: "在西电的技术性交流社团" } - { name: 破碎羽翼, link: "https://miroier.github.io/", descr: "中科院软件所破碎羽翼" } -# 文章分类(content schema 的分类枚举也由这里驱动) -categories: - - "技术与工程" - - "学习与研究" - - "思考与随笔" - - "经历与记录" - # 页脚 footer: author: "Jack" # © 行署名 @@ -105,51 +98,51 @@ pages: title: "照片" eyebrow: "Photos" heading: "照片" - subtitle: "文章封面图集。" + subtitle: "照片集。" notFound: title: "404" eyebrow: "Not found" heading: "404:页面未找到" -# 照片墙(从文章 frontmatter 提取,按目录顺序,封面去重保留首次出现) +# 照片墙(手动维护) photos: - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/mouse.jpg", title: "【论文阅读】 Deep High-Resolution Representation Learning for Visual Recognition", href: "/2022/09/21/HRNet/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/除夕贺图.png", title: "Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署", href: "/2024/03/03/Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102119630.jpg", title: "Ubuntu 20.04下Pytorch深度学习环境搭建以及常用工具配置", href: "/2022/04/10/Ubuntu 20.04下深度学习环境搭建以及常用工具配置/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/nilu1.jpg", title: "Ubuntu的基本使用", href: "/2022/11/02/ubuntu的使用/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/moon.jpg", title: "今日随笔", href: "/2022/05/10/今日随笔/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/82DA5A8E1D99BD7DC83A051FA8EA75E2.jpg", title: "华为暑期实习面试分享", href: "/2024/04/28/华为暑期实习面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/hyy.jpg", title: "ActionFormer论文分享", href: "/2022/11/10/学术交流分享ActionFormer/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/civilization-acceleration-cover.svg", title: "当文明踩下加速踏板之后", href: "/2026/08/29/当文明踩下加速踏板之后/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102148023.jpg", title: "考研后的思考", href: "/2021/12/29/我的生活/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303022754.png", title: "数据挖掘报告——MIMC数据集的预处理", href: "/2021/04/08/数据挖掘报告——MIMC数据集的预处理/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/genshin2.jpg", title: "浅谈《原神》游戏的理解", href: "/2023/02/07/浅谈《原神》游戏的理解/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/f786f54959c72a37297a42973764cd39_720.jpg", title: "淘天暑期实习计算机视觉面试凉经", href: "/2024/04/30/淘天暑期实习面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/9df566a73df3459ced3a41e6a9b124c4.jpeg", title: "现代化的包管理工具:uv", href: "/2025/04/30/现代的包管理工具uv/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/addc1330ad0be5e99fdcfcb83dbbef6a.jpeg", title: "秋招上海银行面试分享", href: "/2024/10/25/秋招上海银行面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/1c6fc333392b998f32dffef731788ea7.jpeg", title: "秋招中兴面试分享", href: "/2024/09/19/秋招中兴面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/cda763e55b037970dd17031cffcd4e97.png", title: "秋招中金所面试分享", href: "/2024/11/01/秋招中金所面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/4dd98d0dc7fdb586f07c96d9d9dbe5eb.jpeg", title: "秋招华为面试分享", href: "/2024/10/15/秋招华为面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/ed0b2439c6e30589320d7561ef5af581.jpeg", title: "秋招合肥安迅精密技术面试分享", href: "/2024/09/23/秋招合肥安迅精密技术面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/e236385b88c57c4a60ef5aaf72189cff.jpeg", title: "秋招广联达", href: "/2024/10/31/秋招广联达面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/3e5e22a30f48d04a78793025395c668b.jpeg", title: "秋招得物面试分享", href: "/2024/09/22/秋招得物面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/617da713d7b9fda5210171a556bd7f37.jpeg", title: "秋招快手面试分享", href: "/2024/09/24/秋招快手面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/9e2a0c81735df6e2537970db4d444c69.jpeg", title: "秋招招联面试分享", href: "/2024/10/19/秋招招联面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/744bb81c16f19a7793ade4c7a0ddd655.jpeg", title: "秋招提前批百度机器学习/数据挖掘/自然语言处理工程师面试分享", href: "/2024/08/06/秋招提前批百度面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/8b7a826c00d8ada33d1dfa9ac7ce64dd.jpeg", title: "秋招携程面试分享", href: "/2024/10/15/秋招携程面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/01cb6bf5523d02fb95edf8da1c02b62b.jpeg", title: "秋招比亚迪面试分享", href: "/2024/09/23/秋招比亚迪面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/5a4d35a32963632fb3d07910503c13b3.jpeg", title: "秋招淘天凉经", href: "/2024/09/19/秋招淘天面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/ec650a59372c0b622e7065b01ab37920.jpeg", title: "秋招滴滴面试分享", href: "/2024/09/28/秋招滴滴面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/53a57a8ff31e36a01cc76723d34c6235.jpeg", title: "秋招理想面试分享", href: "/2024/09/26/秋招理想面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/effa96253b0b302d9ae7cfa94c7f5ae3.jpeg", title: "秋招百信银行面试分享", href: "/2024/10/22/秋招百信银行面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/dc196f33f2ea5313a41518c2016b80cf.jpeg", title: "秋招科大讯飞面试分享", href: "/2024/10/12/秋招科大讯飞面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/65f920634dd84d2fd4d66db85d113e3f.jpeg", title: "秋招荣耀面试分享", href: "/2024/10/14/秋招荣耀面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/da31bfb39d7d0fb356ac618060ece6b7.png", title: "秋招蔚来面试分享", href: "/2024/11/01/秋招蔚来面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/b3b1b24841d210d0cbe1bf5a64b04d44.jpeg", title: "秋招虾皮面试分享", href: "/2024/10/20/秋招虾皮面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/6dd5501e98b9dfdfdb8ed3f0d19a4a19.jpeg", title: "秋招蚂蚁面试分享", href: "/2024/09/25/秋招蚂蚁面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/2349135dde1b4a4828b209c87569c4a8.jpeg", title: "秋招金山面试分享", href: "/2024/11/06/秋招金山面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/790dbf2659a8aff75e42f73ecf06fab9.png", title: "秋招面试总结分享", href: "/2024/11/30/秋招面试总结分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/e00a8894b3eeeffa688d3fe1b80dc395.jpeg", title: "腾讯AI Lab暑实面试分享", href: "/2024/05/28/腾讯AI Lab暑实面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/xidian1.jpg", title: "记录我的第一次搭建博客", href: "/2020/10/31/记录第一次搭博客/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/a22477f98ae4f50717035574c2f85a32.jpeg", title: "钉钉和淘天机器学习捞暑期实习面试分享", href: "/2024/05/22/钉钉和淘天机器学习捞暑期实习面试分享/" } - - { src: "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/1cfcf9e2b6691718b5bc070c3b7f222b.jpeg", title: "阿里国际暑实面试分享", href: "/2024/05/23/阿里国际暑实面试分享/" } + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/mouse.jpg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/除夕贺图.png" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102119630.jpg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/nilu1.jpg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/moon.jpg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/82DA5A8E1D99BD7DC83A051FA8EA75E2.jpg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/hyy.jpg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/civilization-acceleration-cover.svg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102148023.jpg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303022754.png" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/genshin2.jpg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/f786f54959c72a37297a42973764cd39_720.jpg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/9df566a73df3459ced3a41e6a9b124c4.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/addc1330ad0be5e99fdcfcb83dbbef6a.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/1c6fc333392b998f32dffef731788ea7.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/cda763e55b037970dd17031cffcd4e97.png" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/4dd98d0dc7fdb586f07c96d9d9dbe5eb.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/ed0b2439c6e30589320d7561ef5af581.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/e236385b88c57c4a60ef5aaf72189cff.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/3e5e22a30f48d04a78793025395c668b.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/617da713d7b9fda5210171a556bd7f37.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/9e2a0c81735df6e2537970db4d444c69.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/744bb81c16f19a7793ade4c7a0ddd655.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/8b7a826c00d8ada33d1dfa9ac7ce64dd.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/01cb6bf5523d02fb95edf8da1c02b62b.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/5a4d35a32963632fb3d07910503c13b3.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/ec650a59372c0b622e7065b01ab37920.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/53a57a8ff31e36a01cc76723d34c6235.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/effa96253b0b302d9ae7cfa94c7f5ae3.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/dc196f33f2ea5313a41518c2016b80cf.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/65f920634dd84d2fd4d66db85d113e3f.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/da31bfb39d7d0fb356ac618060ece6b7.png" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/b3b1b24841d210d0cbe1bf5a64b04d44.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/6dd5501e98b9dfdfdb8ed3f0d19a4a19.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/2349135dde1b4a4828b209c87569c4a8.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/790dbf2659a8aff75e42f73ecf06fab9.png" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/e00a8894b3eeeffa688d3fe1b80dc395.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/xidian1.jpg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/a22477f98ae4f50717035574c2f85a32.jpeg" + - "https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/1cfcf9e2b6691718b5bc070c3b7f222b.jpeg" diff --git a/src/components/Head.astro b/src/components/Head.astro index 4c0f6a3f3..0609bf38c 100644 --- a/src/components/Head.astro +++ b/src/components/Head.astro @@ -136,7 +136,7 @@ const { title, description, image = "/og-image.png" } = Astro.props; if (userTheme === "light" || userTheme === "dark") { toggleTheme(userTheme === "dark"); } else { - // 浅色为默认(design-spec §5),不跟随系统深色偏好 + // 浅色为默认,不跟随系统深色偏好 toggleTheme(false); } } diff --git a/src/consts.ts b/src/consts.ts index aad237cda..1eba4bd68 100644 --- a/src/consts.ts +++ b/src/consts.ts @@ -7,10 +7,6 @@ export const SITE: Site = { NUM_POSTS_ON_HOMEPAGE: siteConfig.site.numPostsOnHomepage, }; -export const CATEGORIES: string[] = siteConfig.categories; - -export type Category = string; - export const SOCIALS: Socials = siteConfig.socials.map((s) => ({ NAME: s.name, HREF: s.href, diff --git a/src/content.config.ts b/src/content.config.ts index 51aae5f00..8f8d13130 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -1,7 +1,6 @@ import { defineCollection } from "astro:content"; import { z } from "astro/zod"; import { glob } from 'astro/loaders'; -import siteConfig from "@lib/site-config"; const blog = defineCollection({ loader: glob({ pattern: '**/*.{md,mdx}', base: "./src/content/blog" }), @@ -10,8 +9,7 @@ const blog = defineCollection({ description: z.string(), date: z.coerce.date(), updated: z.coerce.date().optional(), - section: z.enum(siteConfig.categories as [string, ...string[]]), - tags: z.array(z.string()).optional(), + section: z.string(), legacyPath: z.string(), draft: z.boolean().optional(), cover: z.string().optional(), diff --git "a/src/content/blog/Agent\344\270\212\344\270\213\346\226\207\345\267\245\347\250\213\357\274\232\344\273\216Token\347\256\241\347\220\206\345\210\260\347\273\210\350\272\253\350\256\260\345\277\206/index.md" "b/src/content/blog/Agent\344\270\212\344\270\213\346\226\207\345\267\245\347\250\213\357\274\232\344\273\216Token\347\256\241\347\220\206\345\210\260\347\273\210\350\272\253\350\256\260\345\277\206/index.md" index 1896a42c6..3bab7da51 100644 --- "a/src/content/blog/Agent\344\270\212\344\270\213\346\226\207\345\267\245\347\250\213\357\274\232\344\273\216Token\347\256\241\347\220\206\345\210\260\347\273\210\350\272\253\350\256\260\345\277\206/index.md" +++ "b/src/content/blog/Agent\344\270\212\344\270\213\346\226\207\345\267\245\347\250\213\357\274\232\344\273\216Token\347\256\241\347\220\206\345\210\260\347\273\210\350\272\253\350\256\260\345\277\206/index.md" @@ -2,8 +2,6 @@ title: Agent 上下文工程:从 Token 管理到终身记忆 date: 2026-05-10 section: 技术与工程 -tags: - - Agent description: 深入探讨 AI Agent 的上下文工程,从 Token 预算管理到三层记忆架构,构建能让 Agent 越用越聪明的记忆系统。 legacyPath: /2026/05/10/Agent上下文工程:从Token管理到终身记忆/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/agent-context-engineering-cover.jpg diff --git "a/src/content/blog/Codex\351\200\240\351\233\266\344\273\266Hermes\345\205\273\347\263\273\347\273\237/index.md" "b/src/content/blog/Codex\351\200\240\351\233\266\344\273\266Hermes\345\205\273\347\263\273\347\273\237/index.md" index 4e019009d..03ea85c8b 100644 --- "a/src/content/blog/Codex\351\200\240\351\233\266\344\273\266Hermes\345\205\273\347\263\273\347\273\237/index.md" +++ "b/src/content/blog/Codex\351\200\240\351\233\266\344\273\266Hermes\345\205\273\347\263\273\347\273\237/index.md" @@ -2,12 +2,6 @@ title: Codex 造零件,Hermes 养系统:我用 Hermes 实践 PassiveAgent 的过程 date: 2026-06-10 section: 技术与工程 -tags: - - Agent - - Hermes - - PassiveAgent - - AI工具 - - 工程实践 description: 以 PassiveAgent 为案例,记录我如何用 Hermes 作为长期项目工作台,配合 Codex/Claude Code 开发一个个人注意力调度系统,以及对 Agent 自进化和工程化实践的思考。 legacyPath: /2026/06/10/Codex造零件Hermes养系统/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/passiveagent-hermes-cover.svg diff --git a/src/content/blog/HRNet/index.md b/src/content/blog/HRNet/index.md index 0036abb11..c7ed79a9d 100644 --- a/src/content/blog/HRNet/index.md +++ b/src/content/blog/HRNet/index.md @@ -2,8 +2,6 @@ title: 【论文阅读】 Deep High-Resolution Representation Learning for Visual Recognition date: 2022-09-21 section: 学习与研究 -tags: - - 深度学习 description: 读论文的记录 legacyPath: /2022/09/21/HRNet/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/mouse.jpg diff --git "a/src/content/blog/Hexo\345\215\232\345\256\242\351\205\215\347\275\256Github Actions\345\222\214\344\273\223\345\272\223\345\210\206\346\224\257\345\255\230\345\202\250\345\256\236\347\216\260\350\207\252\345\212\250\345\214\226\347\274\226\350\257\221\351\203\250\347\275\262/index.md" "b/src/content/blog/Hexo\345\215\232\345\256\242\351\205\215\347\275\256Github Actions\345\222\214\344\273\223\345\272\223\345\210\206\346\224\257\345\255\230\345\202\250\345\256\236\347\216\260\350\207\252\345\212\250\345\214\226\347\274\226\350\257\221\351\203\250\347\275\262/index.md" index 8a383469f..f943c4a91 100644 --- "a/src/content/blog/Hexo\345\215\232\345\256\242\351\205\215\347\275\256Github Actions\345\222\214\344\273\223\345\272\223\345\210\206\346\224\257\345\255\230\345\202\250\345\256\236\347\216\260\350\207\252\345\212\250\345\214\226\347\274\226\350\257\221\351\203\250\347\275\262/index.md" +++ "b/src/content/blog/Hexo\345\215\232\345\256\242\351\205\215\347\275\256Github Actions\345\222\214\344\273\223\345\272\223\345\210\206\346\224\257\345\255\230\345\202\250\345\256\236\347\216\260\350\207\252\345\212\250\345\214\226\347\274\226\350\257\221\351\203\250\347\275\262/index.md" @@ -2,8 +2,6 @@ title: Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署 date: 2024-03-03 section: 技术与工程 -tags: - - 博客配置 description: 本文介绍如何使用Github Actions自动部署博客,并且使用仓库分支存储图片等资源。 legacyPath: /2024/03/03/Hexo博客配置Github Actions和仓库分支存储实现自动化编译部署/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/除夕贺图.png diff --git "a/src/content/blog/SkillEvolver\350\207\252\350\277\233\345\214\226\345\256\236\351\252\214\345\244\215\347\233\230/index.md" "b/src/content/blog/SkillEvolver\350\207\252\350\277\233\345\214\226\345\256\236\351\252\214\345\244\215\347\233\230/index.md" index aa3498b83..fd39da35a 100644 --- "a/src/content/blog/SkillEvolver\350\207\252\350\277\233\345\214\226\345\256\236\351\252\214\345\244\215\347\233\230/index.md" +++ "b/src/content/blog/SkillEvolver\350\207\252\350\277\233\345\214\226\345\256\236\351\252\214\345\244\215\347\233\230/index.md" @@ -2,14 +2,6 @@ title: SkillEvolver 复盘:自进化没有成功,但评测框架留下来了 date: 2026-06-20 section: 技术与工程 -tags: - - Agent - - SkillEvolver - - 自进化 - - Agent评测 - - Prompt工程 - - 负结果 - - 工程实践 description: 复盘我做 SkillEvolver 自进化项目的全过程:从“让 Prompt Skill 自动变强”的期待,到发现正结果被消融收窄、跨模型迁移为零,最后把项目重新定位为 Agent / Prompt Skill 回归评测框架。 legacyPath: /2026/06/20/SkillEvolver自进化实验复盘/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/skillevolver-eval-cover.svg diff --git "a/src/content/blog/Ubuntu 20.04\344\270\213\346\267\261\345\272\246\345\255\246\344\271\240\347\216\257\345\242\203\346\220\255\345\273\272\344\273\245\345\217\212\345\270\270\347\224\250\345\267\245\345\205\267\351\205\215\347\275\256/index.md" "b/src/content/blog/Ubuntu 20.04\344\270\213\346\267\261\345\272\246\345\255\246\344\271\240\347\216\257\345\242\203\346\220\255\345\273\272\344\273\245\345\217\212\345\270\270\347\224\250\345\267\245\345\205\267\351\205\215\347\275\256/index.md" index 13949a04d..c6f70d1a0 100644 --- "a/src/content/blog/Ubuntu 20.04\344\270\213\346\267\261\345\272\246\345\255\246\344\271\240\347\216\257\345\242\203\346\220\255\345\273\272\344\273\245\345\217\212\345\270\270\347\224\250\345\267\245\345\205\267\351\205\215\347\275\256/index.md" +++ "b/src/content/blog/Ubuntu 20.04\344\270\213\346\267\261\345\272\246\345\255\246\344\271\240\347\216\257\345\242\203\346\220\255\345\273\272\344\273\245\345\217\212\345\270\270\347\224\250\345\267\245\345\205\267\351\205\215\347\275\256/index.md" @@ -2,8 +2,6 @@ title: Ubuntu 20.04下Pytorch深度学习环境搭建以及常用工具配置 date: 2022-04-10 section: 技术与工程 -tags: - - 深度学习 description: 一点小记录 legacyPath: /2022/04/10/Ubuntu 20.04下深度学习环境搭建以及常用工具配置/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102119630.jpg diff --git a/src/content/blog/hermes-self-evolving-blog-engine/index.md b/src/content/blog/hermes-self-evolving-blog-engine/index.md index cbc06dba7..8d96b8378 100644 --- a/src/content/blog/hermes-self-evolving-blog-engine/index.md +++ b/src/content/blog/hermes-self-evolving-blog-engine/index.md @@ -2,15 +2,6 @@ title: Hermes 自进化博客引擎:从选题到部署,几十分钟全自动闭环 date: 2026-05-13 section: 技术与工程 -tags: - - Hermes - - Agent - - 自动化 - - 博客 - - Skill - - 自进化 - - OpenClaw - - Claude Code description: 作为 Agent 算法工程师,我用 Hermes 搭建了一套从选题到部署全自动的博客流水线——几十分钟完成一篇带 SVG 配图的技术文章,而且每次执行后自动沉淀 Skill,让下次更稳更快。 legacyPath: /2026/05/13/hermes-self-evolving-blog-engine/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/hermes-blog-engine-cover.svg diff --git "a/src/content/blog/ubuntu\347\232\204\344\275\277\347\224\250/index.md" "b/src/content/blog/ubuntu\347\232\204\344\275\277\347\224\250/index.md" index 653e1470c..4c4608264 100644 --- "a/src/content/blog/ubuntu\347\232\204\344\275\277\347\224\250/index.md" +++ "b/src/content/blog/ubuntu\347\232\204\344\275\277\347\224\250/index.md" @@ -2,8 +2,6 @@ title: Ubuntu的基本使用 date: 2022-11-02 section: 技术与工程 -tags: - - Ubuntu description: 一点小记录 legacyPath: /2022/11/02/ubuntu的使用/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/nilu1.jpg diff --git "a/src/content/blog/\344\273\212\346\227\245\351\232\217\347\254\224/index.md" "b/src/content/blog/\344\273\212\346\227\245\351\232\217\347\254\224/index.md" index 02e51e928..c89fd8e33 100644 --- "a/src/content/blog/\344\273\212\346\227\245\351\232\217\347\254\224/index.md" +++ "b/src/content/blog/\344\273\212\346\227\245\351\232\217\347\254\224/index.md" @@ -2,8 +2,6 @@ title: 今日随笔 date: 2022-05-10 section: 思考与随笔 -tags: - - 记录生活 description: 进步了 legacyPath: /2022/05/10/今日随笔/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/moon.jpg diff --git "a/src/content/blog/\345\215\216\344\270\272\346\232\221\346\234\237\345\256\236\344\271\240\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\345\215\216\344\270\272\346\232\221\346\234\237\345\256\236\344\271\240\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 9acee4255..e96078f36 100644 --- "a/src/content/blog/\345\215\216\344\270\272\346\232\221\346\234\237\345\256\236\344\271\240\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\345\215\216\344\270\272\346\232\221\346\234\237\345\256\236\344\271\240\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 华为暑期实习面试分享 date: 2024-04-28 section: 经历与记录 -tags: - - 面试记录 description: 华为一面二面的面试记录分享。 legacyPath: /2024/04/28/华为暑期实习面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/82DA5A8E1D99BD7DC83A051FA8EA75E2.jpg diff --git "a/src/content/blog/\345\255\246\346\234\257\344\272\244\346\265\201\345\210\206\344\272\253ActionFormer/index.md" "b/src/content/blog/\345\255\246\346\234\257\344\272\244\346\265\201\345\210\206\344\272\253ActionFormer/index.md" index aad8ee3f8..8b6640176 100644 --- "a/src/content/blog/\345\255\246\346\234\257\344\272\244\346\265\201\345\210\206\344\272\253ActionFormer/index.md" +++ "b/src/content/blog/\345\255\246\346\234\257\344\272\244\346\265\201\345\210\206\344\272\253ActionFormer/index.md" @@ -2,8 +2,6 @@ title: ActionFormer论文分享 date: 2022-11-10 section: 学习与研究 -tags: - - ActionFormer description: 之前读的论文 legacyPath: /2022/11/10/学术交流分享ActionFormer/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/hyy.jpg diff --git "a/src/content/blog/\345\275\223\346\226\207\346\230\216\350\270\251\344\270\213\345\212\240\351\200\237\350\270\217\346\235\277\344\271\213\345\220\216/index.md" "b/src/content/blog/\345\275\223\346\226\207\346\230\216\350\270\251\344\270\213\345\212\240\351\200\237\350\270\217\346\235\277\344\271\213\345\220\216/index.md" index d50049c50..a08412757 100644 --- "a/src/content/blog/\345\275\223\346\226\207\346\230\216\350\270\251\344\270\213\345\212\240\351\200\237\350\270\217\346\235\277\344\271\213\345\220\216/index.md" +++ "b/src/content/blog/\345\275\223\346\226\207\346\230\216\350\270\251\344\270\213\345\212\240\351\200\237\350\270\217\346\235\277\344\271\213\345\220\216/index.md" @@ -2,13 +2,6 @@ title: 当文明踩下加速踏板之后 date: 2026-08-29 section: 思考与随笔 -tags: - - 人类文明 - - 科技 - - 人工智能 - - 费米悖论 - - 航天 - - 长寿 description: 从童年对动能回收的疑问出发,思考费米悖论、衰老与长寿、人工智能、商业航天和文明的自我约束:当人类不断突破自然边界,我们是否具备承担这些突破的能力? legacyPath: /2026/08/29/当文明踩下加速踏板之后/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/civilization-acceleration-cover.svg diff --git "a/src/content/blog/\346\210\221\347\232\204\347\224\237\346\264\273/index.md" "b/src/content/blog/\346\210\221\347\232\204\347\224\237\346\264\273/index.md" index 1cf3d6282..f18105de5 100644 --- "a/src/content/blog/\346\210\221\347\232\204\347\224\237\346\264\273/index.md" +++ "b/src/content/blog/\346\210\221\347\232\204\347\224\237\346\264\273/index.md" @@ -2,8 +2,6 @@ title: 考研后的思考 date: 2021-12-29 section: 思考与随笔 -tags: - - 生活 description: 反内卷而不躺平 legacyPath: /2021/12/29/我的生活/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/202205102148023.jpg diff --git "a/src/content/blog/\346\225\260\346\215\256\346\214\226\346\216\230\346\212\245\345\221\212\342\200\224\342\200\224MIMC\346\225\260\346\215\256\351\233\206\347\232\204\351\242\204\345\244\204\347\220\206/index.md" "b/src/content/blog/\346\225\260\346\215\256\346\214\226\346\216\230\346\212\245\345\221\212\342\200\224\342\200\224MIMC\346\225\260\346\215\256\351\233\206\347\232\204\351\242\204\345\244\204\347\220\206/index.md" index 4387cf5f6..49c19563f 100644 --- "a/src/content/blog/\346\225\260\346\215\256\346\214\226\346\216\230\346\212\245\345\221\212\342\200\224\342\200\224MIMC\346\225\260\346\215\256\351\233\206\347\232\204\351\242\204\345\244\204\347\220\206/index.md" +++ "b/src/content/blog/\346\225\260\346\215\256\346\214\226\346\216\230\346\212\245\345\221\212\342\200\224\342\200\224MIMC\346\225\260\346\215\256\351\233\206\347\232\204\351\242\204\345\244\204\347\220\206/index.md" @@ -2,8 +2,6 @@ title: 数据挖掘报告——MIMC数据集的预处理 date: 2021-04-08 section: 学习与研究 -tags: - - 数据挖掘 description: 利用 MySQL 与 Python 对 MIMC 数据集进行提取、缺失值与离群点处理、去噪与插值的数据预处理实验记录。 legacyPath: /2021/04/08/数据挖掘报告——MIMC数据集的预处理/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303022754.png diff --git "a/src/content/blog/\346\234\215\345\212\241\345\231\250\345\270\270\350\247\201\346\212\200\346\234\257\351\227\256\351\242\230\344\270\216\346\212\200\345\267\247/index.md" "b/src/content/blog/\346\234\215\345\212\241\345\231\250\345\270\270\350\247\201\346\212\200\346\234\257\351\227\256\351\242\230\344\270\216\346\212\200\345\267\247/index.md" index 9cba54c0b..5f4c602eb 100644 --- "a/src/content/blog/\346\234\215\345\212\241\345\231\250\345\270\270\350\247\201\346\212\200\346\234\257\351\227\256\351\242\230\344\270\216\346\212\200\345\267\247/index.md" +++ "b/src/content/blog/\346\234\215\345\212\241\345\231\250\345\270\270\350\247\201\346\212\200\346\234\257\351\227\256\351\242\230\344\270\216\346\212\200\345\267\247/index.md" @@ -2,8 +2,6 @@ title: 服务器常见技术问题与技巧 date: 2023-09-03 section: 技术与工程 -tags: - - 技术问题 description: 本文记录了一些常见的技术问题与技巧 legacyPath: /2023/09/03/服务器常见技术问题与技巧/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303022754.png diff --git "a/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\212\346\234\272\346\212\245\345\221\212\342\200\224\342\200\224\350\201\232\347\261\273\345\210\206\346\236\220/index.md" "b/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\212\346\234\272\346\212\245\345\221\212\342\200\224\342\200\224\350\201\232\347\261\273\345\210\206\346\236\220/index.md" index 09f084afe..be68c07fa 100644 --- "a/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\212\346\234\272\346\212\245\345\221\212\342\200\224\342\200\224\350\201\232\347\261\273\345\210\206\346\236\220/index.md" +++ "b/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\344\270\212\346\234\272\346\212\245\345\221\212\342\200\224\342\200\224\350\201\232\347\261\273\345\210\206\346\236\220/index.md" @@ -2,8 +2,6 @@ title: 机器学习上机报告——聚类分析 date: 2021-05-23 section: 学习与研究 -tags: - - 机器学习 description: 本文使用了 K-means 和 DBSCAN 两种聚类方法, 较好的完成了聚类任务, 并将得到的结果使用了 t-SNE 和 PCA 两种方法进行降维可视化,从而更好的得到聚类的效果,并计算了轮廓系数、 CH score、 DBI 这些聚类指标, 对于 K-means 方法还使用了图片进行聚类, 使得效果更加直观, 实验效果非常好。 legacyPath: /2021/05/23/机器学习上机报告——聚类分析/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303022754.png diff --git "a/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\346\212\245\345\221\212\342\200\224\342\200\224\346\225\260\346\215\256\345\210\206\347\261\273\347\232\204\345\256\236\347\216\260/index.md" "b/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\346\212\245\345\221\212\342\200\224\342\200\224\346\225\260\346\215\256\345\210\206\347\261\273\347\232\204\345\256\236\347\216\260/index.md" index 77a7d1cd0..c81723d08 100644 --- "a/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\346\212\245\345\221\212\342\200\224\342\200\224\346\225\260\346\215\256\345\210\206\347\261\273\347\232\204\345\256\236\347\216\260/index.md" +++ "b/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\346\212\245\345\221\212\342\200\224\342\200\224\346\225\260\346\215\256\345\210\206\347\261\273\347\232\204\345\256\236\347\216\260/index.md" @@ -2,8 +2,6 @@ title: 机器学习报告——数据分类的实现 date: 2021-04-11 section: 学习与研究 -tags: - - 机器学习 description: 使用 logistic 回归、神经网络、高斯判别分析与贝叶斯方法对 Sonar 数据集进行分类的实现与比较。 legacyPath: /2021/04/11/机器学习报告——数据分类的实现/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303022754.png diff --git "a/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\346\212\245\345\221\212\342\200\224\342\200\224\351\253\230\345\205\211\350\260\261\351\201\245\346\204\237\347\211\271\345\276\201\351\200\211\346\213\251/index.md" "b/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\346\212\245\345\221\212\342\200\224\342\200\224\351\253\230\345\205\211\350\260\261\351\201\245\346\204\237\347\211\271\345\276\201\351\200\211\346\213\251/index.md" index b4d982232..c15fbcaec 100644 --- "a/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\346\212\245\345\221\212\342\200\224\342\200\224\351\253\230\345\205\211\350\260\261\351\201\245\346\204\237\347\211\271\345\276\201\351\200\211\346\213\251/index.md" +++ "b/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\346\212\245\345\221\212\342\200\224\342\200\224\351\253\230\345\205\211\350\260\261\351\201\245\346\204\237\347\211\271\345\276\201\351\200\211\346\213\251/index.md" @@ -2,8 +2,6 @@ title: 机器学习作业——高光谱遥感特征选择 date: 2021-04-28 section: 学习与研究 -tags: - - 机器学习 description: 基于 KSC 高光谱遥感数据集,用 Filter 与 Wrapper 方法进行波段特征选择并比较优缺点。 legacyPath: /2021/04/28/机器学习报告——高光谱遥感特征选择/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303022754.png diff --git "a/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\350\257\276\347\250\213\346\212\245\345\221\212\342\200\224\342\200\224\346\263\242\345\243\253\351\241\277\346\210\277\344\273\267\351\242\204\346\265\213/index.md" "b/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\350\257\276\347\250\213\346\212\245\345\221\212\342\200\224\342\200\224\346\263\242\345\243\253\351\241\277\346\210\277\344\273\267\351\242\204\346\265\213/index.md" index c70c3089a..84f5cac3c 100644 --- "a/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\350\257\276\347\250\213\346\212\245\345\221\212\342\200\224\342\200\224\346\263\242\345\243\253\351\241\277\346\210\277\344\273\267\351\242\204\346\265\213/index.md" +++ "b/src/content/blog/\346\234\272\345\231\250\345\255\246\344\271\240\350\257\276\347\250\213\346\212\245\345\221\212\342\200\224\342\200\224\346\263\242\345\243\253\351\241\277\346\210\277\344\273\267\351\242\204\346\265\213/index.md" @@ -2,8 +2,6 @@ title: 机器学习课程报告——波士顿房价预测 date: 2021-06-18 section: 学习与研究 -tags: - - 机器学习 description: 实现波士顿房价预测,比较神经网络模型与线性回归模型的效果。 legacyPath: /2021/06/18/机器学习课程报告——波士顿房价预测/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303022754.png diff --git "a/src/content/blog/\346\265\205\350\260\210\343\200\212\345\216\237\347\245\236\343\200\213\346\270\270\346\210\217\347\232\204\347\220\206\350\247\243/index.md" "b/src/content/blog/\346\265\205\350\260\210\343\200\212\345\216\237\347\245\236\343\200\213\346\270\270\346\210\217\347\232\204\347\220\206\350\247\243/index.md" index 95f8bfa50..e27b851e8 100644 --- "a/src/content/blog/\346\265\205\350\260\210\343\200\212\345\216\237\347\245\236\343\200\213\346\270\270\346\210\217\347\232\204\347\220\206\350\247\243/index.md" +++ "b/src/content/blog/\346\265\205\350\260\210\343\200\212\345\216\237\347\245\236\343\200\213\346\270\270\346\210\217\347\232\204\347\220\206\350\247\243/index.md" @@ -2,8 +2,6 @@ title: 浅谈《原神》游戏的理解 date: 2023-02-07 section: 思考与随笔 -tags: - - 随笔 description: 一点点的理解 legacyPath: /2023/02/07/浅谈《原神》游戏的理解/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/genshin2.jpg diff --git "a/src/content/blog/\346\267\230\345\244\251\346\232\221\346\234\237\345\256\236\344\271\240\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\346\267\230\345\244\251\346\232\221\346\234\237\345\256\236\344\271\240\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 691703500..514df2558 100644 --- "a/src/content/blog/\346\267\230\345\244\251\346\232\221\346\234\237\345\256\236\344\271\240\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\346\267\230\345\244\251\346\232\221\346\234\237\345\256\236\344\271\240\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 淘天暑期实习计算机视觉面试凉经 date: 2024-04-30 section: 经历与记录 -tags: - - 面试记录 description: 淘天技术的面试记录分享。 legacyPath: /2024/04/30/淘天暑期实习面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/f786f54959c72a37297a42973764cd39_720.jpg diff --git "a/src/content/blog/\347\216\260\344\273\243\347\232\204\345\214\205\347\256\241\347\220\206\345\267\245\345\205\267uv/index.md" "b/src/content/blog/\347\216\260\344\273\243\347\232\204\345\214\205\347\256\241\347\220\206\345\267\245\345\205\267uv/index.md" index a5fd02a9c..dc1b42ab1 100644 --- "a/src/content/blog/\347\216\260\344\273\243\347\232\204\345\214\205\347\256\241\347\220\206\345\267\245\345\205\267uv/index.md" +++ "b/src/content/blog/\347\216\260\344\273\243\347\232\204\345\214\205\347\256\241\347\220\206\345\267\245\345\205\267uv/index.md" @@ -2,8 +2,6 @@ title: 现代化的包管理工具:uv date: 2025-04-30 section: 技术与工程 -tags: - - 技术知识 description: 现代化的包管理工具:uv legacyPath: /2025/04/30/现代的包管理工具uv/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/9df566a73df3459ced3a41e6a9b124c4.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\344\270\212\346\265\267\351\223\266\350\241\214\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\344\270\212\346\265\267\351\223\266\350\241\214\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index a76a92eb0..bf11cc24e 100644 --- "a/src/content/blog/\347\247\213\346\213\233\344\270\212\346\265\267\351\223\266\350\241\214\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\344\270\212\346\265\267\351\223\266\350\241\214\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招上海银行面试分享 date: 2024-10-25 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批上海银行面试分享。 legacyPath: /2024/10/25/秋招上海银行面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/addc1330ad0be5e99fdcfcb83dbbef6a.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\344\270\255\345\205\264\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\344\270\255\345\205\264\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index a35413976..9673dc633 100644 --- "a/src/content/blog/\347\247\213\346\213\233\344\270\255\345\205\264\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\344\270\255\345\205\264\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招中兴面试分享 date: 2024-09-19 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批中兴面试分享。 legacyPath: /2024/09/19/秋招中兴面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/1c6fc333392b998f32dffef731788ea7.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\344\270\255\351\207\221\346\211\200\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\344\270\255\351\207\221\346\211\200\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index d54c06ef4..a9ab8327f 100644 --- "a/src/content/blog/\347\247\213\346\213\233\344\270\255\351\207\221\346\211\200\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\344\270\255\351\207\221\346\211\200\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招中金所面试分享 date: 2024-11-01 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批中金所面试分享。 legacyPath: /2024/11/01/秋招中金所面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/cda763e55b037970dd17031cffcd4e97.png diff --git "a/src/content/blog/\347\247\213\346\213\233\345\215\216\344\270\272\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\345\215\216\344\270\272\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index aeb46cbb1..c44cc52fd 100644 --- "a/src/content/blog/\347\247\213\346\213\233\345\215\216\344\270\272\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\345\215\216\344\270\272\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招华为面试分享 date: 2024-10-15 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批华为面试分享。 legacyPath: /2024/10/15/秋招华为面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/4dd98d0dc7fdb586f07c96d9d9dbe5eb.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\345\220\210\350\202\245\345\256\211\350\277\205\347\262\276\345\257\206\346\212\200\346\234\257\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\345\220\210\350\202\245\345\256\211\350\277\205\347\262\276\345\257\206\346\212\200\346\234\257\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 04651fdcf..8545c96ac 100644 --- "a/src/content/blog/\347\247\213\346\213\233\345\220\210\350\202\245\345\256\211\350\277\205\347\262\276\345\257\206\346\212\200\346\234\257\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\345\220\210\350\202\245\345\256\211\350\277\205\347\262\276\345\257\206\346\212\200\346\234\257\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招合肥安迅精密技术面试分享 date: 2024-09-23 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批合肥安迅精密技术面试分享。 legacyPath: /2024/09/23/秋招合肥安迅精密技术面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/ed0b2439c6e30589320d7561ef5af581.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\345\271\277\350\201\224\350\276\276\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\345\271\277\350\201\224\350\276\276\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 15dfac9fd..1d7c965a9 100644 --- "a/src/content/blog/\347\247\213\346\213\233\345\271\277\350\201\224\350\276\276\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\345\271\277\350\201\224\350\276\276\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招广联达 date: 2024-10-31 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批广联达技术面试分享。 legacyPath: /2024/10/31/秋招广联达面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/e236385b88c57c4a60ef5aaf72189cff.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\345\276\227\347\211\251\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\345\276\227\347\211\251\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 7c993f979..bb02101eb 100644 --- "a/src/content/blog/\347\247\213\346\213\233\345\276\227\347\211\251\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\345\276\227\347\211\251\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招得物面试分享 date: 2024-09-22 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批得物面试分享。 legacyPath: /2024/09/22/秋招得物面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/3e5e22a30f48d04a78793025395c668b.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\345\277\253\346\211\213\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\345\277\253\346\211\213\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 5a88e81c1..79542c111 100644 --- "a/src/content/blog/\347\247\213\346\213\233\345\277\253\346\211\213\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\345\277\253\346\211\213\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招快手面试分享 date: 2024-09-24 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批快手技术面试分享。 legacyPath: /2024/09/24/秋招快手面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/617da713d7b9fda5210171a556bd7f37.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\346\213\233\350\201\224\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\346\213\233\350\201\224\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 86c91db47..eebfa6cf4 100644 --- "a/src/content/blog/\347\247\213\346\213\233\346\213\233\350\201\224\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\346\213\233\350\201\224\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招招联面试分享 date: 2024-10-19 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批招联面试分享。 legacyPath: /2024/10/19/秋招招联面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/9e2a0c81735df6e2537970db4d444c69.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\346\213\274\345\244\232\345\244\232\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\346\213\274\345\244\232\345\244\232\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index fe0f51e26..895bb3e95 100644 --- "a/src/content/blog/\347\247\213\346\213\233\346\213\274\345\244\232\345\244\232\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\346\213\274\345\244\232\345\244\232\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招拼多多面试分享 date: 2024-10-10 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批拼多多技术面试分享。 legacyPath: /2024/10/10/秋招拼多多面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/9df566a73df3459ced3a41e6a9b124c4.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\346\217\220\345\211\215\346\211\271\347\231\276\345\272\246\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\346\217\220\345\211\215\346\211\271\347\231\276\345\272\246\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 8b0a01fd6..a6a1005d0 100644 --- "a/src/content/blog/\347\247\213\346\213\233\346\217\220\345\211\215\346\211\271\347\231\276\345\272\246\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\346\217\220\345\211\215\346\211\271\347\231\276\345\272\246\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招提前批百度机器学习/数据挖掘/自然语言处理工程师面试分享 date: 2024-08-06 section: 经历与记录 -tags: - - 面试记录 description: 秋招提前批百度机器学习/数据挖掘/自然语言处理工程师面试分享。 legacyPath: /2024/08/06/秋招提前批百度面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/744bb81c16f19a7793ade4c7a0ddd655.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\346\220\272\347\250\213\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\346\220\272\347\250\213\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index e81ead6aa..c54e8fffa 100644 --- "a/src/content/blog/\347\247\213\346\213\233\346\220\272\347\250\213\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\346\220\272\347\250\213\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招携程面试分享 date: 2024-10-15 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批携程面试分享 legacyPath: /2024/10/15/秋招携程面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/8b7a826c00d8ada33d1dfa9ac7ce64dd.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\346\257\224\344\272\232\350\277\252\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\346\257\224\344\272\232\350\277\252\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 169cd2a79..5a34ac70a 100644 --- "a/src/content/blog/\347\247\213\346\213\233\346\257\224\344\272\232\350\277\252\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\346\257\224\344\272\232\350\277\252\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招比亚迪面试分享 date: 2024-09-23 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批比亚迪面试分享。 legacyPath: /2024/09/23/秋招比亚迪面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/01cb6bf5523d02fb95edf8da1c02b62b.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\346\267\230\345\244\251\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\346\267\230\345\244\251\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 0a3c347fd..6a4140e61 100644 --- "a/src/content/blog/\347\247\213\346\213\233\346\267\230\345\244\251\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\346\267\230\345\244\251\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招淘天凉经 date: 2024-09-19 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批淘天面试分享。 legacyPath: /2024/09/19/秋招淘天面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/5a4d35a32963632fb3d07910503c13b3.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\346\273\264\346\273\264\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\346\273\264\346\273\264\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 80cc2aefa..7797c0551 100644 --- "a/src/content/blog/\347\247\213\346\213\233\346\273\264\346\273\264\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\346\273\264\346\273\264\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招滴滴面试分享 date: 2024-09-28 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批滴滴技术面试分享。 legacyPath: /2024/09/28/秋招滴滴面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/ec650a59372c0b622e7065b01ab37920.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\347\220\206\346\203\263\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\347\220\206\346\203\263\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 0d7ebb3eb..75ae07d97 100644 --- "a/src/content/blog/\347\247\213\346\213\233\347\220\206\346\203\263\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\347\220\206\346\203\263\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招理想面试分享 date: 2024-09-26 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批理想技术面试分享。 legacyPath: /2024/09/26/秋招理想面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/53a57a8ff31e36a01cc76723d34c6235.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\347\231\276\344\277\241\351\223\266\350\241\214\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\347\231\276\344\277\241\351\223\266\350\241\214\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index ecc818a57..e25f1485a 100644 --- "a/src/content/blog/\347\247\213\346\213\233\347\231\276\344\277\241\351\223\266\350\241\214\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\347\231\276\344\277\241\351\223\266\350\241\214\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招百信银行面试分享 date: 2024-10-22 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批百信银行面试分享。 legacyPath: /2024/10/22/秋招百信银行面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/effa96253b0b302d9ae7cfa94c7f5ae3.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\347\247\221\345\244\247\350\256\257\351\243\236\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\347\247\221\345\244\247\350\256\257\351\243\236\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 680c4c436..59fdaec47 100644 --- "a/src/content/blog/\347\247\213\346\213\233\347\247\221\345\244\247\350\256\257\351\243\236\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\347\247\221\345\244\247\350\256\257\351\243\236\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招科大讯飞面试分享 date: 2024-10-12 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批科大讯飞技术面试分享。 legacyPath: /2024/10/12/秋招科大讯飞面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/dc196f33f2ea5313a41518c2016b80cf.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\347\276\216\345\233\242\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\347\276\216\345\233\242\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 8d98a7636..d19abd11a 100644 --- "a/src/content/blog/\347\247\213\346\213\233\347\276\216\345\233\242\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\347\276\216\345\233\242\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招美团机器学习面试分享 date: 2024-09-12 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批美团机器学习面试分享。 legacyPath: /2024/09/12/秋招美团面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/3e5e22a30f48d04a78793025395c668b.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\350\215\243\350\200\200\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\350\215\243\350\200\200\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 7f8c40d39..ca557795c 100644 --- "a/src/content/blog/\347\247\213\346\213\233\350\215\243\350\200\200\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\350\215\243\350\200\200\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招荣耀面试分享 date: 2024-10-14 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批荣耀面试分享。 legacyPath: /2024/10/14/秋招荣耀面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/65f920634dd84d2fd4d66db85d113e3f.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\350\224\232\346\235\245\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\350\224\232\346\235\245\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 3c800748c..16138a0ee 100644 --- "a/src/content/blog/\347\247\213\346\213\233\350\224\232\346\235\245\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\350\224\232\346\235\245\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招蔚来面试分享 date: 2024-11-01 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批蔚来面试分享。 legacyPath: /2024/11/01/秋招蔚来面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/da31bfb39d7d0fb356ac618060ece6b7.png diff --git "a/src/content/blog/\347\247\213\346\213\233\350\231\276\347\232\256\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\350\231\276\347\232\256\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index a1c2e33e5..469b275a8 100644 --- "a/src/content/blog/\347\247\213\346\213\233\350\231\276\347\232\256\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\350\231\276\347\232\256\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招虾皮面试分享 date: 2024-10-20 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批虾皮面试分享。 legacyPath: /2024/10/20/秋招虾皮面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/b3b1b24841d210d0cbe1bf5a64b04d44.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\350\232\202\350\232\201\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\350\232\202\350\232\201\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index f56a0f6b5..46dd022a5 100644 --- "a/src/content/blog/\347\247\213\346\213\233\350\232\202\350\232\201\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\350\232\202\350\232\201\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招蚂蚁面试分享 date: 2024-09-25 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批蚂蚁技术面试分享。 legacyPath: /2024/09/25/秋招蚂蚁面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/6dd5501e98b9dfdfdb8ed3f0d19a4a19.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\351\207\221\345\261\261\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\351\207\221\345\261\261\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index efe096f71..1c397a961 100644 --- "a/src/content/blog/\347\247\213\346\213\233\351\207\221\345\261\261\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\351\207\221\345\261\261\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招金山面试分享 date: 2024-11-06 section: 经历与记录 -tags: - - 面试记录 description: 秋招正式批金山技术面试分享。 legacyPath: /2024/11/06/秋招金山面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/2349135dde1b4a4828b209c87569c4a8.jpeg diff --git "a/src/content/blog/\347\247\213\346\213\233\351\235\242\350\257\225\346\200\273\347\273\223\345\210\206\344\272\253/index.md" "b/src/content/blog/\347\247\213\346\213\233\351\235\242\350\257\225\346\200\273\347\273\223\345\210\206\344\272\253/index.md" index 3105032a9..a5bfe1469 100644 --- "a/src/content/blog/\347\247\213\346\213\233\351\235\242\350\257\225\346\200\273\347\273\223\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\347\247\213\346\213\233\351\235\242\350\257\225\346\200\273\347\273\223\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 秋招面试总结分享 date: 2024-11-30 section: 经历与记录 -tags: - - 面试总结 description: 秋招结束后的面试总结分享。 legacyPath: /2024/11/30/秋招面试总结分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/790dbf2659a8aff75e42f73ecf06fab9.png diff --git "a/src/content/blog/\350\205\276\350\256\257AI Lab\346\232\221\345\256\236\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\350\205\276\350\256\257AI Lab\346\232\221\345\256\236\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index ff8453816..8060c6765 100644 --- "a/src/content/blog/\350\205\276\350\256\257AI Lab\346\232\221\345\256\236\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\350\205\276\350\256\257AI Lab\346\232\221\345\256\236\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 腾讯AI Lab暑实面试分享 date: 2024-05-28 section: 经历与记录 -tags: - - 面试记录 description: 腾讯AI Lab暑实面试记录分享。 legacyPath: /2024/05/28/腾讯AI Lab暑实面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/e00a8894b3eeeffa688d3fe1b80dc395.jpeg diff --git "a/src/content/blog/\350\256\241\347\256\227\346\231\272\350\203\275\345\257\274\350\256\272\344\275\234\344\270\232\342\200\224\342\200\224FCM \350\201\232\347\261\273\347\232\204\345\256\236\347\216\260/index.md" "b/src/content/blog/\350\256\241\347\256\227\346\231\272\350\203\275\345\257\274\350\256\272\344\275\234\344\270\232\342\200\224\342\200\224FCM \350\201\232\347\261\273\347\232\204\345\256\236\347\216\260/index.md" index 64d240f30..e63e841a5 100644 --- "a/src/content/blog/\350\256\241\347\256\227\346\231\272\350\203\275\345\257\274\350\256\272\344\275\234\344\270\232\342\200\224\342\200\224FCM \350\201\232\347\261\273\347\232\204\345\256\236\347\216\260/index.md" +++ "b/src/content/blog/\350\256\241\347\256\227\346\231\272\350\203\275\345\257\274\350\256\272\344\275\234\344\270\232\342\200\224\342\200\224FCM \350\201\232\347\261\273\347\232\204\345\256\236\347\216\260/index.md" @@ -2,8 +2,6 @@ title: 计算智能导论作业——FCM 聚类的实现 date: 2021-05-30 section: 学习与研究 -tags: - - 计算智能 description: 实现模糊 C 均值(FCM)聚类算法,并在 Iris 数据集上完成聚类实验。 legacyPath: /2021/05/30/计算智能导论作业——FCM 聚类的实现/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303022754.png diff --git "a/src/content/blog/\350\256\241\347\256\227\346\231\272\350\203\275\345\257\274\350\256\272\344\275\234\344\270\232\342\200\224\342\200\224\346\204\237\347\237\245\345\231\250\345\256\236\347\216\260\344\272\214\345\210\206\347\261\273/index.md" "b/src/content/blog/\350\256\241\347\256\227\346\231\272\350\203\275\345\257\274\350\256\272\344\275\234\344\270\232\342\200\224\342\200\224\346\204\237\347\237\245\345\231\250\345\256\236\347\216\260\344\272\214\345\210\206\347\261\273/index.md" index 4ffe6926b..12e861a15 100644 --- "a/src/content/blog/\350\256\241\347\256\227\346\231\272\350\203\275\345\257\274\350\256\272\344\275\234\344\270\232\342\200\224\342\200\224\346\204\237\347\237\245\345\231\250\345\256\236\347\216\260\344\272\214\345\210\206\347\261\273/index.md" +++ "b/src/content/blog/\350\256\241\347\256\227\346\231\272\350\203\275\345\257\274\350\256\272\344\275\234\344\270\232\342\200\224\342\200\224\346\204\237\347\237\245\345\231\250\345\256\236\347\216\260\344\272\214\345\210\206\347\261\273/index.md" @@ -2,8 +2,6 @@ title: 计算智能导论作业——感知器实现二分类 date: 2021-05-30 section: 学习与研究 -tags: - - 计算智能 description: 实现感知器算法,并在多组二维数据与 Sonar 高维数据集上完成二分类实验。 legacyPath: /2021/05/30/计算智能导论作业——感知器实现二分类/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303022754.png diff --git "a/src/content/blog/\350\256\241\347\256\227\346\231\272\350\203\275\345\257\274\350\256\272\344\275\234\344\270\232\342\200\224\342\200\224\351\201\227\344\274\240\347\256\227\346\263\225\347\232\204\345\256\236\347\216\260/index.md" "b/src/content/blog/\350\256\241\347\256\227\346\231\272\350\203\275\345\257\274\350\256\272\344\275\234\344\270\232\342\200\224\342\200\224\351\201\227\344\274\240\347\256\227\346\263\225\347\232\204\345\256\236\347\216\260/index.md" index 3bd92c5f2..60fdc488f 100644 --- "a/src/content/blog/\350\256\241\347\256\227\346\231\272\350\203\275\345\257\274\350\256\272\344\275\234\344\270\232\342\200\224\342\200\224\351\201\227\344\274\240\347\256\227\346\263\225\347\232\204\345\256\236\347\216\260/index.md" +++ "b/src/content/blog/\350\256\241\347\256\227\346\231\272\350\203\275\345\257\274\350\256\272\344\275\234\344\270\232\342\200\224\342\200\224\351\201\227\344\274\240\347\256\227\346\263\225\347\232\204\345\256\236\347\216\260/index.md" @@ -2,8 +2,6 @@ title: 计算智能导论作业——遗传算法的实现 date: 2021-04-16 section: 学习与研究 -tags: - - 计算智能 description: 实现遗传算法求解最优化问题,并分析编码、适应度函数与遗传算子的实验报告。 legacyPath: /2021/04/16/计算智能导论作业——遗传算法的实现/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/20240303022754.png diff --git "a/src/content/blog/\350\256\260\345\275\225\347\254\254\344\270\200\346\254\241\346\220\255\345\215\232\345\256\242/index.md" "b/src/content/blog/\350\256\260\345\275\225\347\254\254\344\270\200\346\254\241\346\220\255\345\215\232\345\256\242/index.md" index eca2f1f55..31acfbd45 100644 --- "a/src/content/blog/\350\256\260\345\275\225\347\254\254\344\270\200\346\254\241\346\220\255\345\215\232\345\256\242/index.md" +++ "b/src/content/blog/\350\256\260\345\275\225\347\254\254\344\270\200\346\254\241\346\220\255\345\215\232\345\256\242/index.md" @@ -2,8 +2,6 @@ title: 记录我的第一次搭建博客 date: 2020-10-31 section: 经历与记录 -tags: - - 记录生活 description: 我太难了 legacyPath: /2020/10/31/记录第一次搭博客/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/PicGo/xidian1.jpg diff --git "a/src/content/blog/\351\222\211\351\222\211\345\222\214\346\267\230\345\244\251\346\234\272\345\231\250\345\255\246\344\271\240\346\215\236\346\232\221\346\234\237\345\256\236\344\271\240\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\351\222\211\351\222\211\345\222\214\346\267\230\345\244\251\346\234\272\345\231\250\345\255\246\344\271\240\346\215\236\346\232\221\346\234\237\345\256\236\344\271\240\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 0a026300a..015b0b895 100644 --- "a/src/content/blog/\351\222\211\351\222\211\345\222\214\346\267\230\345\244\251\346\234\272\345\231\250\345\255\246\344\271\240\346\215\236\346\232\221\346\234\237\345\256\236\344\271\240\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\351\222\211\351\222\211\345\222\214\346\267\230\345\244\251\346\234\272\345\231\250\345\255\246\344\271\240\346\215\236\346\232\221\346\234\237\345\256\236\344\271\240\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 钉钉和淘天机器学习捞暑期实习面试分享 date: 2024-05-22 section: 经历与记录 -tags: - - 面试记录 description: 淘天技术的面试记录分享。 legacyPath: /2024/05/22/钉钉和淘天机器学习捞暑期实习面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/a22477f98ae4f50717035574c2f85a32.jpeg diff --git "a/src/content/blog/\351\230\277\351\207\214\345\233\275\351\231\205\346\232\221\345\256\236\351\235\242\350\257\225\345\210\206\344\272\253/index.md" "b/src/content/blog/\351\230\277\351\207\214\345\233\275\351\231\205\346\232\221\345\256\236\351\235\242\350\257\225\345\210\206\344\272\253/index.md" index 9095d99f4..63bde26ed 100644 --- "a/src/content/blog/\351\230\277\351\207\214\345\233\275\351\231\205\346\232\221\345\256\236\351\235\242\350\257\225\345\210\206\344\272\253/index.md" +++ "b/src/content/blog/\351\230\277\351\207\214\345\233\275\351\231\205\346\232\221\345\256\236\351\235\242\350\257\225\345\210\206\344\272\253/index.md" @@ -2,8 +2,6 @@ title: 阿里国际暑实面试分享 date: 2024-05-23 section: 经历与记录 -tags: - - 面试记录 description: 阿里国际技术的面试记录分享。 legacyPath: /2024/05/23/阿里国际暑实面试分享/ cover: https://gcore.jsdelivr.net/gh/CoderJackZhu/bloggallery/img/1cfcf9e2b6691718b5bc070c3b7f222b.jpeg diff --git a/src/lib/site-config.ts b/src/lib/site-config.ts index 7d0068378..0841c41c8 100644 --- a/src/lib/site-config.ts +++ b/src/lib/site-config.ts @@ -23,12 +23,6 @@ export interface FooterLinkConfig { href: string; } -export interface PhotoConfig { - src: string; - title: string; - href: string; -} - export interface HomePageConfig { eyebrow: string; heading: string; @@ -81,7 +75,6 @@ export interface SiteConfig { nav: NavItemConfig[]; socials: SocialLinkConfig[]; friendLinks: FriendLinkConfig[]; - categories: string[]; footer: { author: string; since: string; @@ -105,7 +98,7 @@ export interface SiteConfig { photos: PhotosPageConfig; notFound: NotFoundPageConfig; }; - photos: PhotoConfig[]; + photos: string[]; } const configPath = path.resolve(process.cwd(), "site.config.yaml"); diff --git a/src/pages/categories/[...category].astro b/src/pages/categories/[...category].astro deleted file mode 100644 index 785d1cc3e..000000000 --- a/src/pages/categories/[...category].astro +++ /dev/null @@ -1,47 +0,0 @@ ---- -import { getCollection, type CollectionEntry } from "astro:content"; -import Layout from "@layouts/Layout.astro"; -import Container from "@components/Container.astro"; -import ArrowCard from "@components/ArrowCard.astro"; -import { CATEGORIES, type Category } from "@consts"; - -type Props = { - category: Category; - posts: CollectionEntry<"blog">[]; -}; - -export async function getStaticPaths() { - const posts = (await getCollection("blog")) - .filter((post) => !post.data.draft) - .sort((a, b) => b.data.date.valueOf() - a.data.date.valueOf()); - - return CATEGORIES.map((category) => ({ - params: { category }, - props: { - category, - posts: posts.filter((post) => post.data.section === category), - }, - })); -} - -const { category, posts } = Astro.props as Props; ---- - - - - - - diff --git a/src/pages/photos.astro b/src/pages/photos.astro index 4d686020d..c40122477 100644 --- a/src/pages/photos.astro +++ b/src/pages/photos.astro @@ -16,12 +16,71 @@ const copy = siteConfig.pages.photos;

{copy.subtitle}

- {photos.map((photo) => ( - - {photo.title} - + {photos.map((src, index) => ( + ))}
+ + + + diff --git a/src/styles/global.css b/src/styles/global.css index b616a657f..f67570d74 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -595,6 +595,8 @@ main { border: 1px solid var(--line); background: var(--card); display: block; + padding: 0; + cursor: zoom-in; } .photo-card img { @@ -609,6 +611,49 @@ main { transform: scale(1.04); } +.photo-lightbox { + position: fixed; + inset: 0; + z-index: 100; + display: none; + align-items: center; + justify-content: center; + padding: 24px; + background: rgba(0, 0, 0, 0.88); +} + +.photo-lightbox.is-open { + display: flex; +} + +.photo-lightbox-close { + position: absolute; + top: 16px; + right: 20px; + z-index: 1; + width: 42px; + height: 42px; + border: 1px solid rgba(255, 255, 255, 0.35); + border-radius: 999px; + background: rgba(0, 0, 0, 0.35); + color: #fff; + font-size: 26px; + line-height: 1; + cursor: pointer; +} + +.photo-lightbox-close:hover { + background: rgba(255, 255, 255, 0.18); +} + +.photo-lightbox-img { + max-width: 100%; + max-height: 100%; + object-fit: contain; + border-radius: 6px; + box-shadow: 0 20px 80px rgba(0, 0, 0, 0.55); +} + .pagination { display: flex; align-items: center; diff --git a/tests/e2e/blog.spec.ts b/tests/e2e/blog.spec.ts index ad41a7111..25672943e 100644 --- a/tests/e2e/blog.spec.ts +++ b/tests/e2e/blog.spec.ts @@ -4,8 +4,9 @@ import { type Locator, type Page, } from "@playwright/test"; -import { existsSync, readFileSync, statSync } from "node:fs"; +import { existsSync, readFileSync, readdirSync, statSync } from "node:fs"; import { extname, join } from "node:path"; +import { fileURLToPath } from "node:url"; type ManifestEntry = { title: string; @@ -13,12 +14,25 @@ type ManifestEntry = { legacyPath: string; }; -const manifest = JSON.parse( - readFileSync(new URL("../../migration/content-manifest.json", import.meta.url), "utf8"), -) as ManifestEntry[]; const distDir = new URL("../../dist/", import.meta.url).pathname; +const contentDir = fileURLToPath(new URL("../../src/content/blog/", import.meta.url)); const staticFallback = process.env.CODEX_SANDBOX === "seatbelt"; +function readSourcePosts() { + return readdirSync(contentDir, { withFileTypes: true }) + .filter((entry) => entry.isDirectory()) + .map((entry) => { + const source = readFileSync(join(contentDir, entry.name, "index.md"), "utf8"); + const title = source.match(/^title:\s*(.+?)\s*$/m)?.[1]?.trim().replace(/^['"]|['"]$/g, "") ?? ""; + const date = source.match(/^date:\s*(.+?)\s*$/m)?.[1]?.trim() ?? ""; + const legacyPath = + source.match(/^legacyPath:\s*(.+?)\s*$/m)?.[1]?.trim().replace(/^['"]|['"]$/g, "") ?? ""; + return { title, date, legacyPath }; + }); +} + +const manifest = readSourcePosts() as ManifestEntry[]; + const mimeTypes: Record = { ".css": "text/css; charset=utf-8", ".html": "text/html; charset=utf-8",