Latest

Debug Story

Debug Story

Ref: * 寫程式不是輸出,是內化 * Vibe Story:用敘事智能為程式碼注入生命,簡化維護 這篇主要是想紀錄一下看了Ruddy 老師的文章後想做的事情,雖然通篇的重點不是在我想做的這件事,但因為Ruddy 老師的這篇文章讓我覺得以後在排除 Bug 的時候應該要做這件事才對。 以下的內容是擷取 Ruddy 老師的內容(部分修改) 1. 記錄搜尋路徑與嘗試過的假設 => 我以為是 state 沒清,但發現是 effect 未執行 2. 為錯誤進行分類,然後標註成概念 => 這是 mutable state 的副作用問題 3. 寫一段描述該段程式的情境與原則 => Vibe Story 該段程式的情境與原則可以參考一下的要點撰寫: * 場景(Context):描述程式碼的背景與需求。 * 目標(Goal):說明功能目的。 * 挑戰與迭代(Challenges &

By Mars
Claude Code Status line on Windows

Claude Code Status line on Windows

Claude Code 在大家軍備戰發布了 Status line 這個功能,讓使用者可以在 Claude Code 的輸入框下方自訂自己想要的訊息,官方提供幾個方式可以實現這功能(Bash, Node.js, Python),最後我選擇使用 Node.js。 趁著週末寫玩了一下,剛開始照著官方文件做,結果啥都沒顯示出來,接著叫 Claude Code 幫我做,他說成功了,結果還是啥都沒有...最後才發現可能是官方提供設定檔案的問題 { "statusLine": { "type": "command", "command": "~/.claude/statusline.sh", "padding": 0 // Optional:

By Mars
如何避免 .NET 產出不要的在地化語系檔案

如何避免 .NET 產出不要的在地化語系檔案

在使用第三方套件時,有時候會因為第三方套件有支援多語言,因此在建制時會多出很多在地化相關的檔案,如下圖: 想要避免產出這些檔案,可以在 project 設定檔中增加以下的設定 <PropertyGroup> <InvariantGlobalization>true</InvariantGlobalization> </PropertyGroup> 或者使用 <SatelliteResourceLanguages> 來產出特定所需的語言也可以: <PropertyGroup> <SatelliteResourceLanguages>en;jp;ko</SatelliteResourceLanguages> </PropertyGroup>

By Mars

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

asp.net

升級 .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

dotnet

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