Latest

Windows 11 更新 24H2 導致基於 Chromium 的瀏覽器凍結的解決方案

近期 Windows 11 釋出了 24H2 更新,但會導致基於 Chromium 開發的瀏覽器發生凍結的問題,以下是解決方法: 使用管理員權限開啟 PowerShell,然後執行以下指令: Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Dwm" -Name "OverlayMinFPS" -Value 0 -Type DWord 需要還原設定的話就使用以下指令: Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Dwm" -Name "OverlayMinFPS" 另外,如果先前已經停用 MPO (多平面重疊) 建議重新啟用: Remove-ItemProperty

By Mars

C# 幾種取得位置的方法

C# 中取得位置的方法友好幾種: * AppDomain.CurrentDomain.BaseDirectory * System.Reflection.Assembly.GetExecutingAssembly().Location * System.IO.Directory.GetCurrentDirectory() 經測試後這幾種方法的意義如下: * AppDomain.CurrentDomain.BaseDirectory > 執行的應用程式的位置路徑 * System.Reflection.Assembly.GetExecutingAssembly().Location > 目前執行的組件位置路徑 * System.IO.Directory.GetCurrentDirectory() > 下執行指令的位置路徑

By Mars

如何讓 WSL 持續在背景作業

最近為了方便一些作業所以把 Docker 安裝在 WSL 上,但常常會發生 WSL 的 terminal 關掉的話就會造成裡面跑的 Docker 也一併被關掉,Google 了一下發現不少人有這問題,最終的解決方案如下: 1. 在 %userprofile%/.wslconfig 設定 [wsl2] vmIdleTimeout=-1 2. 設定結束後記得重啟 wsl wsl --shutdown 3. 執行以下 command wsl --exec dbus-launch true Ref: * How to make wsl2 alive in the background #10138

By Mars

升級 .NET 9 後把 Swagger 替換成 Scalar

要把 Swagger 替換成 Scalar 的原因無他,因為官方決定器用 Swagger 了,可以在此文章 Announcement: Swashbuckle.AspNetCore is being removed in .NET 9 看到相關資訊。 替換的方法超簡單,因為 Scalar 本身就有支援 .NET,只要使用 Scalar 官方提供package 即可,使用方法也超方便,以下簡單範例: 1. 安裝 package dotnet add package Scalar.AspNetCore 2. 啟用 scalar using Scalar.AspNetCore; var builder = WebApplication.CreateBuilder(); builder.Services.

By Mars

Setting URL, Port in ASP.NET Core application

這篇文章主要是因為在寫 ASP.NET Core 時,需要可以透過 CLI 來設定監聽的 URL, 其實本來 dotnet run 就可以設定了,但因為要配合其他功能,所以需要自己寫 CLI 整合; 因此研究了一下可以怎麼設定監聽的 URL。 在 .NET 8 ASP.NET Core 預設監聽的 URL 是 http://localhost:5000, 以下介紹幾種比較常見也常用方法來設定監聽的 URL。 最主要的方法有以下兩種: * 設定 Endpoint * WebApplicationBuilder.UseUrls() * WebApplication.Urls.Add() * 環境變數 ASPNETCORE_URLS * 命令參數 --urls * 設定 PORT UseUrls() 在

By Mars

cli

.NET CLI 顯示語言設定

