9102年都已通過去好幾天了,如今纔來產出年終總結。html
在18年的總結中,我提到本身開發了一個名爲cuckoo
的工具,用來代替macOS的提醒事項、日曆,以及由crontab調用的shell腳本。這個目標在19年得以實現,cuckoo
已經徹底取代了它們。git
cuckoo
實現瞭如下功能:github
cuckoo
甚至能夠在正確的二月最後一天彈出提醒——不論是平年仍是閏年;alerter
,cuckoo
能夠在提醒彈出後推遲它(5分鐘、10分鐘),或推遲到指定的時刻;cuckoo
能夠把提醒以微信消息推給手機;ControlPlane
,實現按場景提醒——好比10點鐘若在公司就提醒本身開晨會,若在家則毫不彈出。我還提供了給Emacs用的minor mode和Alfred Workflow,以提升易用性:shell
C-c r
即可爲光標所在的條目建立提醒;DONE
或CANCELLED
狀態時,也會自動更改cuckoo
中任務的狀態(感興趣的讀者能夠移步以前的文章);在18年入手MBP後不久,我便入手了Alfred,併購買了Powerpack。平均天天使用Alfred 110次,大可能是Snippets(auto expansion真香)、Clipboard(臨時存儲文字和圖片的絕佳位置)、Workflow。經常使用的Workflow都是我本身開發的:數據庫
unit
用於快速輸入不一樣時間長度的秒數的,例如輸入6天的秒數6 * 24 * 60 * 60 * 1000
;upload
用於上傳圖片到GitHub,把GitHub當圖牀用(感興趣的讀者能夠移步這篇文章);gt
用於獲取指定日期的UNIX時間戳、int
用於獲取一些預設的時間戳(例如「昨天0點」);yl
用於精確設定macOS的音量;bqb
用於鬥圖(感興趣的讀者能夠移步這裏)。這些腳本都收集在名爲wa的私有倉庫中。因爲需求比較穩定,這個倉庫的迭代很少。npm
不害臊地說,jjcc
是一個用Common Lisp寫就的編譯器,運行在SLIME中,若是投餵它某種LISP方言代碼,就能夠編譯出跑在macOS上的x64彙編代碼。這是個人第一款生成彙編指令的編譯器,爲此還惡補了很多彙編語言知識,尤爲是x64的calling convention。這款編譯器的開發過程寫成了文章發表在博客和知乎上,感興趣的讀者能夠移步這個專欄。json
在完成了蹩腳的自定義函數特性後,我讀了《An Incremental Approach to Compiler Construction》這篇論文,它按部就班地開發一個Scheme語言到x86彙編的編譯器,而且階段劃分得更好,後來我也按照論文的思路從新實現了一遍。後端
19年10月份時RescueTime Premium到期,因爲太雞肋了便再也不續費。我仍然有time-tracking的需求,因而打算本身動手寫一個代替品。皇天不負有心人,我找到了active-win
這個庫,它能夠獲取當前有焦點的窗口的元信息。基於這個庫我寫了兩個腳本:數組
savemoney.js
,每隔一秒調用active-win
獲取當前激活窗口的元信息,而後寫入到Redis中;accounting.js
,不停地從Redis中取出數據,運算後寫入到MySQL中。目前僅僅是將數據記錄在了MySQL中,沒有作報表和統計。這兩個腳本經過Launchd在每次登陸後自動運行。微信
19年在GitHub博客一共發表了28篇博文,數量差強人意,質量亟待提升。在讀了利用金字塔原理寫出好文章後,我逐漸改進本身的寫做方法,以期寫得更有條理。
除了GitHub博客和SegmentFault,我還在知乎上發表了一些文章,大可能是關於jjcc編譯器的。剛纔我說文章的質量亟待提升,若是你看過jjcc編譯器系列的文章的話,必定會很贊成個人觀點。
博客和SegmentFault的受衆很小,因而我又開通了微信訂閱號,但願能夠在技術圈子裏更多的展現本身——有沒有值得展現的內容另說。在訂閱號上發表文章多了一種無形的壓力,畢竟這些內容更容易被同窗、同事、同行看到(前提是人家樂意看)。萬一寫的很糟糕,可就糗大了。目前訂閱號關注者寥寥,有興趣的能夠微信搜索「小打小鬧寫點bug」關注。
19年讀完的書很少:
還有許多在讀經典書籍,如《Clean Architecture》、《重構》。剛開始我會在上下班搭地鐵時讀這些書,後來將看書時間固定在了天天下午一點至一點半。這些在讀的書像一條隊列,我天天會讀隊頭的書,而後放到隊尾。這樣一來,天天都在涉獵不一樣領域的內容。
在18年9月,我閉門造車地整理了一份Web後端軟件工程師的技能樹,再據此來尋找要讀的書。例如,上述的《MongoDB in Action》是依據「後端知識/文檔數據庫/MongoDB」找的,《Linux Shell Scripting Cookbook》是依據「後端知識/命令行操做」找的。技能樹整理得好很差暫且按下不表,但漸漸地我忘記了看書的初衷,成了「爲看而看」。看似天天中午都在學習,實際上因爲目的性不強,收穫不大。因爲天天讀不一樣類型的書,同一個主題的學習過程也變得支離破碎。這個學習方法已經到了迫切須要優化的地步。
19年10月升級到macOS Catalina,而後問題便接踵而至。首當其衝的是alerter
和terminal-notifier
無法用了,沒法在右上角彈出提醒。一番折騰後不見轉機,只好先用AppleScript代替,讓cuckoo
能夠彈出提醒。AppleScript的display notification
功能遠不及alerter
那麼豐富,聊勝於無吧。
Firefox也開始鬧彆扭。只要打開Firefox稍微用兩下,就會有一個名爲FirefoxWebCP Extension的進程瘋狂地使用CPU,Firefox內的各標籤頁也紛紛失靈轉圈,幾天下來都是如此。沒辦法,只好起用Chrome。稍微磨合後發現Chrome其實挺不錯,各方面都今非昔比。之前之因此一直堅守在Firefox的陣營,主要是由於:
但願Mozilla在2020年能夠修復這個問題,讓我重回Firefox的懷抱。
2019年的Common Lisp依然讓人哀其不幸怒其不爭,我也依然癡迷於這門古怪的語言。但癡迷不能當飯吃,要將CL投入到實際應用實在太難。且不說Quicklisp上庫的數量遠不及PyPI和NPM,質量也使人抓狂。這不,都9102年了,訪問一個返回JSON數據的HTTP接口,還得先用drakma
發出請求(也許不支持HTTP/2),再用flexi-streams
將字節數組轉換爲UTF-8編碼的字符串,再用cl-json
解析一番。拿到一個列表對象後,再用car
、cdr
、assoc
一頓操做猛如虎,才能拿到須要的數據。
2020年,MAKE CL GREAT AGAIN!
在年中的時候,萌生了換記帳軟件的想法,由於挖財用起來愈來愈不爽了,並且成天記流水帳也沒什麼收穫。一番摸索後,我決定嘗試一下複式記帳法,並選擇了GNU Cash——早年間用過一次,但沒看入門手冊就開始用,根本玩不轉。這一次卻是讀了手冊,但GNU Cash的UI和操做方式仍是沒法讓我心動;以後知道了beancount,卻沒法在個人系統中順利運行;最終我選擇了ledger,它是一個命令行程序,不負責記錄,只負責讀取手打顯誠意的交易明細,而後產出報表。Emacs有一個ledger-mode插件,二者配合用來記帳超痛快。
在2020年我但願至少能完成:
cuckoo
;wa
;alerter
的代替品;最後