一個(gè)好的筆記系統(tǒng)钦椭,應(yīng)該能把你所學(xué)習(xí)到的任何資料串聯(lián)起來(lái)谬晕,形成一個(gè)知識(shí)系統(tǒng)盈简,在你需要他們的時(shí)候凑耻,可以很容易找到,進(jìn)而形成自己新的知識(shí)柠贤。
我在《用OneNote管理你的知識(shí)》這篇文章中介紹了如何用OneNote管理各種資料香浩,雖然OneNote已經(jīng)做的非常好了,依然存在以下問(wèn)題無(wú)法達(dá)到我的要求:
- 排版不支持語(yǔ)法高亮臼勉。作為一個(gè)經(jīng)常寫(xiě)代碼的人邻吭,這點(diǎn)不能忍。
- 沒(méi)有Tag系統(tǒng)宴霸。無(wú)法很靈活的給頁(yè)面插入各種tag囱晴,導(dǎo)致資料無(wú)法有效互聯(lián)岸裙,形成一個(gè)個(gè)知識(shí)孤島,最終變成一個(gè)資料備份工具速缆。
- 數(shù)據(jù)格式專(zhuān)有降允。只能用OneNote才能打開(kāi)筆記本,假如微軟突然放棄了這個(gè)工具艺糜,那就很尷尬了剧董。
- 體積龐大。在使用了近5年之后破停,我的OneNote已經(jīng)有幾GB大小了翅楼,每次換電腦同步總是很慢,這可能和我的使用習(xí)慣有關(guān)系真慢,遇到好的資料都是復(fù)制進(jìn)去毅臊。
- 擴(kuò)展能力差。無(wú)法安裝插件黑界,也沒(méi)有定制能力管嬉,更無(wú)法將你的筆記發(fā)布成網(wǎng)站,也很難與別人分享你的知識(shí)朗鸠。
這些問(wèn)題開(kāi)始驅(qū)使我尋求新的解決方案蚯撩,新方案應(yīng)該滿足以下需求:
- 有強(qiáng)大的抓取能力。OneNote的這點(diǎn)很不錯(cuò)烛占,你可以通過(guò)OneNote的瀏覽器插件很容易將外部文章存至OneNote的分區(qū)中胎挎,也可以將微信公眾號(hào)文章發(fā)送給OneNote公眾號(hào)進(jìn)行保存。
- 有好的Tag系統(tǒng)忆家∮坦剑可以將分散的知識(shí)串聯(lián)起來(lái)。雖然OneNote通過(guò)分頁(yè)這種樹(shù)形的方式組織相關(guān)的知識(shí)芽卿,但是資料一旦多了揭芍,分頁(yè)真的很不方便,會(huì)讓找資料變的很痛苦蹬竖。
- 能容易的更新tag/link/text沼沈。如果重命名相關(guān)的資料名或者Tag,應(yīng)該很方便去自動(dòng)重命名關(guān)聯(lián)的鏈接币厕。
- 文件格式最好是純文本的列另。如果不是純文本,至少格式也不是專(zhuān)有的才好旦装。
- 有強(qiáng)大的擴(kuò)展能力页衙。能通過(guò)插件去擴(kuò)展定制。
- 開(kāi)源。這點(diǎn)可以讓我們放心的去使用店乐,不太可能無(wú)人維護(hù)艰躺。
經(jīng)過(guò)一番查找對(duì)比后,最終找到兩個(gè)可以滿足我需求的工具眨八,Emacs orgmode和Tiddlywiki腺兴。雖然wiki工具非常多,比如Wikipedia使用的mediawiki之類(lèi)廉侧,但這類(lèi)系統(tǒng)過(guò)于龐大页响,要運(yùn)行起來(lái)也很麻煩。
Emacs orgmode
提到筆記系統(tǒng)段誊,Emacs的orgmode總是繞不過(guò)去闰蚕,當(dāng)你想要找一個(gè)個(gè)人筆記系統(tǒng)的時(shí)候,在網(wǎng)上很容易看到大家對(duì)orgmode的盛贊连舍,甚至很多人花長(zhǎng)時(shí)間學(xué)習(xí)Emacs也是為了用orgmode没陡。
orgmode神奇的魔力在這篇文章中體現(xiàn)的淋漓盡致:Org Mode - Organize Your Life In Plain Text!。簡(jiǎn)單來(lái)說(shuō)索赏,作者使用orgmode管理了他人生中的方方面面盼玄,比如寫(xiě)作系統(tǒng)、待辦事項(xiàng)提醒参滴、筆記系統(tǒng)等强岸。得益于Emacs強(qiáng)大的定制開(kāi)發(fā)能力,幾乎你的一切需求都可以通過(guò)編寫(xiě)一些函數(shù)去擴(kuò)展砾赔,這種擴(kuò)展能力比VSCode/Vim/Sublime Text的插件系統(tǒng)等要強(qiáng)大的多∏嘧疲可以說(shuō)暴心,除了學(xué)習(xí)難度高,幾乎沒(méi)啥缺點(diǎn)了杂拨。它有以下特點(diǎn):
- 17 years old专普。在時(shí)間的長(zhǎng)河中,orgmode已經(jīng)證明了自己弹沽。
- 定制能力強(qiáng)大檀夹。通過(guò)elisp去開(kāi)發(fā),幾乎無(wú)所不能策橘。
- 純文本炸渡。可自動(dòng)生成多種格式的文件丽已,也很容易發(fā)布成網(wǎng)頁(yè)蚌堵。
- 使用門(mén)檻很高。需要花費(fèi)很多時(shí)間學(xué)習(xí)適應(yīng),這個(gè)“很多時(shí)間”可能比你想象的都要多一些吼畏。
- 生態(tài)差督赤。由于高門(mén)檻,所以用戶就少一些泻蚊,生態(tài)就差一些躲舌。當(dāng)然你能力強(qiáng),可以用它來(lái)實(shí)現(xiàn)各種功能性雄,但是這樣挺累的没卸。
- 技術(shù)遷移度差。elisp太古老了毅贮,emacs太獨(dú)特了办悟,這種上古技術(shù),就像一把絕世好劍滩褥,注定能用好它的人會(huì)很少病蛉。這意味著你寫(xiě)出來(lái)的東西很多人都看不懂,當(dāng)然也就無(wú)法進(jìn)行技術(shù)交流互動(dòng)了瑰煎,自己造輪子造到心累铺然。
Tiddlywiki
Tiddlywiki是一款獨(dú)特的非線性筆記本,用于捕獲酒甸、組織和分享復(fù)雜信息魄健。其設(shè)計(jì)思想是將信息通過(guò)一種名為T(mén)iddler的單元分割,利用它們之間豐富的關(guān)系模型插勤,從而最大化信息的可復(fù)用性沽瘦。 然后,通過(guò)聚合和構(gòu)思來(lái)把片段編排在一起农尖,以呈現(xiàn)具有敘述性的故事析恋。
它具備以下特點(diǎn):
- 15 years old。這個(gè)歷史足夠久了盛卡,時(shí)間驗(yàn)證了其穩(wěn)定性和可持續(xù)性助隧,而且是開(kāi)源的。
- Tag系統(tǒng)強(qiáng)大滑沧。最讓我印象深刻的就是它的Tag系統(tǒng)并村,很容易通過(guò)Tag將不同的信息組織到一起五鲫。
- 單HTML文件架構(gòu)宜岛。所有的信息都在一個(gè)Html中存放,你可以直接下載下來(lái)在瀏覽器中運(yùn)行倘待,非常的簡(jiǎn)單殖属。默認(rèn)的空的系統(tǒng)在最新的版本5中大約是2MB姐叁,一般存儲(chǔ)幾千個(gè)條目(Tiddler)大概能增長(zhǎng)幾MB,由于是單文件架構(gòu),為了不影響性能外潜,應(yīng)盡可能通過(guò)將圖片外部引用來(lái)降低總體積原环。
- 插件眾多。很容易通過(guò)JavaScript給其擴(kuò)展功能处窥。
- 無(wú)法多人協(xié)作嘱吗。但可用作團(tuán)隊(duì)知識(shí)共享簡(jiǎn)單的wiki系統(tǒng)。
orgmode VS Tiddlywiki
在這里可以看到一些人對(duì)這兩個(gè)工具的對(duì)比評(píng)價(jià)滔驾。在花了幾天時(shí)間學(xué)習(xí)了orgmode之后谒麦,我被它復(fù)雜強(qiáng)大的能力勸退了,所有選擇了Tiddlywiki哆致。
Tiddlywiki使用指南
Tiddlywiki的使用和運(yùn)行是極其簡(jiǎn)單的绕德,就這點(diǎn)秒殺了orgmode。在這篇Learning文章中摊阀,你可以花費(fèi)十幾分鐘了解下它的基本知識(shí)耻蛇。
在上圖右側(cè)點(diǎn)擊+號(hào)新增一個(gè)條目后:
右側(cè)紅色的保存按鈕點(diǎn)擊了后,你會(huì)發(fā)現(xiàn)直接下載了一個(gè)名為tiddlywiki.html
的文件胞此,用瀏覽器打開(kāi)后臣咖,會(huì)發(fā)現(xiàn)和你剛才在網(wǎng)上的tiddlywiki一摸一樣。當(dāng)你再對(duì)這個(gè)本地tiddlywiki進(jìn)行一番操作保存后發(fā)現(xiàn)它又給你下載了一個(gè)tiddlywiki.html
漱牵,也就是說(shuō)每當(dāng)你保存的時(shí)候夺蛇,都會(huì)通過(guò)下載副本的形式保存,因?yàn)樗跒g覽器中運(yùn)行酣胀,不具備自己更新自己的能力刁赦,這種可以通過(guò)一個(gè)chrome的app來(lái)解決,下載tiddly-chrome-app闻镶,然后用此chrome app加載tiddlywiki.html
即可自動(dòng)更新了截型,當(dāng)然也可以通過(guò)搭建Nodejs環(huán)境來(lái)實(shí)現(xiàn)自動(dòng)保存,不過(guò)最簡(jiǎn)單的還是這種方式儒溉。
需要注意的有以下幾點(diǎn):
- 備份。因?yàn)槭菃挝募軜?gòu)发钝,所有的資料都在一個(gè)Html中存放顿涣,所以保護(hù)好這個(gè)文件至關(guān)重要,可以通過(guò)Git去備份酝豪。比如我的tiddlywiki就在GitHub中備份涛碑。
- 性能。圖片孵淘、文件等資源最好通過(guò)存放第三方的云盤(pán)中蒲障,然后通過(guò)引用鏈接等方式引入。
- Relink。當(dāng)你重新命名一個(gè)條目或者Tag的時(shí)候揉阎,可以通過(guò)安裝這個(gè)tw5-relink插件解決庄撮。
Capture方案
Capture是一個(gè)筆記系統(tǒng)很重要的能力,這方面OneNote做的很好毙籽,但是tiddlywiki做的卻不好洞斯,不過(guò)可以有一些方法來(lái)解決。讓我們先來(lái)重新思考下一個(gè)筆記記錄的過(guò)程:
- 你看到一篇好文章坑赡,想要保存起來(lái)烙如。這篇文章可能是一個(gè)網(wǎng)頁(yè),也可能是個(gè)郵件或者文件之類(lèi)毅否。
- 你把這篇文章直接全部扔到筆記本中存起來(lái)亚铁,想象某天會(huì)用到它,或者你會(huì)將里面的某個(gè)章節(jié)螟加,某個(gè)圖片單獨(dú)保存起來(lái)徘溢。
當(dāng)我在用OneNote的時(shí)候,對(duì)于微信中的文章仰迁,我一般直接通過(guò)發(fā)送到公眾號(hào)去保存甸昏,然后就忘了這個(gè)事情。而對(duì)于電腦端看到的一些資料徐许,我會(huì)直接復(fù)制到OneNote中去施蜜。在某些時(shí)候我會(huì)整理一下這些資料,但是大多數(shù)它們就被遺忘了雌隅,甚至當(dāng)我需要的時(shí)候翻默,我都不記得之前保存過(guò)這些資料。
在這個(gè)場(chǎng)景中恰起,暴露了以下這幾個(gè)問(wèn)題:
- 資料沒(méi)有被處理就直接被存儲(chǔ)了修械。
- 大多數(shù)資料都是全部被存放到OneNote中去。
因?yàn)閠iddlywiki本質(zhì)是個(gè)網(wǎng)頁(yè)检盼,無(wú)法像OneNote一樣可以直接復(fù)制一篇文章到里面去肯污,而且這種復(fù)制手法會(huì)導(dǎo)致你的筆記越來(lái)越大,找尋有效信息變得越來(lái)越難吨枉。所以這本質(zhì)是個(gè)習(xí)慣問(wèn)題蹦渣,資料必須被二次處理后才能進(jìn)入筆記系統(tǒng)中,否則這個(gè)存儲(chǔ)毫無(wú)意義貌亭,只需要存放一個(gè)鏈接即可了柬唯。
經(jīng)過(guò)一些思考,我制定了自己資料長(zhǎng)期歸檔的方式:
- 引用文章可以保存到Wayback Machine中圃庭;
- 文件可以保存到GitHub私有庫(kù)和網(wǎng)盤(pán)中(包括s3等專(zhuān)業(yè)云存儲(chǔ)锄奢,還有各大互聯(lián)網(wǎng)公司的網(wǎng)盤(pán))失晴;
- 通過(guò)第三方備份Capture資料,筆記中只存儲(chǔ)鏈接拘央。
在我的Capture方案涂屁,對(duì)于網(wǎng)上閱讀的一些資料,考慮到互聯(lián)網(wǎng)信息丟失的速度堪滨,大部分文章存活的壽命并不長(zhǎng)胯陋,為了能長(zhǎng)期保存,我會(huì)把這些網(wǎng)頁(yè)使用Wayback Machine備份袱箱,這樣再也不會(huì)丟失了遏乔,我只需要把它的鏈接存儲(chǔ)起來(lái)即可,對(duì)于需要單獨(dú)存儲(chǔ)的資料可以存放到筆記系統(tǒng)中发笔。對(duì)于需要存儲(chǔ)的圖片盟萨,我會(huì)存放到AWS S3中,然后引用其鏈接即可了讨,當(dāng)然這類(lèi)云存儲(chǔ)方案很多捻激,你也可以選擇國(guó)內(nèi)七牛云(需要域名備案)等。
Wayback Machine
20多年的歷史前计,互聯(lián)網(wǎng)的記憶胞谭,數(shù)字圖書(shū)館,網(wǎng)站時(shí)光機(jī)男杈。這是一個(gè)非商業(yè)的項(xiàng)目丈屹,創(chuàng)立目的就是給整個(gè)互聯(lián)網(wǎng)的網(wǎng)站做不停的備份,目前已經(jīng)有4500多億的緩存頁(yè)面了伶棒,在這個(gè)網(wǎng)站你可以看到很多網(wǎng)站的歷史旺垒,像時(shí)光機(jī)一樣穿梭在網(wǎng)站的不同歷史版本中去。
它具備以下能力:
- 可爬取網(wǎng)頁(yè)HTML及其外部鏈接肤无。
- 可生成網(wǎng)頁(yè)快照?qǐng)D片先蒋。
- 可將網(wǎng)頁(yè)存儲(chǔ)至自己的Wayback Machine賬戶。
- 可以使用API來(lái)請(qǐng)求網(wǎng)頁(yè)緩存宛渐。
VSCode插件一鍵存儲(chǔ)圖片至S3
在Markdown文檔中當(dāng)你想把網(wǎng)頁(yè)的圖片黏貼過(guò)去是件很麻煩的事情竞漾,首先你要把圖片下載到本地(引用網(wǎng)頁(yè)圖片地址不太好,圖片可能會(huì)神秘消失)窥翩,然后在文檔中使用相對(duì)路徑引用這個(gè)圖片畴蹭,當(dāng)圖片很多的時(shí)候,這是個(gè)非常痛苦的過(guò)程鳍烁。
能不能做到復(fù)制網(wǎng)頁(yè)圖片后,在VSCode中黏貼后自動(dòng)插入一個(gè)S3的鏈接到Markdown文檔中去呢繁扎?我找到一款插件幔荒,可以做到一鍵上傳七牛/GitHub/sm.ms等糊闽,但是它沒(méi)有提供S3的支持,所以我fork后加了這個(gè)功能爹梁,如果你也需要這個(gè)功能的話右犹,可以在這里下載安裝: markdown image paste
有了這個(gè)插件后,寫(xiě)wiki/md文件遇到圖片復(fù)制后黏貼進(jìn)去自動(dòng)插入S3鏈接姚垃,這樣圖片永遠(yuǎn)存放到你的S3賬號(hào)中去念链,還自帶全球CDN加速。
Netlify發(fā)布網(wǎng)站
公共wiki是重新整理后的知識(shí)資料集合积糯,其中非文本的資源如圖片掂墓、PDF、Office格式文件看成、Keynote等存放至Amazon S3/Aliyun OSS等云服務(wù)君编,網(wǎng)頁(yè)等內(nèi)容的快照可使用Wayback Machine備份,然后將這些鏈接存放至wiki系統(tǒng)川慌。
wiki資料通過(guò)GitHub公共倉(cāng)庫(kù)托管吃嘿,通過(guò)netlify生成靜態(tài)網(wǎng)站。
我的wiki網(wǎng)站就是通過(guò)netlify自動(dòng)發(fā)布梦重,每次更新wiki后兑燥,push到GitHub,netlify自動(dòng)發(fā)布琴拧,這個(gè)過(guò)程只需要不到十幾秒降瞳。
私有Note
私人備忘和工作涉及的私有非公開(kāi)的資料集合,其中非文本的資源如圖片艾蓝、PDF力崇、Office格式文件、Keynote等存放至Google Drive/Microsoft OneDrive赢织。然后將這些鏈接存放至私有Markdown文件中亮靴,通過(guò)GitHub私有庫(kù)托管。
重要資料
密鑰等信息通過(guò)1Password
托管于置,重要的資料制作成md文件后通過(guò)Google Drive/Microsoft OneDrive等托管茧吊,經(jīng)常需要的重要的資料可通過(guò)手機(jī)備忘錄加密存放。
References
1.https://www.slant.co/versus/5116/8769/~tiddlywiki_vs_org-mode
2.https://github.com/bmpi-dev/wiki.bmpi.dev
4.https://aws.amazon.com/cn/s3/
5.https://en.wikipedia.org/wiki/Wayback_Machine
6.https://wiki.bmpi.dev/#wayback%20machine
文/ThoughtWorks馬大偉