我一直相信,懶惰的程式設計師就是好程式設計師。 為什麼? 因為讓一個努力的人去做一件事,他就會去做。 一個懶惰的程式設計師會花費 2-3 倍的時間,但會寫一個腳本來為他做這件事。 第一次執行此操作可能需要花費非常長的時間,但對於重複的任務,這種方法將很快獲得回報。 我認為自己是個懶惰的程式設計師。 這是序言,現在讓我們進入正題。
故事一
幾年前,我想知道如何提升我的英語能力。 沒有什麼比閱讀文學更好的了。 我購買了電子閱讀器,下載了書籍,然後開始閱讀。 在閱讀的過程中,我不斷地遇到不熟悉的單字。 我立即使用閱讀器內建的字典翻譯它們,但我注意到一個特點:這些單字不想被記住。 幾頁後,當我再次遇到這個詞時,90%的可能性我再次需要翻譯,而且每次都會發生這種情況。 結論是,在閱讀時僅僅翻譯不熟悉的單字是不夠的,你需要做其他事情。 理想的選擇是將其引入日常生活並開始使用它,但我不住在英語國家,這不太可能。 然後我想起我曾經讀過
它是什麼以及和什麼一起吃? 簡而言之,有這個
在第一個小時內,所有收到的訊息中多達 60% 被遺忘;記憶後 10 小時,所學的 35% 仍留在記憶中。 然後遺忘過程緩慢進行,6天后,最初學習的音節總數的大約20%保留在記憶中,一個月後,同樣數量的保留在記憶中。
從這裡得出的結論
根據這條曲線可以得出的結論是,為了有效記憶,有必要重複所記憶的材料。
所以我們想出了一個主意
手動建立卡片是漫長、乏味的,而且很可能在一段時間後你會忘記這個任務,所以在某個時候我問自己一個問題,是否有可能自動化這個任務。 答案是肯定的,可以。 我做到了。 我馬上就說,還有更多
我使用該程式讀書
起初我嘗試使用翻譯
這就是 * 中的字典條目的樣子的Html。,我的選擇與選項相比
在關聯字典中查找單字之前,我會將其帶到
所以,我有一個英語單詞,其字典條目的格式為 *的Html。,剩下的就是將所有內容放在一起,從單字清單中建立 ANKI 文章並將其輸入 ANKI 資料庫。 為此,創建了以下項目
第二個故事。
所有尋找或多或少合格專業的人,包括程式設計師,都面臨著準備面試的需要。 面試中提出的許多概念您在日常實踐中不會使用,並且會被遺忘。 當準備面試、翻閱筆記、書籍、參考書時,我面臨這樣一個事實:需要花費大量時間和精力來篩選你已經知道的信息,因為它並不總是顯而易見的,你必須仔細閱讀以了解它是什麼。無關緊要。 當你談到一個確實需要重複的話題時,通常你已經很累了,你的準備品質也會受到影響。 有時候我想,為什麼不使用 ANKI 卡來做這個呢? 例如,在做某個主題的筆記時,立即以問題和答案的形式創建筆記,然後當你重複它時,你會立即知道你是否知道這個問題的答案。
出現的唯一問題是輸入問題非常漫長且乏味。 為了使過程更容易,
建立此文件後,您可以執行 data2anki 並建立 ANKI 卡。 原始文件易於編輯和共享,您只需擦除相應的卡並再次運行程序,就會創建一個新版本。
安裝與使用
-
安裝 ANKI + AnkiConnect
- 從這裡下載 ANKI:
https://apps.ankiweb.net/ - 安裝 AnkiConnect 插件:
https://ankiweb.net/shared/info/2055492159
- 從這裡下載 ANKI:
-
安裝
數據2anki - 下載
數據2anki 來自 github 儲存庫git clone https://github.com/anatoly314/data2anki
- 安裝依賴項
cd data2anki && npm install
- 下載java依賴項
https://github.com/anatoly314/data2anki/releases/download/0.1.0/jar-dependencies.zip - 開箱 jar 依賴項.zip 並將其內容放入 data2anki/java/jars
- 下載
-
用於翻譯單字:
-
在文件中 data2anki/config.json:
-
在鑰匙裡 模式 輸入值 DSL2ANKI
-
在鑰匙裡 module.dsl.anki.deckName и module.dsl.anki.modelName 相應地寫
卡組名稱 и型號名稱 (必須在創建卡片之前已經創建)。 目前僅支援模型類型 基本版:有正面和背面字段,並將創建一張卡。 您在「正面」中輸入的文字將顯示在卡片的正面,您在「背面」中輸入的文字將顯示在卡片的背面。
原詞在哪裡? 前場,翻譯將在 後場.
新增支援沒有問題 基本卡(和反轉卡),其中將為單字和翻譯建立反向卡,根據翻譯,您需要記住原始單字。 你所需要的只是時間和願望。
-
在鑰匙裡 module.dsl.dictionariesPath 註冊一個已連接的陣列 *.dsl 字典。 每個連接的字典都是目錄,字典檔案所在的位置符合以下格式:
DSL字典結構
-
在鑰匙裡 module.dsl.wordToTranslatePath 輸入您要翻譯的單字清單的路徑。
-
- 啟動並運行 ANKI 應用程式
node data2ankiindex.js
- 利潤!!!
-
-
用於從 Markdown 建立卡片
-
在文件中 data2anki/config.json:
- 在鑰匙裡 模式 輸入值 markdown2anki
- 在鑰匙裡 module.markdown.anki.deckName и module.dsl.anki.modelName 相應地寫
卡組名稱 и型號名稱 (必須在創建卡片之前已經創建)。 為了 markdown2anki mode 僅支援模型類型 基本版. -
在鑰匙裡 module.markdown.selectors.startQuestionSelectors и module.markdown.selectors.startAnswerSelectors 您編寫選擇器,分別標記問題和答案的開頭。 帶有選擇器本身的行不會被解析,也不會出現在卡片中;解析器將從下一行開始工作。
例如,這個問題/答案卡:
在 Markdown 中它看起來像這樣:
#QUESTION# ## 問題 5. 寫一個 mul 函數,當使用下列語法呼叫時,函數將正常運作。 ```javascript console.log(mul(2)(3)(4)); // 輸出:24 console.log(mul(4)(3)(4)); // 輸出 : 48 ``` #ANSWER# 以下是程式碼,並解釋其運作方式: ```javascript function mul (x) { return function (y) { // 匿名函式 return function (z) { // 匿名函數return x * y * z; }; }; } ``` 這裡`mul` 函數接受第一個參數並返回匿名函數,該匿名函數接受第二個參數並返回匿名函數,該匿名函數接受第三個參數並返回連續傳遞的參數的乘法在定義的Javascript 函數中inside 可以存取外部函數變量,並且 function 是第一個類別對象,因此它也可以由函數返回並作為另一個函數中的參數傳遞。 - 函數是物件類型的實例 - 函數可以具有屬性並具有返回其建構函數方法的連結 - 函數可以儲存為變數 - 函數可以作為參數傳遞給另一個函數 - 函數可以是從另一個函數返回
範例取自此處:
123-JavaScript-面試問題 專案資料夾中還有一個包含範例的文件
examples/markdown2anki-example.md
- 在鑰匙裡 module.markdown.pathToFile
寫下文件所在的路徑 *.MD 問題/答案文件
- 啟動並運行 ANKI 應用程式
node data2ankiindex.js
- 利潤!!!
-
這是在手機上的樣子:
導致
在 ANKI 桌面版上收到的卡片可以毫無問題地與 ANKI 雲端同步(免費最多 100mb),然後您可以在任何地方使用它們。 有適用於 Android 和 iPhone 的客戶端,您也可以在瀏覽器中使用它。 因此,如果你有閒暇時間,那麼你可以學習一些新東西,而不是漫無目的地瀏覽 Facebook 或 Instagram 上的貓。
尾聲
正如我所提到的,這更像是一個可以使用的工作 POC,而不是成品。 大約 30% 的 DSL 解析器標準沒有實現,因此,
PS如果您發現任何錯誤(不幸的是,確實有一些錯誤),請在個人訊息中給我寫信,我會糾正所有內容。
來源: www.habr.com