我不是機器人版 reCAPTCHA 筆記
10 年前舊版部落格 CAPTCHA 被攻破遭人狂塞垃圾留言,當時換成卡內基美濃太學發明,能有效阻擋機器人兼邀請人類參與古代書籍數位化的 reCAPTCHA,但第一代 reCAPTCHA 疑似被破解,後來才換成自己寫的陽春版加減計算 CAPTCHA。(防護力跟 reCAPTCHA 無法相提並論,但冷... Read More
View Article【茶包射手日記】.NET Core on Linux 無法存取 Let's Encrypt 憑證網站
在 Linux (CentOS) 主機運作多時的 .NET Core 3.1 排程這幾個月失效,初步檢查是呼叫自訂 WebAPI 時出錯,錯誤訊息如下: Unhandled exception. System.Net.Http.HttpRequestException: The SSL connec... Read More
View ArticleIE 都更筆記 - 汰換 showModalDialog()
這個系列是「將 IE-Only 網站翻修到 Chrome/Edge 相容」過程的瑣碎筆記,有參與古蹟維護的朋友請進。 今天說說網頁裡若出現只剩 IE 支援的 showModalDialog() 要怎麼修改?從 Chrome 43 跟 Firefox 56 之後,showModalDialog API... Read More
View Article在 CentOS 安裝事務機驅動程式進行掃描
小閃光抱怨家裡的 Fuji Xerox M225dw 印表機雖有網路列印及掃描功能,但掃描得開電腦跑 Fuji Xerox 軟體,不能直接傳到手機或平板上,很不方便。 查了一下,Xerox 有個 Xerox Workplace App 但鎖定對象是辦公室用的多功能事務機,透過掃 QR Code 或 ... Read More
View Article命令列工具的 stdout, stderr 輸出與 .NET 整合應用
昨天提到的 Linux 掃描工具 - scanimage,剛好有個經典輸出分流行為,scanimage 將圖檔傳到標準輸出(Standard Output),故可加上 > tab.tiff 轉存成檔案,加上 -v -p 參數,過程會顯示偵錯資訊及執行進度,則是顯示在主控端(Console): ... Read More
View Article在 ASP.NET Core 用 Response.Body.FlushAsync 實現簡易即時進度回報
今年初分享過一個用 Response.Flush 在 ASP.NET MVC 實現即時進度回報的極簡風做法,但 ASP.NET Core 網站架構不同己無法適用。不管在什麼平台,極簡風永遠是我的最愛,所以,ASP.NET Core 版的簡易進度回報寫法來了! ASP.NET Core 移除了 Rep... Read More
View Article.NET 6 圖形處理跨平台注意事項
.NET Core/.NET 6 號稱跨平台,但實際推進到 Linux,有些眉角遇上才會知道。 繼續嘗試在 CentOS 整合事務機掃描功能,掃描結果的圖檔格式是 TIFF,想寫段 C# 程式將它轉成 JPG,這用 Bitmap 來做是小事一椿。要在 .NET 6 使用 Bitmap,可安裝 Sys... Read More
View Article【茶包射手日記】ASP.NET MVC 網站 Controller 網址傳回 HTTP 404
同事遇到的問題 - 某 ASP.NET MVC 專案使用預先編譯發行,檔案部署到 IIS,設好 Web Application,檢視 css、js、png 等靜態檔 OK,但 Home/Index 等 MVC 路徑全數失效,一律傳回 HTTP 404。 經對照調查,問題關鍵在部署時漏放 Preco... Read More
View Article.NET 知識高裝檢 - .pdb 檔、編譯最佳化與偵錯
發現我對 PDB 檔的知識有點模糊過時,特舉辦知識高裝檢。 .pdb 檔的主要用途為何? PDB 提供編譯後程式與原始碼的對映資訊,是錯誤發生時 StackTrace 能指出所在程式位置的依據,另外在進行偵錯時,也需要靠 .pdb 的資訊才能做到檢視變數、設定中斷點、Line by Line 逐行... Read More
View Article在 ASP.NET 用 Server-Sent Events 實現即時廣播
Server-Sent Events 算是蠻古老的技術,可實現伺服器端對瀏覽器的單向串流傳輸,目前除了 IE,所有瀏覽器都支援。 但提到網站串流傳輸,不是已經有 WebSocket、SignalR 了,Server-Sent Events 還有實用價值嗎?有! 如果是伺服器對瀏覽器的單向串流傳輸,S... Read More
View Article更改檔案中文編碼導致 git diff 亂碼之完美解法
大家有遇到 git diff 比對文字檔,因中文編碼更改(例如 Big5 改 UTF-8)導致結果裡有一半中文變亂碼的情況嗎?我想到一個完美解法。(我自己覺得啦,不服來戰) git diff 遇到文字檔中文編碼不同的問題之前處理過(參考:Git 實戰技巧 - 使用 git diff 比對 UTF-1... Read More
View ArticleCoding4Fun - 使用 C# 製作聲音檔,以摩斯電碼為例
很久沒有 Coding4Fun,想玩個有趣的題目 - 用 C# 無中生有產生聲音檔。 做了研究,.wav 檔用未壓縮的 byte[] 記錄聲音波形,只要依規範在檔案開頭填入聲道數、取樣頻率、解析度位元數... 等資訊,輕鬆就能在電腦上生出一段正弦波。(謎:要多無聊才會幹這種事?到底) 不過,大費周章... Read More
View ArticleCoding4Fun - ASP.NET Core 整合事務機掃描功能
前情提要:前陣子,小閃光抱怨家裡的 Fuji Xerox M225dw 印表機的掃描功能只能用電腦操作,沒法由手機掃描直接下載圖檔。我心生一計,家裡的迷你家用伺服器平日閒閒沒事,都快變成冗員,何不寫個 ASP.NET Core 網站放在上面跑。研究了一下,還真找到在 CentOS 安裝事務機驅動程式... Read More
View Article使用 dotnet 命令列工具發行 .NET 6 專案
.NET 5 時介紹過用 Visual Studio 發行 .NET 5 專案,.NET 6 這篇改整理 .NET CLI (dotnet 命令列工具) 發行技巧。 主要參考來源為微軟文件 - .NET application publishing overview dotnet publish 產... Read More
View Article【茶包射手日記】重複使用 WebClient 時注意 Headers 可能變動
今天踩到一個坑,發現 WebClient 有個我沒注意過的行為。 試著用 WebClient 呼叫 SharePoint 的 REST API,怎麼試都不成功。因為是第一次寫,優先想到的是我漏了某個必要參數或忽略關鍵步驟,而用錯誤訊息爬文,查到的案例幾乎都是未設定 Content-Type 所致,而... Read More
View ArticlednSpy 實戰 - WebClient Header 改變之謎徹底解密
昨天分享重複使用 WebClient 時 Headers 會變動的踩雷經驗,陸續有讀者提問,歸納疑惑點不外乎「在哪些情況下哪些 Header 會改變?」,解答就藏在 .NET 的原始碼裡,如果你能找對位置的話。 要得到真相得追進 .NET Framework 或 .NET 6 原始碼,微軟有提供 .... Read More
View Article小技巧 - System.Text.Json 不轉強型別讀取 JSON
從 .NET Core 3.0 開始,System.Text.Json 逐步取代 Newtonsoft Json.NET 成為 .NET 處理 JSON 的官方解決方案。在寫 .NET 6 專案時,我也開始嘗試不引用 Json.NET,改以內建 System.Text.Json.JsonSerial... Read More
View Article【答客問】無原始碼修改 .dll/.exe Embedded Resource
讀者骨董修復菜鳥問了一個有趣問題 - ASP.NET 網站的 .js 以內嵌資源(Embedded Resource)方式存在 .dll 裡,若沒有原始碼或無法重新編譯專案,要如何修改? 我猜想世界或許有某個軟體工具可優雅地完成這項工作,但 .NET 有 ildasm.exe 及 ilasm.exe... Read More
View ArticlePowerShell 練習 - Windows 主機識別桌布產生器
最近在弄一個較複雜的測試環境,有多台主機扮演不同前中後台角色,且角色可能機動調整,使用遠端桌面登入操作時,除了由 IP 查 Email 更新通知,還希望有更直覺方便的識別方式。我想到一個簡單做法 - 做一張標示主機資訊的桌布,登入時馬上可看到提示。 真要做,其實用小晝家弄一下就好了,但我硬是把它當成... Read More
View ArticleIIS 安裝 ASP.NET 3.5 時發生 0x800f0954 / 0x8024402c 錯誤
今天說一個在企業內部或網路管制環境安裝 IIS 可能會遇到的問題 - Windows 10 / Windows Server 2016 之後的版本,常因設定了 Windows Update Server 或不能上機造成 IIS 無法安裝 ASP.NET 3.5 模組,用 GUI 或PowerShel... Read More
View Article