Anki 進階
用 Anki 加強專業能力
忘的少就是學的多
研究所時,我接 case 寫資料庫後端程式,寫著寫著遇到一個「從來沒遇過」的問題,但是上網查了之後卻覺得好像「有一點點印象」,翻出以前記錄在 Evernote 的內容後很驚訝的發現,這跟我一年前做作業遇到的問題「根本一模一樣」!
這帶出一個很殘酷的事實:即便我們有將這些學習的筆記給「紀錄」下來並妥善「整理」,但隨著時間消逝,我們會漸漸忘記筆記的內容,最後連「有記錄過」這件事都忘記了!
各位讀者上課時或多或少都會記些筆記,不妨將這些筆記拿出來瀏覽一下,即便是一兩個月前的筆記,很多地方可能已經不知道在些寫什麼;若是一年以上的講義,更會有種「為什麼有人要模仿我的字跡,這真的是我寫的嗎?」的感覺。
亦或請讀者打開自己的 Evernote 或 Pocket,翻翻看以前紀錄的筆記或暫存的文章,有沒有一種「啊~以前好像真的有記錄過這個東西。」的感覺?
若沒使用過上述工具也沒關係,請讀者打開網頁瀏覽器中「我的最愛」連結看一看,你是不是曾經為了學英文而將 VoiceTube 或是其他網站加入我的最愛?有沒有覺得某些網站好像很久沒看過了?有沒有感到很懷念?
所以,很多時候我們不是沒有將重要資訊記錄起來,也不是沒有把重要資訊整理好,而純粹是「忘記」我們做過這些事。
學如逆水行舟,不進則退。 - 諺語
學如逆水行舟,不進則退,因為學習的過程除了「誰學的多」外,「誰忘得少」更是左右學習成效的關鍵。因此,為了讓筆記的學習成果最大化,非常建議讀者將重要的專業知識也加入 Anki,利用其高效率的演算法來協助你學習。
Anki 知識資料庫
用 Anki 來當作知識資料庫跟用 Evernote、OneNote 等工具其實十分相似,新增、修改、搜尋內容都很方便,同時也有跨平台、雲端同步的特性。但 Anki 有個非常大的優勢:它會用 Spaced Repetition 演算法自動將這些專業知識卡片定時秀給你看,就跟背單字時一模一樣,即使我們想忘記都難。
將「專業知識」加入 Anki 時,一樣請把握者幾個大原則,不一定要完全符合,但值得參考:
- 卡片的開頭應明確指出要傳達的知識重點/關鍵字。
- 一張卡片只紀錄一個要學習的知識。
- 如果一張卡片有一個以上的知識,將其打散成多張卡片。
- 一個卡片長度應該在 1~5 行,超過表示有切割空間。
- 一個卡片應該在 10 秒內理解,超過表示有切割空間。
而知識資料庫的卡片內容主要分為兩種類型,一種是需要記憶的(跟背單字一樣),另一種則是有印象就好。
「需要記憶的東西」我想大家應該都能理解,例如三角函數、化學分子式、拉普拉斯轉換等等,我自己覺得考試考這些很沒意義啦,但如果教授都說要考了,你就用 Anki 把它給背起來啊!
「有印象就好的東西」就是你不用刻意去背,但是你希望可以長久擁有這些知識,大部分專業能力的卡片都會屬於此類。
上述這兩種分類只是一種概念,你不需要真的在卡片上面註明這是「需要記憶的東西」或這是「有印象就好的東西」,某張卡片內容是否需要背誦,這在你看到卡片內容時自己內心就能決定了。
例如你在上工程數學課程時,看到 拉普拉斯轉換 的卡片,因為期中考會考所以你要背誦其公式,所以它現在屬於「需要記憶的東西」;但是在你畢業之後,它就變成「有印象就好的東西」,當你再看到拉普拉斯轉換的卡片時,你不用背誦其公式但要回憶一下「這個轉換可以解決什麼問題」,這樣當你以後遇到某些問題,就會記得可以用拉普拉斯來解。
「既然不用硬背,那還記錄幹嘛?這些東西上 Google 查就可以查到了啊!」
這句話對一半,但是也錯一半。紀錄在這個「知識資料庫」的內容是你以前就「理解過一次」後「整理過」的東西,上 Google 當然也查得到類似的內容,但是你又要再重新理解一遍,就跟 少一個插座 一樣,很不方便。長久下來不僅重複浪費時間與精力,而且會覺得「奇怪,這個之前已經學過了怎麼又忘記了」而懷疑自己,並降低自信心。
妥善分類
我們提到「一張卡片只紀錄一個要學習的知識」,但是「一個專業主題可能包含很多知識」,所以一個主題會需要多張卡片來配合。以下這些技巧可以有效協助凝聚主題,方便搜尋與連結知識。
1. 階層牌組
Anki 可利用「牌組」與「階層牌組」有效將知識做分類,詳細用法請參考《英、日語同步 Anki 自學法》書中的 Anki 教學章節第 73、115 頁。
2. 標籤
另一個好用的東西是「標籤」。例如我有兩個牌組,一個是 Ruby on Rails,一個是 JavaScript,裡面都各有一個實作 AJAX 的範例卡片,此時我將兩張卡片加上 AJAX 這個 TAG,如此一來,當我要找有關 AJAX 的資訊時,可直接透過 TAG 來尋找,不會因為他們分別放在不同牌組而找不到。詳細用法請參考《英、日語同步 Anki 自學法》書中的 Anki 教學章節的第 79、80 頁。
3. 自定義標籤
自定義規範標籤其實就只是「標籤」,只是你刻意將這些標籤指定為「特殊意義」。舉例來說,有些卡片我覺得內容編排不是很適當,有待修改,但又懶得現在修改,於是我將這些「待整理」(太長、不夠精簡等)的卡片 TAG 欄位填入 TODO,這樣我之後就可以透過在 TAG 欄位輸入 TODO 來快速找出這些卡片。這個想法源自 Eclipse 的 TODO, FIXME 等 stub。
4. 其他活用方式
例如我會將一些寫程式時常用的 Snippet 放入 Sublime Text 或 Eclipse 內,但同時也會放一份製作成 Anki 卡片,並加上標籤來分類,如 snippet_scrapy, snippet_react, snippet_gulp 等,以讓自己對這些 Snippet 保有印象,才不會每次都忘記自己有這些 snippet 可用。
5. 指向其他工具
有時候某些主題的知識量太大,無法做適當切割;亦或正學到一半,對整個主題還沒有充分了解,無法有效率地製作成卡片;此時可以先將這些知識放在前述 Evernote、OneNote 等工具內,接著在 Anki 卡片內去 reference 到該工具,也可以達到一定的複習效果。
總而言之,不要忘記 Anki 或其他工具都是屬於你自己的知識資料庫,請依照自己的需求與使用習慣來做收納。
卡片範例 - 解說
下面直接以實際範例來看我如何將專業知識加入 Anki 卡片中,由於版面限制,我將卡片內容不分正反面打在分隔線上方,分隔線下方則是說明。
iframe request
header("X-Frame-Options: DENY");
header("X-Frame-Options: SAMEORIGIN");
header("X-Frame-Options: ALLOW-FROM http://..");
網頁可以透過 iframe 來插入外部網站,但這可能會被惡意使用產生 clickjacking 風險,因此建議設定 X-Frame-Options。
.htaccess
acts as a subset of the server's global configuration file for the directory that they are in, or all sub-directories.
紀錄 Apache Server 中 .htaccess 檔案 的目的。
Cookies are primarily for reading server-side. LocalStorage can only be read client-side.
Cookies are sent with the HTTP header. LocalStorage stays on the client.
紀錄傳統 Cookies 與 HTML5 LocalStorage 的差異與使用時機。
Homebrew is a package manager for OSX analogous to yum, apt-get, etc
Homebrew installs packages to their own directory and then symlinks their files into /usr/local.
- brew install wget
- brew doctor
提醒自己在 OSX 環境內可用 Homebrew 來做如同 apt-get 或 yum 的套件管理。
The same-origin policy restricts how a document or script loaded from one origin can interact with a resource from another origin.
Two pages have the same origin if the following are the same for both pages.
- protocol
- port
- host
紀錄 same-origin policy 的規則以及限制。
- git clone
- git commit
- git status
- git remote
- git revert
- ..
紀錄 Git 的各種基本指令,這是屬於比較統整形的大範圍卡片。大卡片的用意在統整複習,掃過這張卡片的所有指令時,在腦海中回憶它們的用法與目的。
寫 Python 時務必確認是在正確的 virtualenv 內,命令列面要有 (虛擬環境資料夾名稱)。
source env/bin/activate
deactivate
有時我們會需要不同的開發環境,用 Virtual Machine 或 Docker 感覺都有點 Overkill,此時可以用 Python Virtualenv、Node.js npm、Ruby rvm 或 PHP Composer 等套件管理工具來加速開發。
CSS 屬性為順時針配置
margin: 25px 50px 75px 100px;
margin: 上 右 下 左
margin: 25px 50px 75px;
margin: 上 左右 下
margin: 25px 50px;
margin: 上下 左右
margin: 20px;
margin: 全
如標題,提醒自己 CSS 屬性為順時針配置,在快速修改 CSS 時非常實用。
帳號密碼都正確卻連不上 DB 時,檢查該帳號是否只能從 DB 的 localhost 登入。可以用 root 更改該帳號的這項設定。
但有些 shared host 的 cPanel 會鎖定 phpMyAdmin 的這項設定,使用者無法直接在那邊調整。相對的,使用者必須從 host 提供的 Remote Mysql Database Access 頁面將自己的 IP 加入白名單。
記錄自己實際遇到的問題,有些 Shared Host 會將使用者的 phpMyAdmin 部分功能給鎖住,造成帳密正確也登不進 Database,此時可到其 cPanel 修改設定。遇到問題就記錄起來,之後再遇到就知道怎麼解決。
REGEX
- [aeiou]
- [a-z0-9]
- [^XYZ]
- [0-9A-Fa-f]
Special characters lose their special meaning inside sets []. For example, [(+*)] will match any of the literal characters '(', '+', '*', or ')'.
紀錄基本的 Regular Expression 語法,開頭加上 REGEX 是為了優化搜尋,這樣之後在 Anki 直接搜尋 REGEX 就搜的到這張卡片。
javascript 以前沒有 Ruby's require 或 Sass's @import
- CommonJS:module.exports 與 require()
- AMD:define(),為 async
- ECS 6:export 與 import
A library capable of supporting all of the current "standards" is said to support Universal Module Definition.
ECMAScript 6 以前沒有預設 import 或 export 方法,所以就有 CommonJS 的 require() 與 AMD 的 define();後來 EC6 生了 import 與 export,於是就把符合以上三種方法叫 UMD
卡片範例 - 截圖
大概就是這樣,各位讀者有抓到一點感覺了嗎?或請參考下面截圖範例。
卡片範例 - 影片
Anki 結論
我認為一個完整的學習流程應該是:
- 上課時專心學習並盡可能當下吸收,同時以筆記快速紀錄知識。
- 下課後整理筆記進入《第二手工具》Evernote、OneNote、寫成網誌等等。
- 最後再將其中的重點濃縮並整理進入 Anki,利用 Anki 高效率演算法加強複習。
這套學習流程非常有效率,練起來之後你會變得非常強,請讀者盡可能把《英、日語同步 Anki 自學法》書中第 46 頁的電腦快捷鍵記熟、並加強自己的打字速度,因為你這些能力越強,輸入筆記的速度就越快、整理筆記的速度就越快、新增 Anki 卡片的速度就越快,學習效率自然就越好。就算你沒有打算使用這些工具,加強這些能力依然會是你在未來數位時代不可或缺的競爭力。
如果你有的只是一個錘子,那麼所有的東西看起來都像一個釘子 Abraham Kaplan -馬斯洛的錘子
話雖如此,但 Anki 也不是做什麼都適合,它還是有擅長與不擅長的地方,不要對它過度依賴。請回憶我之前跟你說過的,選擇一個工具,是因為你用過後覺得它適合你,而不是因為別人告訴你它適合你。
但是,如果你目前還沒有一套熟悉的學習工具,請直接試著使用 Anki 吧!不要再尋找其他工具比較來比較去了,不要再陷入「該用什麼工具」的迴圈,否則你永遠無法開始學習。等到你 Anki 用久了用習慣之後,自然就會知道它的優勢與弱勢,到時候再來配合其他工具即可。
更多 Anki 資源
更多 Anki 資源
中文資源:
- 觀看我以前錄製的一系列 Youtube 教學影片:Chun Norris 的 Anki 教學清單
- 加入由本書作者我管理的 Facebook 社團:Anki 中文交流社團
英文資源:
- Anki 官方使用手冊:https://apps.ankiweb.net/docs/manual.html
- Anki 官方 Support 平台:https://apps.ankiweb.net/docs/help.html
- Anki 在的 Reddit 討論版: https://www.reddit.com/r/Anki/
原梗來源
原梗來源(書)
第 73 頁 新增卡片範例:「彥伯問臍 - 比喻在行家面前賣弄本事,不自量力。」
原梗來源 彥伯問臍 ,形容陳彥伯不自量力之問政行為。
第 79 頁 新增卡片範例:「共體時艱 - 無薪假能讓員工與公司共體時艱,應該得諾貝爾獎。 」
原梗來源 吳敦義稱讚 設計無薪假應得諾貝爾獎。
第 80 頁 新增卡片範例:「我很滿意貴公司提出的薪資水準。」 反面:「I like to eat banana very much. 」
原梗來源 諷刺「依公司規定」的薪資常態, 只付得起香蕉的公司自然只請得到猴子。
第 84 頁 插入圖片範例:「鹿茸 - 鹿耳朵裡的毛」
原梗來源 馬英九說: 鹿茸是鹿耳朵裡面的毛。
第 88 頁 同步小穹、切換個人檔案艾米莉亞
原梗來源 高捷少女
第 120 頁 回復上一動!搞什麼東西啊?怎麼又是你?就你最特別!報學號!
原梗來源 成功嶺