The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

深入探討 Git 中的 Unreachable (無法到達的) 物件與清理方法

在使用 Git 進行版本控制時,我們只要使用 git rebasegit commit --amendgit reset 多多少少都會殘留一些無法到達的物件 (unreachable blob or commits)。這些無法到達的物件雖然不會直接影響我們的日常工作,但它們會佔用儲存空間,並可能在某些情況下引起混淆,例如明明檔案不多,但是卻佔用大量磁碟空間。今天我將深入探討什麼是 unreachable 物件,並詳細介紹如何有效地清理它們。

... 繼續閱讀 ...

使用 Visual Studio 2022 可透過 .editorconfig 鎖定文字檔案的儲存編碼格式

我們長久以來一直有一個蠻困擾的事情,就是 Visual Studio 2022 在存檔的時候,他不一定會將程式碼自動儲存成 UTF-8 編碼,若以 Big5 編碼來儲存文字檔案時,在其他程式讀取時就有可能出現異常。例如我們的程式碼都會需要 git push 到 Azure DevOps 的 Repos 中,若程式檔的編碼為 Big5 的時候,這些中文字在 Azure DevOps 上面都無法正常顯示,也就是我在 Code Review 時看到的都會是亂碼,真的是不勝其擾。這篇文章我就來告訴你怎樣解決!

... 繼續閱讀 ...

取得 .NET 8 應用程式的版本資訊必須注意的兩三事

我前陣子幫客戶開發一個 Windows Forms 應用程式,使用 .NET 8 來開發,不過在案子的最後一刻,客戶要求要加上一個「版本資訊」的功能,這個功能要顯示目前程式的版本號。這個功能實在是不常寫,沒想到還真的有點地雷,因為跟 .NET Framework 有點不太一樣了。這篇文章就來分享一下我在開發過程中遇到的問題,以及解決方法。

... 繼續閱讀 ...

在 Visual Studio 2022 開發 ASP.NET Core 這樣設定就對了!

其實我大部分時間都在 Visual Studio Code 裡面做開發,久而久之就生疏了 Visual Studio 2022 裡面的各種選項設定,有很多都是近幾年才有的新功能,而有些「預設值」確實不太好用,只要沒特別去研究,就不知道原來只要微調一下就會變的非常方便。這篇文章我就來整理一下 Visual Studio 2022 在開發 ASP.NET Core 時相關的那些重要設定。

... 繼續閱讀 ...

淺談 LLM 大型語言模型的 Temperature、Top-P 和 Top-K 參數

深度學習模型在自然語言處理 (NLP) 領域中扮演著重要的角色,而調整模型的參數可以影響生成的文字風格和品質。在大語言模型中,TemperatureTop-PTop-K 是常見的參數,用於控制文字生成過程中的隨機性創造性。我自己在開發 LLM 應用時,主要也都只會去調整 Temperature 而已,其實 Top-PTop-K 很少去調他,因為每次調整都沒有什麼好結果,之前因為不太理解這兩個參數的真正含意,最後還是回歸預設值處理。這篇文章我打算好好的理一理這幾個參數的真正含意。

... 繼續閱讀 ...

如何用 Python 取得 GPT-4o 模型最新的 Tokenizer 詞彙表 (o200k_base)

昨晚 OpenAI 的 2024 春季更新發佈會,宣布了最新的 GPT-4o 模型,其中最讓我好奇的地方是,他將 Tokenizer 的詞彙表擴充了兩倍之多,理論上整體的文字處理速度會提升,且呼叫 API 的成本也會大幅降低。我就好奇到底他們增加了哪些詞彙?這篇文章將介紹如何用 Python 取得這個詞彙表的內容。

... 繼續閱讀 ...

如何在 Visual Studio Code 正確啟用「資料行選取模式」(區塊選取模式)

我之前有在我的 YouTube 頻道發佈過一部《示範 VS Code 強大的多重游標編輯能力》影片,當時有提到「資料行選取模式」(Column Selection Mode) 的功能,但是沒有特別說明如何正確啟用這個功能。重點是,我自己每次要找這個啟用的設定都要找個老半天,因為 VSCode 會自動同步設定,只要登入就會自動復原,而我上次調整這個設定已經是很多很多年前的事了。我為什麼還要找這個設定呢?因為有上課的學員會來問我,但我每次都找不到!所以我決定寫一篇文章來記錄這個設定。

... 繼續閱讀 ...

從 .NET 7 開始就不鼓勵使用 .NET Generic Host 建立應用程式

這應該算是 .NET Core 的歷史包袱吧,任何軟體都一樣,沒有人可以預料未來的需求,所以當初設計的時候,多多少少一定會遇到一些不合理的地方。然而,因為當年 .NET Core 算是有承諾「絕對不會」有破壞性的 API 變更,所以一些早期設計不當的 API 全部都留下來了,也因為這樣,.NET 就需要設計一些新的 API 來取代「包裹」舊的 API,雖然會帶來一些困擾,但是只對老人困擾而已,對新人來說,這些都是「新」的 API,所以不會有任何問題。這篇文章我要來介紹 .NET 7 / 8 通常該如何初始化應用程式,以及跟舊版有什麼不一樣的地方。

... 繼續閱讀 ...