寫程式基本上很多資訊都還是習慣看英文,雖然英文程度也沒多好,但很多時候看英文真的是比看中文好懂,最近重新安裝 .NET SDK 的時候發現 CLI 突然變中文了,甚至在一些編譯器的環境會變成亂碼(無法顯示中文),所以後來就找了方法設定 CLI 的顯示語言。 可以透過命令設定環境變數 DOTNET_CLI_UI_LANGUAGE 其可變更 CLI 顯示的語言。 set DOTNET_CLI_UI_LANGUAGE='en-US' 如果用 PowerShell 可以用以下命令設定 $env:DOTNET_CLI_UI_LANGUAGE='en-US' Windows 底下也可以直接使用下列命令來將環境變數寫入使用者環境變數中: [Environment]::SetEnvironmentVariable("DOTNET_CLI_UI_LANGUAGE&

By Mars

adground

在 Synology NAS 上安裝 AdGround Home

AdGuard 是用於擋掉廣告或是惡意網站,之前就看過不少人介紹後一直想安裝,但都有點懶就一直拖延;這幾天終於安排時間來試著安裝了。 由於之前換了新的 Synology NAS,終於可以支援 Docke 了,要安裝 AdGuard 簡單非常多,只需要使用 Synology 官方提供的 Continaer Manager 就可以直接下載並執行啟用 AdGuard 官方提供的 Image,以下簡單紀錄一下整個安裝步驟。 1. 安裝 Continaer Manager 2. 下載 AdGuard 官方 Image 3. 執行 Image 4. 啟用時要填寫必要的設定,因為我的 80 port 已經有使用了,所以我將他改成 8080 5. 執行容器後進入 AdGuard 的 admi

By Mars

mysql

MySQL Docker 無法使用 --default-authentication-plugin 的問題

一直以來開發時期若有需要使用 MySQL 都是使用 Docker 來建立,畢竟方便又不會汙染到本機,之前一直都是使用以下的 docker-compose.yaml 來啟動: version: "3.1" services: db: image: mysql:8 command: --default-authentication-plugin=mysql_native_password restart: always ports: - "3306:3306" environment: MYSQL_DATABASE: {{MYSQL_DATABASE}} MYSQL_ROOT_PASSWORD: {{MYSQL_ROOT_PASSWORD}} 不過最近新建立時, pull 了最新版本的 MySQL image 後啟動確失敗了,

By Mars

game

某遊戲的一些狀況案例紀錄

* 一個 server 只能 1800 個角色註冊(?)(主要應該是因為 SLG 有土地的關係,應該不是承載問題),同上不確定 * 一開始燈號的 range 竟然是抓上限的 99% 才變燈 * 伺服器燈號是靠該伺服器註冊人數不是在線人數,且目前好像有 bug,就算已註冊該伺服器,但燈號顯示滿載一樣不能登入 * 選擇伺服器後該帳號在 24HR 以內不能選擇其他伺服器(一個帳號可在多個伺服器都建立角色),應該是為了擋洗帳號首抽 * 平台註冊帳號使用的是 email,但卻沒有驗證該 email 是否存在 以上的狀況造成,使用者搶註冊想佔領好的領地導致伺服器最後活人很少 or 活人周遭很多死人, 因為沒搶到好的領地就會轉往新伺服器;然後因為同帳號 24HR 內不能換伺服器註冊,所以間接造成平台大量廢帳號產生。

By Mars

docker

在 Windows WSL 中安裝 Docker

基本上要在 WSL 底下安裝 Docker 其實蠻簡單的,只要按照官方的步驟安裝即可,可以參考 官方文件 來安裝,底下紀錄主要的幾個指令步驟: 這邊主要的目標 OS 是 Ubuntu 準備 * 先刪除舊版本以及一些會有衝突的程式 for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done 安裝 # Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo

By Mars

powershell

Disable PowerShell update check

每次開啟 PowerShell 的時候都會自動偵測是否有新版本需要更新,但如果當下沒以網路就會造成例外錯誤,導致無法開啟 PopwerShell,這點其實蠻蝦的,好歹顯示錯誤讓使用者可以繼續用才對阿。 後來去找到方法關閉啟動的時候自動檢查是否需要更新的流程,基本上就是增加環境變數 POWERSHELL_UPDATECHECK=Off 即可,也可以直接使用下列命令來增加此環境變數: [Environment]::SetEnvironmentVariable("POWERSHELL_UPDATECHECK", "Off", "User")

By Mars

ERR_UNSAFE_PORT

開發網站時需注意不要使用到 ERR_UNSAFE_PORT

今天在建立新的 .NET Core Web API 專案的時候 Run 起來突然發現無法存取網站並且出現以下畫面。 本來以為是 port 衝突到還是怎樣,但後來想想不對,程式都正常跑起來了,而且跑 https(另一個 port) 都沒問題可以訪問,為啥 http 這個 port(5060) 沒法訪問。 後來發現關鍵字 ERR_UNSAFE_PORT,查了一下果然只是遇到使用到了被 block 的 port。 這邊可以看到 Google 列出預設禁止訪問的 Port Ref: * Chromium Source Code * Mozilla gecko-dev Source Code * The Will Will Web - 開發與部署網站時需注意不要使用到

By Mars

.net

Disable NuGet Warning NU1803

如果使用自己的 nuget source 有可能會遇到使用 http 的服務,因此在 run 或 build 的時候會跳一大堆 warning NU1803 的狀況,雖然當然最好都使用 https 但有時候內部作業多少都會遇到沒有憑證只能使用 http 的狀況,這邊介紹幾個方式可以抑制這個警告的產生。 在 config 中設定 allowInsecureConnections <packageSources> <add key="gitlab" value="http://nuget.gitlab.com/api/v4/projects/1234/packages/nuget/index.json" allowInsecureConnections="

By Mars

訂閱信件的一些小變化

我個人是蠻習慣也喜歡網站文章是可以透過信件訂閱的,如果沒有訂閱至少有 RSS 可以追蹤也是很棒,但是有得訂閱我絕對是先選擇訂閱。 大部分的訂閱都會先發一封信給你然後有一個超連結或者按鈕,要你點擊確認識訂閱,這部分應該主要是怕有人填錯或者亂填信箱造成的一些問題。 但最近發現有些訂閱開始要你直接回覆一個 "OK" 來達到確認;不過我反而發現不回覆的狀況下他也是有當你訂閱成功(這部分在持續觀察看看),所以我猜他應該是為了讓信箱服務來避免被判定是廣告信而被直接送到垃圾信分區吧。

By Mars

port

Windows 保留通訊埠

今天在重新寫應用程式時發生了 port 被佔用的的情況導致開啟應用程式失敗,但使用 netstat -nat | findstr {port} 都沒有發現有任何應用程式佔用我設定的 port,使用 TCPView 也完全沒有被佔用。 後來想到之前 保哥 的文章,最後果然是系統保留通訊埠搞得鬼,只好先換 port 使用了。 可以使用 netsh int ipv4 show excludedportrange protocol=tcp 來查看被保留的通訊埠。 也可以用以下方法增加保留通訊埠 net stop winnat net stop LanmanWorkstation net stop WlanSvc net stop WwanSvc netsh int ipv4 add excludedportrange protocol=tcp startport=

By Mars