在翻阅笔记的过程当中,我发现我的Obsidian仓库实在是太过臃肿且混乱了,看日记的最早时间差不多是去年11月份,也不清楚最早是怎么使用这个卡片笔记法了

在经历了一年的笔记过程当中,我发现此系统,或者是我现在采用的笔记系统的问题:

笔记结构混乱

我最初将笔记分为几个类型:

  1. 永久笔记,也就是记录元知识的笔记,用于存储专有名词的知识,以便未来使用名词时可以直接索引,并跳转到这个文件,
  2. 文献笔记,用于存储永久笔记的知识来源,例如某个永久笔记的内容是由这篇文章,或者说是其他永久笔记,我会把作为引用的或者参考的笔记,作为文献笔记类型,
  3. 项目笔记,用于记录一个“项目”专题的笔记,笔记内容包括做项目所需要的输入,以及输出
  4. 闪念笔记,用于记录“短想法”,这里的短想法包括对某句话的感悟,看完动漫的感悟,甚至还有日记类型的内容,还有一些商业上的idea

为什么我会说这些笔记是混乱的呢?因为在实际使用这些笔记类型的时候,我用得最多的就是项目笔记,在学习计算机的知识或者是准备考试的时候,会专门开一个学习的文件夹,里面存放着相关知识的“索引页”,或者是“总览页”,内容是包括这些知识的专有名词介绍以及这些名词永久笔记的wiki链接,但这个页面不属于任何笔记类型,也不好对齐归类以及放置,后面这些文件越来越大,处理起来越费劲

还有永久笔记本应该是记录专有名词的,但我有时候会让这个永久笔记以一个问题、陈述句的形式存在,例如Js如何合并对象 这篇,这个对我来说确实是永久笔记,实在的记录下来了某些问题的解决方法,而描述这种实际场景的问题不可能用一个名词就能代替的,因此我认为确实是一种“永久笔记”,但与之前的定义不相吻合

笔记作用割裂

像是项目笔记以及永久笔记的场景非常不同,项目笔记是在做一个项目的时候才会用到,而永久笔记是在记录一些专有名词的时候才会用到(即准备考试,以及学习一些知识的时候),但在记录这些知识的时候,我感到非常虚无缥缈:虽然我在这个时间段记录下来了这个知识,我确实学习到了,但一是我没这么好的记忆力一次就能记住,二是学习这些知识有什么作用,能运用到什么场景吗

我意识到了这两个场景非常的割裂,永久笔记的作用索引化这个专有名词的知识点,让这个永久笔记可以被不同的文件索引,但在未来,可能只会在需要回忆他的时候,翻到具体的知识索引页,重复记忆,知道记住这个知识点为止

但对于只记录一次的模块知识索引页来说,实在是太过沮丧了,我某天因为对这个感兴趣,然后去记录一下其知识,然后就没有然后了,没有起到任何作用,没有任何输出,这样的知识索引页对我自身来说,真的是聊胜于无,最典型的例子就是基础乐理Learnig 这个模块知识页,这个页面确实有记录乐理的各种知识、各个专业名词及其永久笔记,

加深项目笔记与永久笔记之间的联系

因此必须加强项目笔记与永久笔记之间的联系,让记录下的知识模块索引页能够有所输出,这样在脑海里才会记住,在实践当中才能熟练使用

至于如何联系,我认为可以从项目笔记的角度入手,因为我开始一个项目的时候,这个项目一定会有输入/输出,这里的输入,不就是我可以直接索引的模块知识页吗?如果之前记录下来了相关知识,可以直接索引,在进行项目的时候可以对其进行修改与完善,例如添加某个专有名词的永久笔记,如果没有相关模块知识索引页,就是通过这个项目,学习相关模块知识的最佳时机,既可以学习这些知识,还可以直接运用,这才是学习知识的关键:输出。

全新的笔记系统

这个笔记系统设计的原则是有用且轻量化,这个系统所需要的依赖只有md文档以及[[Wiki]]这样的wiki链接符号

