惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
N
News and Events Feed by Topic
Recent Announcements
Recent Announcements
D
Docker
M
MIT News - Artificial intelligence
L
LangChain Blog
I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
博客园_首页
MongoDB | Blog
MongoDB | Blog
美团技术团队
S
Schneier on Security
G
GRAHAM CLULEY
月光博客
月光博客
有赞技术团队
有赞技术团队
Vercel News
Vercel News
Scott Helme
Scott Helme
P
Privacy International News Feed
Last Week in AI
Last Week in AI
Recorded Future
Recorded Future
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Cloudflare Blog
Attack and Defense Labs
Attack and Defense Labs
Google Online Security Blog
Google Online Security Blog
Simon Willison's Weblog
Simon Willison's Weblog
量子位
S
Security @ Cisco Blogs
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V
Visual Studio Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
NISL@THU
NISL@THU
N
Netflix TechBlog - Medium
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Spread Privacy
Spread Privacy
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
小众软件
小众软件
罗磊的独立博客
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Threatpost
L
Lohrmann on Cybersecurity
www.infosecurity-magazine.com
www.infosecurity-magazine.com
S
Security Affairs
Cloudbric
Cloudbric
爱范儿
爱范儿
H
Heimdal Security Blog
PCI Perspectives
PCI Perspectives

BMPI

构建自己的信息简报 2.0 我的退休计划:把无期变成有期 从情绪化交易到系统化投资 策引2025 实盘大考:当算法跑赢人性 三十五 我的AI投资助手 我的投资之路 BMPI周记008:设止损而勇试错 BMPI周记007:经济下行 BMPI周记006:时光机 BMPI周记005:直播小完结 BMPI周记004:不要做空 BMPI周记003:十年前的今天 BMPI周记002:交易之难 BMPI周记001:开始直播 对交易的思考 AI驱动开发:从Prompt到Product(直播) 策引全球投资组合:A股1号 策引全球投资组合:A股2号 策引全球投资组合:A股3号 策引全球投资组合:A股全球 策引全球投资组合:加密币1号 策引全球投资组合:加密币2号 策引全球投资组合:美股1号 策引全球投资组合:美股2号 策引全球投资组合:美股3号 策引全球投资组合:美股4号 策引全球投资组合:美股全球 全球投资开户完全指南:A股与美股篇 我的2023 全球经济中的隐形巨人 海外银行证券开户薅羊毛小记 我与ChatGPT结对编程的体验 ChatGPT背后的语言模型简史 ChatGPT应用开发小记 我的AI阅读助手 SQLite的文艺复兴 2022亏了多少 # 组合季报(2022Q4) AI降临 构建自己的信息简报 善用GitHub Real-time Web应用开发新体验 我的巨亏经历 # 组合季报(2022Q3) Google软件工程之工具篇 构建自己的杠杆 我的投资助手 Google软件工程之过程篇 Google软件工程之文化篇 交易之难 # 组合季报(2022Q2) 从技术难题中学习 编程语言是如何实现并发的之并发模型篇 疫情与战争 # 组合季报(2022Q1) 编程语言是如何实现并发的之操作系统篇 编程语言是如何实现泛型的 写在第二十五万字 走进 Web3 财富常识 复盘2021 # 组合季报(2021Q4) 分布式系统中的时间 分布式系统下的认证与授权 如何学习一门技术 K8S 云原生应用开发小记 使用 Beancount 管理家庭财务 三周年小记 # 组合月报(202109) 仓位管理是核心 # 组合月报(202108) 云端 IDE 护城河还在但城没了 # 组合月报(202107) 构建高质量的信息输入渠道 最牛指数 # 组合月报(202106) 国际化与本地化 慢慢变富 # 组合月报(202105) 失败驱动开发 加密币挖矿小记 家庭资产配置的阶段 # 组合月报(202104) OKR + GTD + Note => Logseq 我的个人项目技术栈 长期投资之难 # 组合月报(202103) 我的人生管理系统 当别人的股票基金上涨时 # 组合月报(202101) 基于Serverless实现静态博客访问统计功能 构建终身学习体系进行自我提升 我的家庭理财规划 投资的秘密 # 组合月报(202012) 零成本搭建现代博客之优化国内访问速度 我的绘图工具箱 关于银行分期贷款的坑 # 组合月报(202011) 投资交易的心理建设 # 组合月报(202010) 大跌时我们能做什么 # 组合月报(202009) 双均线交易策略 # 组合月报(202008) Serverless应用开发小记 投资理财书籍推荐 # 组合月报(202007) 200万小目标 # 组合月报(202006) 零成本搭建现代博客之加载速度优化篇 零成本搭建现代博客之订阅推送篇 我常用的浏览器插件 零成本搭建现代博客之SEO优化篇 什么是SEO 零成本搭建现代博客之搭建篇 用Markdown可以做什么 什么是互联网广告
我的笔记系统
马大伟 · 2020-07-07 · via BMPI

