[食譜好菜] 在 Azure App Service 上自訂網域讓 Cloudflare 代理

Cloudflare 是一間提供給網站使用的綜合網路服務供應商,做為一個在網站前面的網路服務,Cloudflare 的 CP 值沒有第一也有第二,不過它一直是虧損的狀態,有點擔心有一天它錢燒完倒了,扯遠了,回到本文的主題,我們在 Azure App Service 如何自訂網域讓 Cloudflare 來代理?

...繼續閱讀 »

[食譜好菜] SQL Server 中「使用者(User)」與「角色(Role)」的授權關係。

上一篇文章大致地了解了 SQL Server 登入及使用者之間的關係,登入只是個開始而已,只是能進到 SQL Server 而已,這時候還不能存取任何資料庫物件,還需要得到授權,要在 SQL Server 授權存取資料庫物件,就不得不提到「使用者(User)」及「角色(Role)」。

...繼續閱讀 »

[食譜好菜] 既生登入,何生使用者?SQL Server「登入」及「使用者」的關係。

當我們建立了一個 SQL Server 實例之後,在開始處理資料之前,如果是對資安意識相對高一點的開發者,應該會有一個步驟是為我們的應用程式建立帳號,並且授予相對應的權限,而不會用 sa 走天下,當我們建立了一個登入時,通常會去使用者對應的頁面勾選對應的資料庫,此時,SQL Server 也會幫我們建立一個與登入名稱一樣的使用者,我們可能沒有感覺,但是 SQL Server 的登入及使用者其實是拆開來的。

...繼續閱讀 »

[食譜好菜] 殺雞焉用牛刀,想做關鍵字搜尋 Windows Search Service 一樣嚇嚇叫。

最近手上的專案有一個需求,使用者想對上傳的檔案(簡報、會議記錄、...等)做關鍵字搜尋,腦中閃過的第一個解決方案是 Elasticsearch(ES),但是這得額外架設服務、撰寫程式將檔案內容送進 ES 做索引,要花錢、花時間,使用者不一定買單,所以我就想到 Windows 檔案總管的搜尋功能能不能拿來用?它背後使用的服務是 Windows Search Service(WSS),下關鍵字去 Google 馬上就找到黑大的文章,感謝黑大。

...繼續閱讀 »

[廚餘回收] 在 ASP.NET Core 中誤用 async void 竟引發了 502(Bad Gateway)

這個是我最近處理的一個問題,使用者回報網站某個功能壞了,而且發現最近時不時網站會顯示 502(Bad Gateway)的畫面,雖然多重新整理幾次它就好了,但是這並不正常,我隨即捲起袖子開始一系列的追查動作,誓言一定要將兇手緝捕歸案。

...繼續閱讀 »

[小菜一碟] 如何在 ASP.NET Core MVC 的 View 中單獨取得含有檔案版本雜湊值的檔案路徑?

在開發網頁程式我們最害怕的場景其中之一,就是我們的靜態檔案(*.js、*.css、*.png、...)後端已經更新了,但是在前端看到的依然是舊的版本,這個問題在 ASP.NET Core 我們可以透過一個 asp-append-version 的 TagHelper 來解決,它會自動地根據靜態檔案的內容產生一個含有雜湊值版本的網址,如果我們不透過 TagHelper 也想取得這樣的網址,我們要怎麼弄?

...繼續閱讀 »

[料理佳餚] 用 Playwright 來為我們的網頁做自動化的端到端測試

Playwright 是由微軟開源專案開發維護類似像 SeleniumPuppeteerCypress 的 WebDriver,它主打的是測試,目前支援三大瀏覽器家族 Google Chrome / Microsoft Edge(with Chromium)、Apple Safari(with WebKit)、Mozilla Firefox,而且提供對測試友善的 API,讓測試人員在撰寫測試腳本的時候,可以更關注在 UI 的操作流程上,有需要對網頁進行自動化端到端測試的朋友,真的要試一下。

...繼續閱讀 »

[小菜一碟] 在前端用 JavaScript 搭配 pako 套件實現壓縮及解壓縮

最近專案有一個需求,需求當中的一個小部分是要在網頁上將使用者輸入的內容壓縮起來存檔,之後使用者再開啟這個檔案解壓縮顯示壓縮前的內容在網頁上,仔細想想現在的硬碟空間都那麼大,好像沒有什麼壓縮的必要,但是使用者覺得有必要,那也只好做給他了。

...繼續閱讀 »