程序员技术笔记库案例
本案例展示如何用 Obsidian 构建一个适合程序员/开发者的技术笔记库,将散落在各处的代码片段、技术文档、踩坑记录统一管理,形成可复用的知识体系。
适用人群
- 软件开发者 / 工程师
- 需要管理大量代码片段和技术文档
- 有技术选型、问题排查、学习新技术的需求
- 希望将技术经验结构化沉淀
目录结构
text
DevVault/
├── 📥 Inbox/ # 快速收集
├── 💻 Languages/ # 编程语言
│ ├── Python/
│ ├── TypeScript/
│ ├── Rust/
│ └── Go/
├── 🔧 Frameworks/ # 框架与库
│ ├── React/
│ ├── Vue/
│ └── Node.js/
├── 🏗️ Architecture/ # 架构设计
│ ├── Design Patterns/
│ ├── Microservices/
│ └── Database/
├── 🐛 Troubleshooting/ # 问题排查
│ ├── Docker/
│ ├── Git/
│ └── Linux/
├── 📋 Snippets/ # 代码片段
│ ├── Python/
│ ├── Shell/
│ └── SQL/
├── 📖 Learning/ # 学习笔记
│ ├── Books/
│ └── Courses/
├── 🚀 Projects/ # 项目文档
├── 🗓️ Daily/ # 工作日志
├── 📋 Templates/ # 模板
└── 📊 Stats/ # 统计核心工作流
工作流一:代码片段管理
将常用代码片段结构化保存,随时可检索复用。
代码片段模板:
markdown
---
type: snippet
language: {{language}}
category: {{category}}
tags: [snippet, {{language}}]
created: {{date}}
---
# {{title}}
## 说明
简要描述这个代码片段的用途。
## 代码
```{{language}}
{{code}}使用场景
注意事项
相关片段
- [[]]
**代码片段索引(Dataview):**
```dataview
TABLE
language AS "语言",
category AS "分类",
file.ctime AS "创建时间"
FROM "Snippets"
SORT language ASC, category ASC工作流二:问题排查记录
记录踩坑经历,避免重复踩坑,也方便团队参考。
Bug 记录模板:
markdown
---
type: troubleshooting
severity: {{severity}} # critical/high/medium/low
status: {{status}} # open/resolved
environment: {{env}}
tags: [bug, {{tech_stack}}]
created: {{date}}
resolved:
---
# {{title}}
## 环境信息
- 操作系统:
- 技术栈版本:
- 相关工具:
## 问题描述
### 现象
描述遇到了什么问题。
### 错误信息粘贴错误日志
## 排查过程
1. **尝试 1**:...
- 结果:失败
2. **尝试 2**:...
- 结果:失败
3. **最终方案**:...
- 结果:成功 ✅
## 根因分析
解释问题的根本原因。
## 解决方案
```bash
# 解决命令或代码预防措施
相关链接
### 工作流三:技术学习笔记
学习新技术时的结构化笔记方法。
**技术学习模板:**
```markdown
---
type: learning
tech: {{tech}}
level: {{level}} # beginner/intermediate/advanced
status: #seedling
tags: [learning, {{tech}}]
created: {{date}}
---
# {{tech}} 学习笔记
## 概述
一句话描述这个技术是什么。
## 核心概念
### 概念 1
- 定义:
- 为什么重要:
- 代码示例:
### 概念 2
- 定义:
- 为什么重要:
- 代码示例:
## 快速上手
### 安装
```bash
# 安装命令Hello World
javascript
// 最简示例常用操作
| 操作 | 代码 | 说明 |
|---|---|---|
最佳实践
常见陷阱
与其他技术对比
| 维度 | [[替代方案]] | |
|---|---|---|
学习资源
下一步
- [ ]
## 推荐插件组合
### 必装插件
| 插件 | 用途 | 优先级 |
|------|------|--------|
| Dataview | 查询代码片段和笔记 | ⭐⭐⭐⭐⭐ |
| Templater | 模板自动化 | ⭐⭐⭐⭐⭐ |
| Obsidian Git | 版本控制与备份 | ⭐⭐⭐⭐⭐ |
| Tasks | 任务追踪 | ⭐⭐⭐⭐ |
| Code Editor Shortcuts | 代码编辑增强 | ⭐⭐⭐⭐ |
| QuickAdd | 快速添加内容 | ⭐⭐⭐⭐ |
### 进阶插件
| 插件 | 用途 |
|------|------|
| Excalidraw | 架构图、流程图 |
| Mermaid | 内嵌图表 |
| Shell Commands | 执行终端命令 |
| Commander | 自定义命令按钮 |
| Projects | 项目管理 |
| DB Folder | 数据库视图 |
## 实用 Dataview 查询
### 按语言查找代码片段
```dataview
TABLE
category AS "分类",
file.ctime AS "创建时间"
FROM "Snippets"
WHERE language = "Python"
SORT category ASC未解决的问题
dataview
TABLE
severity AS "严重程度",
environment AS "环境",
file.ctime AS "创建时间"
FROM "Troubleshooting"
WHERE status = "open"
SORT choice(severity = "critical", 1,
choice(severity = "high", 2,
choice(severity = "medium", 3, 4))) ASC技术学习进度
dataview
TABLE
level AS "水平",
choice(status = "#evergreen", "✅ 已掌握",
choice(status = "#growing", "🔄 学习中", "🌱 入门")) AS "状态"
FROM "Learning"
SORT tech ASC最近工作日志
dataview
LIST
FROM "Daily"
SORT file.name DESC
LIMIT 7工作日志实践
每日记录工作内容,积累技术经验:
工作日志模板:
markdown
---
type: daily
date: {{date}}
tags: [daily]
---
# {{date:YYYY-MM-DD}} 工作日志
## 今日完成
- [ ]
## 技术笔记
###
## 遇到的问题
###
## 明日计划
- [ ]
## 复盘
### 做得好的
-
### 可以改进的
-技术选型记录
用结构化方式记录技术选型决策:
markdown
---
type: tech-decision
status: decided/reviewing
date: {{date}}
tags: [decision]
---
# 技术选型:{{title}}
## 背景
为什么要做这个技术选型?
## 候选方案
### 方案 A:{{name}}
| 维度 | 评价 |
|------|------|
| 性能 | ⭐⭐⭐⭐ |
| 生态 | ⭐⭐⭐⭐⭐ |
| 学习成本 | ⭐⭐⭐ |
| 社区活跃度 | ⭐⭐⭐⭐ |
### 方案 B:{{name}}
| 维度 | 评价 |
|------|------|
| 性能 | ⭐⭐⭐⭐⭐ |
| 生态 | ⭐⭐⭐ |
| 学习成本 | ⭐⭐ |
| 社区活跃度 | ⭐⭐⭐ |
## 决策
选择 **方案 A**,理由:
1.
2.
3.
## 评估时间
{{date}} - 评估周期 - 下次复盘时间与开发工具集成
与 GitHub 集成
通过 Shell Commands 插件快速打开仓库:
bash
# 在 Obsidian 中打开当前笔记对应的 GitHub 仓库
open "https://github.com/$(git -C '${vaultPath}' remote get-url origin | sed 's/.*github.com[:/]\(.*\)\.git/\1/')"与终端集成
使用 Shell Commands 插件执行常用命令:
bash
# 运行当前项目
npm run dev
# 查看当前目录结构
find . -type f -not -path '*/node_modules/*' -not -path '*/.git/*' | head -30与 CI/CD 集成
在项目笔记中嵌入构建状态:
markdown
## 项目状态
- 构建状态:[](https://github.com/user/repo/actions)
- 测试覆盖:82%
- 上次部署:2024-01-15常见问题
问:代码片段和 GitHub Gist 有什么区别?
答:Obsidian 代码片段的优势在于:
- 与技术笔记双向链接
- Dataview 动态查询和组织
- 本地优先,离线可用
- 可添加丰富的上下文说明
建议两者结合使用:Obsidian 管理带上下文的片段,Gist 管理可分享的独立代码。
问:如何管理敏感信息(API Key 等)?
答:
- 绝不在笔记中明文存储密码和密钥
- 使用
.env文件管理配置,并在.gitignore中排除 - 如需记录配置方式,使用占位符
YOUR_API_KEY_HERE - 敏感项目笔记放在独立仓库,启用加密
问:如何与团队共享技术笔记?
答:
- 使用 Obsidian Publish 发布公开知识库
- 通过 Git 仓库共享,配合
.obsidian/配置 - 使用 Obsidian Sync 同步团队空间
- 非敏感内容可导出为静态站点部署
相关资源
- 程序员工作流 - 开发者使用 Obsidian 的完整工作流
- Shell 命令 - 终端命令集成
- 命令行工具 - CLI 工具使用
- Obsidian Git - Git 版本管理
- Dataview 实战 - 数据查询