我的笔记系统

19:52 | 4373 字 | 次阅读

一个好的笔记系统,应该能把你所学习到的任何资料串联起来,形成一个知识系统,在你需要他们的时候,可以很容易找到,进而形成自己新的知识。

我在《用OneNote管理你的知识》这篇文章中介绍了如何用 OneNote 管理各种资料,虽然 OneNote 已经做的非常好了,依然存在以下问题无法达到我的要求:

  1. 排版不支持语法高亮。作为一个经常写代码的人,这点不能忍。
  2. 没有 Tag 系统。无法很灵活的给页面插入各种 Tag ,导致资料无法有效互联,形成一个个知识孤岛,最终变成一个资料备份工具。
  3. 数据格式专有。只能用 OneNote 才能打开笔记本,假如微软突然放弃了这个工具,那就很尴尬了。
  4. 体积庞大。在使用了近5年之后,我的 OneNote 已经有几 GB 大小了,每次换电脑同步总是很慢,这可能和我的使用习惯有关系,遇到好的资料都是复制进去。
  5. 扩展能力差。无法安装插件,也没有定制能力,更无法将你的笔记发布成网站,也很难与别人分享你的知识。

这些问题开始驱使我寻求新的解决方案,新方案应该满足以下需求:

  1. 有强大的抓取能力。OneNote 的这点很不错,你可以通过 OneNote 的浏览器插件很容易将外部文章存至 OneNote 的分区中,也可以将微信公众号文章发送给 OneNote 公众号进行保存。
  2. 有好的 Tag 系统。可以将分散的知识串联起来。虽然 OneNote 通过分页这种树形的方式组织相关的知识,但是资料一旦多了,分页真的很不方便,会让找资料变的很痛苦。
  3. 能容易的更新 tag/link/text。如果重命名相关的资料名或者 Tag,应该很方便去自动重命名关联的链接。
  4. 文件格式最好是纯文本的。如果不是纯文本,至少格式也不是专有的才好。
  5. 有强大的扩展能力。能通过插件去扩展定制。
  6. 开源。这点可以让我们放心的去使用,不太可能无人维护。

经过一番查找对比后,最终找到两个可以满足我需求的工具,Emacs Org mode 和 Tiddlywiki。虽然 Wiki 工具非常多,比如 Wikipedia 使用的 mediawiki 之类,但这类系统过于庞大,要运行起来也很麻烦。

Emacs Org mode

提到笔记系统,Emacs的Org mode总是绕不过去,当你想要找一个个人笔记系统的时候,在网上很容易看到大家对Org mode的盛赞,甚至很多人花长时间学习Emacs也是为了用Org mode。

Org mode神奇的魔力在这篇 Org Mode - Organize Your Life In Plain Text! 文章中体现的淋漓尽致 。简单来说,作者使用Org mode管理了他人生中的方方面面,比如写作系统、待办事项提醒、笔记系统等。得益于Emacs强大的定制开发能力,几乎你的一切需求都可以通过编写一些函数去扩展,这种扩展能力比VSCode/Vim/Sublime Text的插件系统等要强大的多。可以说,除了学习难度高,几乎没啥缺点了。它有以下特点:

  1. 17 years old。在时间的长河中,Org mode已经证明了自己。
  2. 定制能力强大。通过eLisp去开发,几乎无所不能。
  3. 纯文本。可自动生成多种格式的文件,也很容易发布成网页。
  4. 使用门槛很高。需要花费很多时间学习适应,这个“很多时间”可能比你想象的都要多一些。
  5. 生态差。由于高门槛,所以用户就少一些,生态就差一些。当然你能力强,可以用它来实现各种功能,但是这样挺累的。
  6. 技术迁移度差。eLisp太古老了,Emacs太独特了,这种上古技术,就像一把绝世好剑,注定能用好它的人会很少。这意味着你写出来的东西很多人都看不懂,当然也就无法进行技术交流互动了,自己造轮子造到心累。

Tiddlywiki