因此,我的笔记系统是一个由项目驱动的,输入(模块知识页,永久笔记)- 输出(一个完整的项目,结果,成果,看得见,可量化,可分享)一体化的笔记系统,主要包含3中类型的文件

  • 项目笔记,由起始时间进行排序,有这个项目所需要的输入(模块知识页/某些永久笔记),以及最重要的输出(例如写一个项目就是github仓库地址,画画就是画的图片,写歌就是一个mp3附件)
  • 知识索引页,里面索引包含一个特定领域知识的页面,这个页面需要直接通过markdown文档,格式化的,用领域内的专有名词或者自然语言写一篇这个有关这个知识的“教程”,在写这些教程过程当中,你也学会了这个领域的知识,且能够对这些专有名词进行索引,也就是为这些名词创建永久笔记,其中吴恩达机器学习笔记,这篇就是一个典型案例
  • 永久笔记,这个笔记的文件名就是索引,文件名的内容是一个专有名词或者是一个问题,或是一个陈述句,例如React事件机制 函数中的this绑定,他自身也可以索引其他永久笔记

其他我能想到的类型文件:

  • 短想法,只有一个md文件,文件内容只需记录一时的想法,感慨,一些短影评
  • 收集类索引页,可以归类为知识索引页,只不过里面的内容是收集一些常用的资源,命令,指令这些

笔记系统静态化

为什么要让笔记静态站点化,一是可以激励我记录更多文字,二是可以让人们通过这些项目笔记,知道我做了什么,输入了什么东西,有什么输出,有什么作品,可以通过这些来了解我

我先采用Quartz这里的技术,Quartz的优点是不仅能在content目录下直接识别md文件并进行渲染,还支持[[WIKI]]这样的写法,与Obsidian完美融合,当站点搭建完毕的时候,只需在Obsidian中编写md文档,并定时push到仓库里面,就能实现笔记系统静态化了

但Quartz还是有些差强人意的地方,在GitHub Pages里面得构建个十几分钟,还是需要挺久的,但瑕不掩瑜,我也用不着太快的构建速度,先这样用着吧

一些笔记系统的其他问题

对于图片/svg之类的附件该如何处理,我的想法是把所有的图片与附件都上传到图床当中,在md文档就用![](图片URL)的方式展示图片,这样在本地联网状态,还是说在站点里面,都可以用同一个md文档的内容,甚至需要将某些文章分享的时候,这种方式也非常方便

但是我自己以前的Obsidian管理附件的方式实在是太混乱,在各个地方的目录都有着不同的命名规范的附件,我自己写了一个脚本,直接用picgo的API来将这些本地图片上传到图床当中

后面我再写一个文档:如何批量将Obsidian仓库中的本地文件全部上传到图床当中,并且修改图片链接为图床链接

还有一个问题是知识索引页该如何进行排布,卡片笔记 的创始人卢曼是在经历了自身十几年的知识积累过后,自成体系的对自身所掌握的知识进行排布,但在他最开始的时候,还是会根据人类现在对现有的知识分类来进行排版

我自己的思路是根据我现在自己的知识面与专业,针对性的对自身的认知来对索引进行排布

例如,现有一个计算机大类的文件夹:Knowlege/计算机大类 里面有个计算机大类 - INDEX

样式方案

https://turntrout.com/design#deduplicating-html-requests 在一个我很喜欢的博客样式中,其中有一篇专门文章来介绍针对博客的设计方案,实在是收益匪浅,没曾想他甚至考虑到了每行需要显示多少字才能让读者阅读得更舒服(结论是每行75个字符),

配色方案用的是这个仓库: https://github.com/catppuccin/catppuccin 自定义字体大小用的是Scss和ts脚本来自动生成variables.scss文件变量,然后在引入到其他样式文件中来,参考仓库中的quartz\styles\generate-variables.ts这个路径

但我不太熟悉Sass语法,因此我需要在知识索引页上开一个新坑,来弥补我的知识漏洞,首先就是CSS - INDEX ,我只是学习了一点皮毛基础,关键时刻还需要靠大模型帮我生成,在一个复杂的CSS场景中需要和大模型浪费大量时间掰扯,况且,像是Tailwind CSS还有Sass,都需要CSS的稳固基础,因此,趁这个契机,我来完善这个CSS漏洞

中文字体优化策略

CSS text-autospace:nomal是最近才开始的新CSS特性,支持在中英文之间自动加上空白,

我看上了一款字体:霞鹜文楷,想让这款字体应用在我的博客上,但中文包实在是太大,有个10几M,font-display:swap这样的默认设置导致我先看到的是默认又大又粗的字体,然后才是我加载的这个字体,体验非常不佳。

杂项

Akiyama-blog在阿里云的nginx配置