知識體系-打造寫作工作流

質數的一發表於2019-02-28

前言

我想將我的學習過程全部記錄下來,技術,工作,生活,還是思維片段,所有能記的都要記下來,終生學習這個理念不單要植入自己的腦子還要形成肌肉記憶。

當然記錄這件事情也一直在做,但是做得並不好,單純的記錄其實意義不大,如果能分享出去,並因此而獲取一些正向的反饋,然後再激勵自己去 學習 => 記錄 => 分享 => 獲得正向反饋 形成一個無限重複下去的閉環,這將是一件非常有意思的事情,就像本篇博文一樣。

本文的重點是 記錄 => 分享 兩個環節,至於其它的,以後補充。

背景

起因是我的 Hexo 部落格有很久沒有更新了,因為每次寫完一篇文章要再部署到部落格網站,太麻煩了。

我所有的內容都放在了 GitHub:my-notes 這個倉庫下,然後本地使用 VS Code 去整理和編輯, Git + GitHub + VS Code 這套組合拳足以秒殺市面上的大部分筆記管理軟體。

當然好的軟體自有其存在的價值,比如我會使用:

  1. ulysses 去記錄我零散的思維片段,其在移動端的編輯體驗非常棒;
  2. 有道雲筆記將在微信或者在網路中看到的有價值的資源一鍵傳送到有道雲筆記進行臨時備份;
  3. 滴墨書摘將實體書或者圖片中(如:網易雲音樂圖片中的歌詞,海報文案…)的文字自動提取出來進行歸類;
  4. 從 Kindle 中匯出的讀書筆記。

以上種種,所有蒐集來的素材,等空下來的時候(週末)再整理和細分到 my-notes 下。

然後我會用 docsify 把 my-notes 中的內容放在我的 筆記:文件網站 中展示出來;最後,將一些想要分享的文章提出來再放到我的 部落格:質數的一 部落格。如果有興趣話,再同步更新到簡書, 掘金,segmentfault,知乎各個平臺。

tip: 如果你是個技術極客,或者願意再折騰一下,那麼在 VSCode 下再整合 Cacher(Gitss 的第三方管理平臺) 的外掛,當然前提是你需要把素材(程式碼片段)放到 Cache 下,你會進入到另一個界,神界,只需要 Shift + Option + I,素材(程式碼片段)就會自動插入到當前段落下。

Cacher 官方連結

以上就是我的整套寫作流程了,素材的整理和蒐集,到寫文章,再到文章內容的呈現和分享。

下面的內容將更多的從技術(程式碼)層面進行闡述,如何讓以上流程實現自動化。

前方高能!(非程式設計師)

docsify 和 Hexo 資料遷移

docsify 和 Hexo 的目錄結構是不一樣的,docsify 中的文章按照目錄樹的結構去組織的,這也是選擇 docfisy 的原因,my-notes 本身就是一個 project,而 docsify 可以直接將整棵 project 樹呈現出來。但是 Hexo 需要將所有的文章全部放在 source/_posts 目錄下,並且 Hexo 的文章格式和 docsify 有差異的,這意味著在兩者之間需要有一次文章格式的轉換,於是需要將 docsify 中的樹狀目錄轉換為一維的形式,全部放在一個目錄下去。

docsify 下的文章目錄結構:

tree .
├── 演算法
│   ├── 演算法入門
│   │   ├── (0)Linux-C-程式設計.md
│   │   ├── (1)氣泡排序.md
│   │   ├── (10)-堆之佇列的優化.md
│   │   ├── (2)快速排序.md
│   │   ├── (3)去除排序中的重複元素.md
│   │   ├── (4)佇列.md
│   │   ├── (5)棧.md
│   │   ├── (6)Floyd最短路徑演算法.md
│   │   ├── (7)Dijkstra最短路徑演算法.md
│   │   ├── (8)鄰接連結串列的非連結串列化實現.md
│   │   └── (9)樹-二叉樹-完全二叉樹.md
│   └── 演算法收藏夾
│       └── 紅黑樹探索筆記.pdf
├── 網路
│   └── HTTP-請求and響應.md
....more items
複製程式碼

Hexo 下的文章目錄結構:

ls hexo-blog/source/_posts
(0)Linux-C-程式設計.md                                        JS物件(2)值傳遞與引用傳遞.md                              http(2)模組之伺服器端.md
(1)Linux程式基礎.md                                       JS事件(3)EventUntil物件.md                                http模組(1)之客戶端.md
(1)氣泡排序.md                                            JS高階(3)陣列去重與排序.md                                jQuery(1)選擇器.md
(10)-堆之佇列的優化.md                                    JS物件(3)經典物件建立與繼承模式.md                        jQuery(2)事件.md
(2)Linux程式空間.md                                       JS物件(4)物件方法.md                                      jQuery(3)DOM屬性與內容.md
(2)快速排序.md                                            JS物件(5)物件屬性.md                                      jQuery(4)DOM節點操作.md
(3)Linux多執行緒與同步.md                                   JS設計模型(1)單例模式.md                                  jQuery(5)動畫.md
...more items
複製程式碼

嗯,需要一個指令碼去完成這件事情,關於此部分的內容可以參考我的博文 部落格: Hexo部落格遷移與Node.js目錄遍歷

自動生成 docsify 文章導航目錄

使用 docsify 還有一個問題是,每次新增新的文章都需要在 _sidebar.md 檔案中新增一個新的文章連結, 內容大概如下:

bat _sidebar.md
   1   │ - [README](/README)
   2   │ - **migration_hexo**
   3   │   - [將Hexo部署到自有伺服器](/migration_hexo/將Hexo部署到自有伺服器)
   4   │   - [搭建Hexo部落格站點](/migration_hexo/搭建Hexo部落格站點)
   5   │ - **前端筆記**
   6   │   - **CSS**
   7   │     - **CSS-Secrets**
   8   │       - [字型排版](/前端筆記/CSS/CSS-Secrets/字型排版)
   9   │       - [形狀](/前端筆記/CSS/CSS-Secrets/形狀)
  16   │       - [FlexBox](/前端筆記/CSS/CSS3/FlexBox)
複製程式碼

每新增一篇文章都要往這個檔案裡手動新增一個新的文章導航連結,非常麻煩,而且很容易出錯,這種需要機械重複勞作的事情,顯然也是通過一段程式碼就可以解決的 auto_generate_docsify_sidebar.js。該指令碼會自動遍歷當前工程下的所有目錄然後根據所在的路徑和檔名稱自動生成 _sideBar.md 檔案。

自動部署

Ok, 解決了 docsify 和 Hexo 之間的文章格式,接下就是部署的問題了,N 久以前我是將 Hexo 直接部署到 GitPages 中的,此部分內容可以參考我的博文 部落格:Hexo系列之站點搭建篇 ,由於牆的存在以及種種原因,訪問速度以及部署體驗並不好,所以我又決定將 Hexo 部署我的騰訊雲伺服器中去,此部分內容可以參考我的博文 部落格:Hexo系列之部署篇,嗯,當你可以將 Hexo 自動化部署到伺服器之後,你會覺得實現 docsify 的自動化部署將會是件多麼簡單的事情,此部分內容可以參考 docsify 官方文件

那麼,盡情享受碼字的快感吧!

以上每個環節都有值得改進和優化的地方,我會不斷更新這套流程,如果你有更好的 idea,也請告訴我。

相關文章