Tiddlywiki 是一款独特的非线性笔记本,用于捕获、组织和分享复杂信息。其设计思想是将信息通过一种名为 Tiddler 的单元分割,利用它们之间丰富的关系模型,从而最大化信息的可复用性。 然后,通过聚合和构思来把片段编排在一起,以呈现具有叙述性的故事。

它具备以下特点:

  1. 15 years old。这个历史足够久了,时间验证了其稳定性和可持续性,而且是开源的。
  2. Tag系统强大。最让我印象深刻的就是它的Tag系统,很容易通过Tag将不同的信息组织到一起。
  3. 单 HTML 文件架构。所有的信息都在一个Html中存放,你可以直接下载下来在浏览器中运行,非常的简单。默认的空的系统在最新的版本5中大约是2MB,一般存储几千个条目(Tiddler)大概能增长几 MB,由于是单文件架构,为了不影响性能,应尽可能通过将图片外部引用来降低总体积。
  4. 插件众多。很容易通过 JavaScript 给其扩展功能。
  5. 无法多人协作。但可用作团队知识共享简单的 Wiki 系统。

Org mode VS Tiddlywiki

在这里可以看到一些人对这两个工具的对比评价1。在花了几天时间学习了 Org mode 之后,我被它复杂强大的能力劝退了,所有选择了 Tiddlywiki。

Tiddlywiki使用指南

Tiddlywiki 的使用和运行是极其简单的,就这点秒杀了 Org mode。在这篇 Learning 文章中,你可以花费十几分钟了解下它的基本知识。

在上图右侧点击+号新增一个条目后:

右侧红色的保存按钮点击了后,你会发现直接下载了一个名为tiddlywiki.html的文件,用浏览器打开后,会发现和你刚才在网上的tiddlywiki一摸一样。当你再对这个本地tiddlywiki进行一番操作保存后发现它又给你下载了一个tiddlywiki.html,也就是说每当你保存的时候,都会通过下载副本的形式保存,因为它在浏览器中运行,不具备自己更新自己的能力,这种可以通过一个chrome的app来解决,下载 tiddly-chrome-app ,然后用此chrome app加载tiddlywiki.html即可自动更新了,当然也可以通过搭建Nodejs环境来实现自动保存,不过最简单的还是这种方式。

需要注意的有以下几点:

  1. 备份。因为是单文件架构,所有的资料都在一个Html中存放,所以保护好这个文件至关重要,可以通过Git去备份。比如我的 tiddlywiki 就在GitHub中备份2
  2. 性能。图片、文件等资源最好通过存放第三方的云盘中,然后通过引用链接等方式引入。
  3. Relink。当你重新命名一个条目或者Tag的时候,可以通过安装这个 tw5-relink 插件解决。

Capture方案

Capture 是一个笔记系统很重要的能力,这方面 OneNote 做的很好,但是 tiddlywiki 做的却不好,不过可以有一些方法来解决。让我们先来重新思考下一个笔记记录的过程:

  1. 你看到一篇好文章,想要保存起来。这篇文章可能是一个网页,也可能是个邮件或者文件之类。
  2. 你把这篇文章直接全部扔到笔记本中存起来,想象某天会用到它,或者你会将里面的某个章节,某个图片单独保存起来。

当我在用OneNote的时候,对于微信中的文章,我一般直接通过发送到公众号去保存,然后就忘了这个事情。而对于电脑端看到的一些资料,我会直接复制到 OneNote 中去。在某些时候我会整理一下这些资料,但是大多数它们就被遗忘了,甚至当我需要的时候,我都不记得之前保存过这些资料。

在这个场景中,暴露了以下这几个问题:

  1. 资料没有被处理就直接被存储了。
  2. 大多数资料都是全部被存放到 OneNote 中去。

因为 tiddlywiki 本质是个网页,无法像 OneNote 一样可以直接复制一篇文章到里面去,而且这种复制手法会导致你的笔记越来越大,找寻有效信息变得越来越难。所以这本质是个习惯问题,资料必须被二次处理后才能进入笔记系统中,否则这个存储毫无意义,只需要存放一个链接即可了。

经过一些思考,我制定了自己资料长期归档的方式:

  1. 引用文章可以保存到 Wayback Machine 中;
  2. 文件可以保存到 GitHub 私有库和网盘中(包括s3等专业云存储,还有各大互联网公司的网盘);
  3. 通过第三方备份 Capture 资料,笔记中只存储链接。

