有些小雜項不太適合單獨發一篇,就索性順便把這些跟之前的 Weekly Collection 也重新安排到 Discovery Log 系列吧。
VSCode Recover Deleted File
在使用 VSCode 時,如果不小心按到什麼導致檔案消失,當下請直接按 Ctrl-z,理論上檔案就會直接恢復。但如果沒按又亂試了一些方法,那後來再用 Ctrl-z 可能就比較難復原。網路上查到 VSCode 會持續保存檔案的快照,所以在檔案就真的消失無法簡單復原時就可以到 ~/.vscode-server/data/User/History
裡面撈檔案,請搭配 ls -ltr
依照日期排序後再進到最新的資料夾中,再用相同的指令去找最新編輯的檔案。Win11 的路徑在 C:\Users\YOUR_NAME\AppData\Roaming\Code\User\History
。
AI 工具推薦: WritingTools
最近在找 grammarly on VSCode 的替代品,在 reddit 上看到有人推薦這個 AI 工具: WritingTools。它本身是一個視窗軟體,所以可以在任何地方使用而不限於 VSCode 或是瀏覽器。使用了一些時間後覺得還不錯,對免費仔來說很友善。最方便的功能是可以讓它直接修改編輯中的文字,也能透過自定義 system prompt 來設定自己常用的小工具。對隱私有疑慮的也能用 ollama 來使用本地端的模型 (但重點是要跑得動,我用無獨顯的筆電跑 llama 3.1 8B 等到天荒地老…)。我個人目前是使用 Gemini 2.0 的各種模型 (API 不用收費,只有一分鐘內的次數限制)。唯一缺點就是介面有點陽春 (每次調整完設定後要關掉重開)。
LLM Visualization
滑 Linkedin 看到的酷東西: LLM Visualization,視覺化 LLM 中的計算過程。
LLM Visualization 截圖
Cognitive load is what matters
這是一篇探討軟體專案中認知負荷的文章 ( 原文連結)。利用 AI 總結內容以及個人的些微調整:
主要目標應該是降低軟體專案中的認知負荷,因為它直接影響開發人員的理解、時間和成本。認知負荷指的是完成任務所需的心理努力,而外在認知負荷(由資訊呈現方式引起)應該盡可能減少。可能跟一般在 Clean code 學到的有點矛盾,但是如果有相關經驗的會很有感觸。例如把所有重複的部分拆成獨立的 function,一開始看起來很模組化,但是後來會發現改不動。
- 複雜條件式與巢狀 If 判斷: 透過引入具有意義名稱的中間變數,以及使用提早返回(early returns)來專注於「順利路徑」(happy path),來簡化複雜的條件式。
- 繼承: 避免過深的繼承層級,改用組合(composition)來減少理解多個程式碼層級的需求。
- 模組深度: 偏好深層模組(簡單介面、複雜功能)而不是淺層模組(複雜介面、簡單功能),以改善資訊隱藏並減少理解眾多互動的需求。
- DRY 原則: 避免過度使用「不要重複自己」(Do Not Repeat Yourself,DRY)原則,因為它可能導致緊密耦合和意想不到的後果。「少量的複製勝過少量的依賴。」
- 框架: 以與框架無關的方式編寫程式碼,以避免強迫開發人員學習框架特定的「魔法」。
- 分層架構: 避免過多的抽象層,除非有實際擴充點的理由。
Windows 10 End of Life
看到有人在討論 Win10 要終止支援了,查了一下才發現原來這個作業系統從 2015年就釋出已經接近十年。竟然已經十年了。
Disable the adaptive sound control switch sound of SONY’s headphones
最近換了入耳式的耳機,從原先買硬碟送的不知名耳機換成 LinkBuds S (WF-LS900N)。我本身有WH-1000XM4 但是攜帶上是一個問題,且容易太熱流汗。體驗過無線的藍芽耳機後才感受到由外而內的清爽感,但是不知名耳機時常會發出未知原因的嘟嘟聲,所以怒換 SONY。剛換後發現自動隨著環境切換降噪模式的功能很方便,但是都會有切換的提示音干擾。後來發現可以進到手機的 APP 把 Notification & Voice Guide 關閉,從此就沒有切換的干擾了,非常棒。
Notification & Voice Guide