2025-12-18

[Javacript] 6 行程式碼就加速網頁效果 ?!

最近看到一段有趣的程式碼,基本上我理解沒錯他是說可以無腦加入在網站 <head> 中

就可以有加快網頁效果,我馬上就感興趣了,這麼簡單就可以加速...


2025-12-16

[C#] .NET 動態載入 DLL 可熱插拔:模組引入其他第三方 dll 的正確做法

接續上一篇 .NET 動態載入 DLL,可熱插拔 ,這邊做了一些測試,如果我寫了一個模組叫做

CSJson.dll 其中如果要引入 Newtonsoft.Json.dll ,那我要如何處理...

2025-12-15

[C#] .NET 動態載入 DLL,可熱插拔

.Net Core 到現在 .Net10 有一點小困擾,就是我有時候要更新的時候就是要先停下程式,當然先不考慮現在正在進行中的 Threads

情況下,之前 .Net framewrok 式可以直接替換的,最近在想主程式既然不能關閉,但是我可不可以模組化更新..


2025-12-10

[C#] 平行處理到底用哪個?Task.WhenAll , Parallel.ForEach 最簡單選法筆記

最近在看一些 open source 的 專案,看到一個關鍵字 Task.WhenAll ,看了一下跟 Parallel.ForEach

看起來不是差不多的東西嗎? 問一下 GPT 原來是有差異的,今天筆記一下,希望自己以後可以用的比較恰當..


2025-12-09

[C#] 呼叫 IShellItemImageFactory 為照片預先建立縮圖

最近整理照片,但是一個檔案夾裡面上萬張照片 只透過檔名真的很難判斷
都是要靠系統 Windows 內建的縮圖來判斷 但是產生速度非常的慢 我就在想能不能先去把縮圖做好


2025-12-08

[Visual Studio] 讓 TOON 不再是一坨字,一個好用的延伸模組

前陣子提到 TOON (Token-Oriented Object Notation) ,他以簡潔為優點

TOON 的主要設計目的是減少語言模型在解析資料時的 token 消耗

今天剛好看到一個 Visual Studio 的擴充套件 可以直接開啟 TOON 格式

2025-12-04

[C#] .NET10 params collection 可以放入 List 了

最近在看 C# 14 的更新,看到一個蠻好用的語法。

叫做 "params collection",就是在設計 function 中最後一個引述加入 params

以前的 params 只能吃 基本型態的 array,在實務上其實有點卡特別是要丟物件群、List 的時候更明顯..

2025-12-03

[C#] 關於 .NET 10 SSE (Server-Sent Events) ,三個有感改進

之前研究過 Server-Sent Events 覺得方便好用,非常符合 .NET  在開發輕巧 API 

或是單向傳遞資料,最近 .NET 10 出來了,發現他針對 SSE ( Server-Sent Events ) 有更新今天來看一下..


2025-12-01

[C#] C#14的新關鍵字 field , .NET 10 之後才能用

最近 Visual Studio 2026 正式推出了,伴隨而來的就是 .Net10 因為有 LTS 版本

看來會是這陣子主要升級專案的目標,對我來說每次更西,我都會看一下多什麼,有啥是可以馬上遇到的..


2025-11-19

[C#] 讀取 CoinStats Fear & Greed 範例

如果你正在開發加密貨幣相關的應用,可能常常會想了解市場的恐懼貪婪指數..

在眾多資料來源中,除了上次我們聊的 Alternative.me 有免費的服務今天介紹另一個  CoinStats

2025-11-18

[C#] 使用 Alternative.me 快速取得加密貨幣恐懼貪婪指數

如果你正在開發加密貨幣相關的應用,可能常常會想了解市場的恐懼貪婪指數..

在眾多資料來源中,Alternative.me 的 Crypto Fear & Greed Index 算是最容易取得,也最容易串接的一個

重點是免費...

2025-11-17

AI 時代的內容新規則:RAO 寫作入門

近期一直聽到一個新的名詞 RAO(Retrieval-Augmented Optimization),中文翻譯是 檢索增強優化

這到底是啥東西啊,現在做網站越來越難了,除了之前的 SEO 現在還要考慮 RAO


2025-11-14

[C#] TOON vs JSON:在 .NET 實測序列化效能的真實結果

最近在研究一個有趣的資料交換格式 —— TOON (Token-Oriented Object Notation)

主打「低 Token 消耗」與「高結構可讀性」

由於目前 TOON 也開始有 .NET 的實作版本(例如 ToonNet ToonSharp

我就想測試一下它在實際序列化(Serialize)與反序列化(Deserialize)時的表現如何

[C#] TOON 一個比 JSON 更簡潔的資料格式

最近看到一些臉書上的朋友在分享一個新名詞 TOON ( Token-Oriented Object Notation) ,他以簡潔為優點

TOON 的主要設計目的是減少語言模型在解析資料時的 token 消耗。

看一下他的結構根 JSON 有啥不同

2025-11-10

[C#] 還技術債- 抽離序列化工具

最近要來還一些技術債,要把以前的專案從 Newtonsoft.Json 換成 System.Text.Json

當初真的很偷懶,都是直接在程式裡呼叫 JsonConvert.SerializeObject() 或 DeserializeObject()

整個專案裡散落上百個地方,當然用全部取代也是可以但是還有更聰明的做法..

2025-10-29

[C#] 暴力破解一個國中的數學題目

最近臉書牆上一直出現這分享,就手癢寫了一下,後來順便複習一下國中數學?

winget 出現 InternetOpenUrl() failed:理解來源更新與修復方法

最近使用 winget 安裝一些東西,目前看到許多工具類的東西提供 windows 的安裝都需要透過 安裝一些東西,目前看到許多工具類的東西提供 windows 的安裝都需要透過 

我簡單看一下理解,就像是在 Linux  下面的 apt 大概是一樣的概念,最近在安裝 cloudflare tunnel 

但是遇到 

執行命令時,發生意外的錯誤:

InternetOpenUrl() failed.

0x80072ee2 : unknown error


2025-10-28

[C#] 用 switch expression 重構你的判斷邏輯

自己在寫程式的時候,我是一個很習慣用大量 if 的人,對我個人來說其實可閱讀性比較強,但是這的確不是一個好習慣

於是我想說透過 ChatGPT 看看新的 C# 語法有沒有可以取代我現在的習慣,順便改掉這壞習慣..


2025-10-27

讓 localhost 也能被外部呼叫:試用 Visual Studio 2022 的 Developer Tunnels

上一篇文章介紹了 ngrok ,讓原本的自己本機測試的東西可以變成 global 讓外部的服務去呼叫加速本機的測試可能性

後來同事提醒我其實 Visual Studio 2022 有內建,我就很訝異查了一下關鍵字 "開發人員通道" ( Developer Tunnels )


2025-10-23

告別笨重的 Postman!用 Happy Postman 在 Chrome 中快速測 API

今天介紹一個最近比較常用的工具 Happy postman ,目前大家最常用來測試的就是 Postman 這一套 APP

但是他現在變得非常複雜,所以現在很多時候我都改用 Postwoman HOPPSCOTCH,但最近因為 AWS 有狀況

導致我 HOPPSCOTCH 無法使用,所以我找到一套感覺不錯的 Chrome 延伸套件 Happy Postman


2025-10-22

[C#] 本機開發神器 Ngrok:解決 ChatGPT MCP Server 憑證驗證問題的最佳幫手

最近在測試關於 ChatGPT 的東西,遇到一些問題,比較麻煩的就是當你打造MCP Server ( Model  Protocol Server )的時候

他會驗你的憑證,因為程式還在一直調整,不可能一直佈署到線上環境測試,於是我找一下,發現原來有一個很好用的工具

ngrok

2025-10-20

[C#] 透過 httpclient 模擬判斷憑證是不是過期

最近遇到一些管理的憑證到期,忘記續約,後來決定寫一隻程式來檢查一下,因為很多管理端都不是在我這邊

所以有點麻煩,但是我得幫忙續約 :'( 


2025-10-15

點部落黑色主題嵌入 Gist 的一些顯示問題

很久沒用點部落了,因為原始碼的部分也些我是引用 https://gist.github.com/

但是黑色主題會顯示這樣 

2025-09-30

[C#] 使用 Bogus 產生假假真真的資料(包含中文資料)

有時候在做 POC 或是要放入測試資料,最煩的不是功能,而是資料最常就是 for 1~1000 之類的

之前就知道有一套叫做 Bogus 的 library  可以幫忙生成但是之前記得就是都是英文


2025-09-26

[ASP.net] 在 Visual Studio 2022 加入傳統 ASMX Web Service "要求失敗,回應空白" 錯誤與解決方法

最近在專案中,需要連線到一個舊系統的 ASMX Web Service,網址大概像這樣:

https://xxx.sample.com/service.asmx

結果在 Visual Studio 2022 新增「Web 參考」後,呼叫服務卻一直出現以下錯誤:

要求失敗,回應空白。  

於 System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)  

於 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)


2025-09-17

[C#] .NET 8 vs .NET 9 SIMD 加速實測:一般迴圈是否真的能自動向量化

最近看到一個名詞 SIMD ( Single Instruction, Multiple Data ) ,簡單一句話就是 讓 CPU 以 "一條指令同時處理多筆資料" 的平行運算技術


2025-09-11

[C#] 拆掉複雜邏輯的實用技巧 - Smart Enum

如果你寫 C# 寫久了,enum 一定是你最早會用、也用最兇的語法之一。

它乾淨、簡單、可讀性好,但只要邏輯稍微複雜一點,

enum 就開始綁手綁腳,大量的 if 或是 switch 又開始了,不利於我們中年工程師..


2025-09-10

[C#] 程式碼可讀性提升技巧,談談幾個我常犯的錯誤

最近在看一些關於程式可讀性的文章,這裏面遇到一些我也常犯的錯誤,所以紀錄一下

畢竟寫過才會記得,這邊也給自己下個 flag...


2025-09-04

[C#] 實作姓名遮罩 (MaskName)

最近在寫一些東西,把之前寫的程式碼整理一下,之後方便自己之後複製貼上。

其中有一段是我覺得蠻實用的小工具:一個可以幫名字打馬賽克的 function。因為現在很多地方要顧慮到 個資法,不太能直接把全名顯示出來,所以這個方法可以幫助我們在顯示時,留下頭尾幾個字,中間用遮罩取代。


2025-08-21

[Javascript] Google Sheets 取得目前工作表的名稱

最近幫朋友解決一個 Google Sheet 上面的小問題,就是他需要取得 資料表的名稱(非檔案名稱)

這不能直接透過內建的函式做到,必須要透過 App Scripts  能夠取得,這邊就筆記一下

2025-08-20

[C#] String.Intern() 搞懂字串共用與駐留池

整理舊專案發現一個很有趣的東西,我們很常製作一個 List<string> 然後放在記憶體中

然後讀取,但是有沒有想過每次加入一個新的對記憶體中都是一個負擔,即使他們長的一樣

2025-08-19

[Javascript] 使用 pageshow 事件 ,submit 返回上一頁後取消特效

寫一個很久的問題但是我一直都沒有去處理的,就是有關於 Holdon.js 

因為我在form post 之前,我都 會呼叫 Holdon.js 來做到 debounce (防止重複 submit )

但是我遇到一個問題,就是如果我在 submit 後,跳轉到下一頁,如果我按下瀏覽器的上一頁

會依然停留在 HoldOn.open() 的畫面..

2025-08-15

[C#] 在 ASP.net Webfrom 中實作 SSE (Server-Sent Events) 但..

雖然在 .Net 上面用上了 SSE (  Server-Sent Events ) ,但是手上還是有一堆舊專案( Webfrom )要改

所以就改了一下程式碼測試,我想說應該很順利,交給 GPT 後發現,原來還是有些限制的..


2025-08-14

[C#] SSE 實務技巧:不同使用者接收不同資料的最佳做法

接續上一篇文章寫到關於  SSE ( Server-Sent Events ) ,在實作上我們很常會遇到,不同的人要給他不同的資訊

今天我們來簡單實做這一點,主要我會用 cookie 實務上也方便讓你可以使用 JWT 來做到身分判斷..


2025-08-13

[C#] 用 .NET 實作 SSE:最簡單的即時推播,不用 WebSocket、也不用 SignalR

有些時候,我們想在前端網頁顯示一些 "會動的資料" 像是

系統狀態更新、線上使用者數、Log 即時推送、客戶通知更新(消息通知)..之類的



2025-08-12

[C#] 使用 Count()==0 前想想 Any()

之前在網路上看到有人說可以用 Any() 取代 Count()==0 ,效能會比較好,畢竟 Count()==0 

平常寫得很習慣,一開始我以為這只是誤差,沒想到背後居然真有明顯的效能差異,於是我動手測一下..


2025-08-11

[C#] 從 Singleton 到 AddSingleton

最近在整理一些老專案的時候,我發現自己以前為了快速方便,常常會直接在程式裡手動寫 Singleton


2025-07-28

[C#] .Result、async void、迴圈 await 的真實後果

在 C# 裡,async/await 大概是大家寫最多,但理解最少的語法。

很多人使用 async,只是因為 "不加就跳警告,所以我加" , 至少我有時候是因為這樣

尤其是在試跑 open soruce 的專案


2025-07-21

[Javascript] Safari 15.4 後原生支援 <dialog>:前端不再需要外部 Modal 套件

之前要在網頁上做到彈跳視窗,我都直覺想到要用一些外掛套件,像是 jQuery Dialog 或是  jQuery Modal 

 然後必須要引入一些 library ,最近有需要看一下,發現故事變了,原來現在已經可以用 dialog 了


2025-07-20

[Javascript] 前端直接產生並下載文字檔的做法不用 iframe 改用 Blob+Download

如果你在前端遇過一個需求,讓使用者點一下,就直接下載一段文字

多半會查到一些老方法,像是 iframe + execCommand('SaveAs'),現在改變了..

2025-07-14

[C#] CliWrap 遇到中文亂碼問題

在一些應用裡,我們常常需要呼叫外部指令,例如執行自己寫的 console程式,或是跑報表等其他命令列工具。

過去的做法通常是使用 System.Diagnostics.Process,雖然可行,但要處理輸入輸出、等待結束、取消執行、讀取結果等細節時,程式碼會變得又長又複雜。

後來我發現有個套件叫 CliWrap,能讓這些操作變得簡潔許多,也更容易維護

2025-07-07

[Javascript] 為什麼在 <input type="date"> 中,iOS Safari 需要用 blur 而不是 change?

最近遇到,iOS 上的 safati 的一個雷,原來在 <input type='date'> 中的 change 上面定義上跟其他瀏覽器有點不同!

2025-06-18

[C#] const vs readonly 到底差多少?Stopwatch 實測給你看

你可能跟我一樣,平常寫 C# 時看到 const 跟 readonly 常常覺得

const , readonly 不是差不多嗎? 甚至常常忘記 const 這關鍵字...


2025-06-11

[C#] 重遇 stackalloc 關於效能跟限制的二三事

最近在看一些 open source 專案的原始碼時,看到某個地方用到了 stackalloc

這關鍵字讓我一點一熟悉看一下文件這不是以前要開 unsafe 的東西

結果一查,才發現這玩意兒原來早在以前就有,只是因為後來有了 Span<T>

現在可以安全地在受控環境裡使用堆疊記憶體,完全不需要 unsafe 了。

2025-06-04

[C#] Result Pattern - 在 .NET 寫出乾淨錯誤處理的一個方式

在底層開發程式的時候我常看到一個關鍵字之 IsSuccess 、 Fail 、Error 在不同的 Service 中都有出現

我就在想是因為大家的寫作都是一樣的風格嗎,後來我才知道原來是一種 Result Pattern 的設計跟導入


2025-03-12

[C#] Telegram Bot 開發筆記:如何在 v22.4.4 傳送圖片,設定公告訊息 pin message

因為最近在開發跟 Telegram 的東西,接下來要筆記兩個項目,一個是如何發送圖片,還有一個就是

如何在 Telegram 中對發出的訊息做 pinned (釘成公告)


2025-03-10

[C#] Telegram Bot 開發筆記:群組收不到機器人的訊息

今天記錄一篇,基於  Telegram Bot 開發筆記:如何在 v22.4.4 正確接收訊息 這篇文章,這裡面有一個問題

就是有朋友問為何在群組中,好像除了  command 也就是 / 開頭的訊息,因為之前沒有遇到這問題,後來查一下

是因為一個參數要打開,筆記一下免得我忘記

2025-03-07

[C#] 使用 Telegram.Bot v22.4.4 建立互動式選單,並清除舊訊息

繼續 Telegram 系列,因為最近幫系統改成 Telegram.Bot v22.4 ,遇到一些問題,剛好也碰到一個需求,就是發出給客戶選項 ( InlineKeyboardMarkup )後

得到答案之後就是要將原本的問題刪除,今天就來筆記一下


[C#] Telegram Bot 開發筆記:如何在 v22.4.4 正確接收訊息

最近又要用到 Telegram,過去我寫過一些 Telegram 的文章,但是我天真了,我今天測試了 Telegram.Bot v22.4.4 發現跟之前又不一樣了..

又不能直接 Copy and Paste ,所以今天就筆記一下 Telegram.Bot v22.4 如何收訊息


2025-03-05

[C#] 可程式化的免費圖床方案 - Vgy.me

去年寫了一系列的 白嫖圖床可程式化的免費圖床方案 ,看一下後台數據還不錯後來有一些朋友提供給我其他可以免費程式化的圖床

今天介紹其中之一 Vgy.me