在我的 Capture 方案,对于网上阅读的一些资料,考虑到互联网信息丢失的速度,大部分文章存活的寿命并不长3,为了能长期保存,我会把这些网页使用 Wayback Machine 备份,这样再也不会丢失了,我只需要把它的链接存储起来即可,对于需要单独存储的资料可以存放到笔记系统中。对于需要存储的图片,我会存放到 AWS S34 中,然后引用其链接即可,当然这类云存储方案很多,你也可以选择国内七牛云(需要域名备案)等。

Wayback Machine

20多年的历史,互联网的记忆,数字图书馆,网站时光机。这是一个非商业的项目,创立目的就是给整个互联网的网站做不停的备份,目前已经有4500多亿5的缓存页面了,在这个网站你可以看到很多网站的历史,像时光机一样穿梭在网站的不同历史版本中去。

它具备以下能力:

  1. 可爬取网页 HTML 及其外部链接。
  2. 可生成网页快照图片。
  3. 可将网页存储至自己的 Wayback Machine 账户。
  4. 可以使用 API 来请求网页缓存6

VSCode插件一键存储图片至S3

在 Markdown 文档中当你想把网页的图片黏贴过去是件很麻烦的事情,首先你要把图片下载到本地(引用网页图片地址不太好,图片可能会神秘消失),然后在文档中使用相对路径引用这个图片,当图片很多的时候,这是个非常痛苦的过程。

能不能做到复制网页图片后,在 VSCode 中黏贴后自动插入一个 S3 的链接到 Markdown 文档中去呢?我找到一款插件,可以做到一键上传七牛/GitHub/sm.ms等,但是它没有提供 S3 的支持,所以我 fork 此代码仓库后加了这个功能,如果你也需要这个功能的话,可以在这里下载安装: markdown image paste

有了这个插件后,写 wiki/md 文件遇到图片复制后黏贴进去自动插入S3链接,这样图片永远存放到你的 S3 账号中去,还自带全球 CDN 加速。

Netlify发布网站

公共 Wiki 是重新整理后的知识资料集合,其中非文本的资源如图片、PDF、Office格式文件、Keynote等存放至 Amazon S3/Aliyun OSS 等云服务,网页等内容的快照可使用 Wayback Machine 备份,然后将这些链接存放至 Wiki 系统。

Wiki 资料通过 GitHub 公共仓库托管,通过 netlify 生成静态网站。

我的 Wiki 网站就是通过 netlify 自动发布,每次更新 wiki 后,push 到 GitHub,netlify 自动发布,这个过程只需要不到十几秒。

私有Note

私人备忘和工作涉及的私有非公开的资料集合,其中非文本的资源如图片、PDF、Office格式文件、Keynote等存放至Google Drive/Microsoft OneDrive。然后将这些链接存放至私有Markdown文件中,通过 GitHub 私有库托管。

重要资料

密钥等信息通过1Password托管,重要的资料制作成md文件后通过 Google Drive/Microsoft OneDrive 等托管,经常需要的重要的资料可通过手机备忘录加密存放。

一些新型的笔记系统

Notion

Notion 虽然非常适合搭建个人/团队/家人 Wiki ,但是由于其非开源,商业的不确定性导致我不敢把全部的资料迁移至其上。目前只是用来做一些简单的页面,比如 收藏网站 这个页面是我制作的个人收藏网站书签页面,而这个 Portfolio 页面更能体现 Notion 如乐高积木般搭建 Wiki 页面特性的能力。

如果想了解更多 Notion 制作的网站见 notion-sites 这个 Repo。

Roam Research

Roam Research 的设计很超前,它是一款能将碎片化信息整理成个人知识的网状笔记工具。通过它你可以很容易把一些关联的信息建立双向链接。甚至这篇 How to use Roam Research: a tool for metacognition 称之为“元认知工具”。

该工具没有免费版,收费也不便宜。不过已经有人将其核心的双向链接功能移植到了 Tiddlywiki 上,这就是 Stroll。通过双向链接,可以很容易找出文章上下文关联的其他文章。我也将我的 Wiki 更新为了这个版本的 Tiddlywiki,感兴趣的朋友可以体验下它的强大之处。

References


  1. https://www.slant.co/versus/5116/8769/~tiddlywiki_vs_org-mode ↩︎

  2. https://github.com/bmpi-dev/wiki.bmpi.dev ↩︎

  3. https://web.archive.org/web/20191230143823/https://gigaom.com/2012/09/19/the-disappearing-web-information-decay-is-eating-away-our-history/ ↩︎

  4. https://aws.amazon.com/cn/s3/ ↩︎

  5. https://en.wikipedia.org/wiki/Wayback_Machine ↩︎

  6. https://wiki.bmpi.dev/#wayback%20machine ↩︎