The Will Will Web

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

如何變更 SQL Server 的系統資料庫定序以避免暫存資料庫的定序衝突

我們上周公司啟動了一個新專案,我們工程師拿到客戶的資料庫之後,發現客戶提供的預存程序無法順利執行,發生了資料庫定序 (collation) 的衝突問題。我們負責的工程師由於是第一次遇到這個狀況,所以鬼打牆了一段時間,因為我上周都在備課,所以我跟他講:「你直接移除重裝 SQL Server 並明確指定定序會比較快,我現在沒時間跟你講太多技術細節。」今天這篇文章我打算來說說這個問題背後的技術細節。

... 繼續閱讀 ...

如何在 Windows 作業系統打造 Rust 開發環境

我最近的課程因為都開始改用 Discord 來當成學員之間的互動介面,為了實現自動審核加入課程的學員,我們用 Rust 撰寫了一支程式來處理這個審核作業,並將程式跑在容器中,部署到 Azure App Service 上面執行。效能好就不用說了,主要是啟動速度快,記憶體使用量也很低,但唯一的缺點就是「可讀性」真的很差,主要是一個相對陌生的程式語言,但我今天在改功能的時候,用 GitHub Copilot 輔助我瞭解程式語法與結構,也用它來幫我完成一些任務,想不到非常順利。今天這篇文章,我打算來介紹如何在 Windows 作業系統上打造 Rust 開發環境,並透過 Visual Studio Code 來開發 Rust 程式。

... 繼續閱讀 ...

聰明的使用 ChatGPT 搜尋功能幫助你解決每日大小事

我們都知道 ChatGPT 在問答的過程中,不時會有「幻覺」的問題,也就是當 ChatGPT 在回答問題的時候,經常表現的自己很懂,但又常常被發現他其實是在胡說八道的狀況。最近 ChatGPT 正式推出了「搜尋」功能,我們終於可以讓 ChatGPT 基於「搜尋結果」來回答問題,如此一來不但可以避免 ChatGPT 的幻覺問題,也可以讓 ChatGPT 回答的更加準確。今天這篇文章,我打算來分享幾個使用 ChatGPT Search 的應用技巧,這也是我在 ChatGPT 錦囊妙計:掌握九大應用場景的創意用法 課程中跟學員分享的其中一個技巧。

... 繼續閱讀 ...

如何利用 Google AI Studio 整理 Whisper 生成的字幕與修正大量錯字

因為我所開辦的課程都會全程錄影,好讓學員可以複習課程內容,最近幾次的課程我還開始幫影片上字幕,讓大家在複習的時候,更能夠理解我在課程中提到的一些偏技術的「專有名詞」。有些不住在臺灣的學員,也有可能會聽不懂臺灣這邊經常聽到的時事口頭禪,我時常會在課程中講一些「時事梗」來活絡氣氛,但是有些學員可能會聽不太懂,這些字幕就是為了讓大家更容易理解課程內容與笑點。我幾乎都是利用超大上下文視窗(context window)的 Google AI Studio 來幫我校正 Whisper 產生的字幕,這篇文章我就來教大家這個技巧。

... 繼續閱讀 ...

如何在 Docker 執行 Playwright 自動化測試腳本

上周微軟的 Playwright 團隊推出了 v1.48 版本,我的 實戰 E2E 測試:使用 Playwright 測試框架 課程有位學員在我們的 Discord 課程專屬頻道中反應,說他沒辦法成功執行 Playwright 腳本,請我幫忙看看。因為要執行學員的程式,而我通常不喜歡在本機執行程式 (安全考量),所以我就藉此玩了一下 Playwright 新版的 Docker 容器,順手寫了份筆記給大家參考。

... 繼續閱讀 ...

如何用 Docker 搭配 NVIDIA CUDA 執行 OpenAI Whisper 的最新 turbo 模型

前幾天 OpenAI 悄悄的發佈了 Whisper 的最新 turbo 模型,這是一個多國語言的模型 (Multilingual model),而且這個 turbo 模型是 large-v3 模型的優化版本,提供更快的轉錄速度,但準確性卻只有輕微下降,整體參數數量只比 medium 模型稍微大一點點而已。我特別為此打造了一個可以利用 NVIDIA 的 CUDA 加速執行的 Docker 映像檔,讓大家可以輕鬆的在自己的電腦上執行這個模型。

... 繼續閱讀 ...

當購買 Zoom Meetings 的 1,000 個與會者授權應該如何正確啟用

我今天舉辦了一場 最強大的 AI 搜尋引擎:Felo Search PRO 直播活動,由於報名人數超過 1,000 人,我還特別升級了我的 Zoom Meetings 方案到 1,000 個與會者授權,但是今天的 Zoom 會議室最多就只有 500 人能加入,那我不是白買了嗎?活動結束後我立刻 Contact Support 發了個支援請求,這才理解 Zoom 的授權架構。今天這邊文章我打算記錄一下這些細節,因為很難得有購買 1,000 個與會者授權的經驗。

... 繼續閱讀 ...

撰寫不用 async await 的 C# 非同步方法並使用 Unwrap 方法簡化程式碼

BenchmarkDotNet 實測驗證發現,只要在現有的非同步方法加上 async/await 關鍵字,其方法的執行效能就有可能會降低 2,700 倍之多。這是因為 async/await 關鍵字會讓 C# 編譯器在編譯程式時,會將非同步方法轉換成一種狀態機的實作,這樣的轉換會增加程式的執行時間。因此,我們在大多數「函式庫」中的程式碼,幾乎都不會使用 async/await 關鍵字來撰寫程式。然而我們在函式庫中實作程式時,是有可能遇到多次非同步等待的情況,此時我們就可以使用 TaskExtensions.Unwrap 擴充方法來簡化寫法,今天這篇文章我就來說說這個開發技巧。

... 繼續閱讀 ...

使用 C# 8.0 Async Streams 實現非同步串流 ASP.NET Core Web API

C# 8.0 引入了一個 Async Streams (非同步串流) 的語言特性,這個特性讓我們可以做到許多以前做不到的事,若用在 ASP.NET Core Web API 上面,你就可以很輕鬆的實現 API 資料串流功能,讓你可以透過「非同步」的方式有效率的處理大量資料。由於這個概念太過前衛,所以我們先從基本的語法開始,然後再來看看如何應用在 ASP.NET Core Web API 上面。

... 繼續閱讀 ...