Browse by Tags

UrlEncode() 與空白變加號問題
在 ASP.NET Core 遇到轉換網址中文及特殊字元的需求,由於 .NET Core 不適合再用 System.Web.HttpUtility,爬文 查到 有個替代品 - System.Net.WebUtility.UrlEncode,開開心心上路卻踢到鐵板。 問題出在 System.Net.WebUtility.UrlEncode() 會將空白字元轉成加號,而 IIS7+ 預設禁止在網址使用加號,否則必須修改 allowDoubleEscaping 設定,但如此將增加風險。(延伸參考: IIS...
Posted 08 September 2018 11:24 PMJeffrey | with no comments 2,869
Filed under:
【笨問題】Word 使用非細明體時行距過大
我有個困擾多時的 Word 問題,每回將細明體、標楷體換改成微軟正黑體或其他字體時,行距會變成超大(例如以下示範): 之前我的鴕鳥做法是修改行距為固定行距,但一直不知其所以然,最近花了點時間研究才理解問題所在與正確解法。 關鍵在於 Word 預設啟用了「文件格線被設定時,貼齊格線」,勾選「檢視格線」後便可一目膫然。 平平是 12 號字,細明體及標楷體尺寸較小,恰好可以塞入兩條格線之間:   當選用微軟正黑體、Google 思源黑體等其他字型,同樣是 12 號字,尺寸卻超過兩條格線的高度...
Posted 27 June 2018 09:59 PMJeffrey | 1 comment(s) 5,885
Filed under:
Windows 10 連線 USB 數據機發傳真
很久沒有搞電腦搞到一肚子火了,記錄射茶包經過。 時至今日,生活大小事幾乎都能靠 Email、LINE、網站、APP 搞定,但偶爾仍會遇到只收傳真的店家或公司,例如:訂奶茶、傳信用卡授權書... 等。家裡採購雷射印表機時基於體積及成本效益考量,沒選擇有傳真功能的事務機,代價是久久遇到要傳真的場合,就得傷一下腦筋。 小七傳真一張 A4 土匪價 15 元,線上傳真服務便宜又方便,但我的原則是「個資上網能免則免」。評估之後決定花幾百塊買個 USB 數據機,配合 Windows 內建傳真軟體,在家裡插上電話線自己就能發傳真最安全方便...
Posted 15 May 2018 09:47 PMJeffrey | with no comments 3,929
Filed under:
瀏覽器 HTTP 301 導向記錄清除
前篇文章 提到 HTTP 重新導向有 301, 302, 307, 308 幾種形式,其中 301/307 為「永久重新導向」,意思是原網址宣告作廢,請客戶端未來一律改連新址。而各家瀏覽器都忠實貫徹這個精神,一旦接獲伺服器回傳 301 將銘記在心,下回使用者再連到該網址,瀏覽器將省略「連接舊址 -> 接收 301/302 轉址 -> 轉往新址」的過程,自行接轉連新網址。 用以下實驗證明。web.config 加入以下設定,指定將 httq://myserver/darkthread 轉址到...
Posted 13 May 2018 10:03 AMJeffrey | 1 comment(s) 2,705
Filed under:
英文單字朗讀 MP3 DIY
這是「搶救英文大作戰」的副本任務,小閃光的英文字彙慘不忍睹,我想到把單字表轉成朗讀 MP3 的方法,想讓她照三餐服用看看能否起死回生。 查了一下,文字轉 MP3 大家幾乎都是用 Balabolka ,它可以朗讀輸入的文字,有眾多調整選項,還能轉成 MP3,十分方便。 簡單試用,得到幾點心得: 文字轉語音功能事實上來自 Windows 內建的 SAPI ( Microsoft Speech API ),意思是我也可以自己寫程式做到類似功能。 我的 Windows 10 繁體中文版內建四種語音(如上圖所示...
Posted 05 May 2018 11:04 AMJeffrey | 1 comment(s) 4,302
Filed under:
實戰小技巧 - .NET Exception Message、InnerException 與 ToString()
前篇文章 提到 try catch 時若只保留 Exception.Message,可能遺失 InnerException 及 StackTrace 錯失破案重要線索。文章迴響顯示這是個值得介紹的實戰技巧,故再補充一篇。 在某些應用情境我們會選擇使用 try … catch 達成特定目的,例如:(註:Exception 的官方翻譯為例外狀況,這裡容我用較口語化的「錯誤」取代) 捕捉可預期錯誤,進行補救並繼續執行程式 例如:發現作業失敗時,Rollback 交易、寫 Log、通知管理員、退回前一步驟請使用者再試一次...
Posted 12 February 2018 09:06 PMJeffrey | 4 comment(s) 5,250
Filed under: ,
【笨問題】在 Windows 檔案總管切換音樂/相片資料夾之詳細資料檢視
在使用 Windows 檔案總管我常遇到以下狀況 – 遇到滿載 MP3 或 JPG 檔的資料夾,選擇「詳細資料」檢視時檔案總管會自動切成音樂或照片專用的檢視,像是這樣: 遇到音樂顯示標題、演出者、專輯名稱,遇到照片可以帶出拍攝日期、尺寸,對一般消費者來說是很貼心的設計,可依據媒體特性方便排序管理。但對想靠檔案日期及大小查問題的茶包射手來說,這些預設欄位沒半個有用。過去我常用的解決方法是在欄位標題按右鍵新增修改日期、大小欄位: 最近學到一招,其實可以要求 Windows 將這個資料夾切回成一般檔案的詳細檢視...
Posted 04 February 2018 02:08 PMJeffrey | with no comments 2,821
Filed under:
全文檢索筆記–Windows Search SQL經驗談
因應專案需要,先前研究過 Lucene.Net 。Lucene.Net 功能強大效能佳,又提供極高客製彈性,但缺點是得自己處理 從 PDF、Word/Excel/PowerPoint 檔提取文字 、管理索引排程,瑣碎工作不少。最後,我選擇到超市買牛奶而不自己養牛,決定借用 Windows Search 功能實作網站內容全文檢索,建個目錄把檔案放進去(txt、html、pdf、docx、xlsx、pptx 都成),將其納入索引範圍,在 .NET 程式建個 OleDbConnection,就可以下 SELECT...
Posted 21 December 2017 08:42 PMJeffrey | with no comments 5,132
Filed under:
C# 小技巧 - 不必再靠 switch case 副檔名決定 ContentType 囉
由 ASP.NET 伺服器端傳回檔案內容,需指定適當的 ContentType,瀏覽器才會將其視為圖檔、HTML、CSS 或 JavaScript 處理。過去我都是土法煉鋼,取得副檔名再用 switch … case 針對已知檔案種類列舉對應 ContentType,像這樣: string contentType = "" ; switch (fileName.Split( '.' ).Last()) { case "jpg" : contentType...
Notepad++ 7.5 取消預設安裝 Plugin Manager
在新安裝的 Notepad++ 找不到 Plugin Manager 可用,先前遇過安裝 64bit 版本有些 Plugin(插件) 無法使用,但確定我裝的是 32bit 版本沒錯,所以是哪邊出了問題? (什麼? 你沒聽過 Notepad++,快安裝它取代記事本 Notepad 吧! 好用豈止十倍? 而且還是台灣開發者的開放原始碼專案,舉世聞名獲獎無數,又一項台灣之光! 維基百科 ) Release Note 載明預設安裝的插件只剩 NppExport、 Converter、Mime Tool,確實未包含...
Posted 05 November 2017 11:11 AMJeffrey | 2 comment(s) 15,101
Filed under:
小技巧-使用匿名型別快速捏出指定JSON格式
同事有個小需求,已知城市、區域及郵遞區號要產生如下規格的 JSON 餵到前端: { "rows" : { "row" : [ { "City" : "台北市" , "Area" : "文山區" , "ZIP" : "116" } ] } } 先前介紹過 JObject 結合 dynamic 的 花式玩法 可以快速達成目標: static void...
Posted 25 August 2017 11:44 PMJeffrey | with no comments 7,768
Filed under: ,
在單元測試專案使用 dynamic 出現 CSharpArgumentInfo.Create 錯誤
在自動測試專案加入使用 dynamic 型別的測試方法後,Visual Studio 2017 傳回編譯錯誤: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create' 在 Microsoft Connect 查到相似 錯誤回報 ,案例集中在微軟單位測試及 NUnit 測試專案(NUnit 可透過更新版本解決),推測為單元測試專案預設未參照 Microsoft...
Posted 25 July 2017 10:24 PMJeffrey | with no comments 2,502
SQLite 批次 INSERT 的蝸牛陷阱
假日轉檯寫 Coding4Fun 專案,本週的 Scrum Sprint Planning Meeting 我認領的工作是將 13 萬英文單字轉入 SQLite 資料庫 (謎:認領?快醒醒,這專案從頭到尾只有你一個人吧?)。 心想這有什麼難,涮涮涮寫好以下程式,沒想到其執行速度之慢,嚇得我屁滾尿流失了魂… using (var cnSqlite = new SQLiteConnection(csSqlite)) { cnSqlite.Open(); Stopwatch sw = new Stopwatch...
Posted 16 July 2017 06:42 PMJeffrey | 1 comment(s) 13,077
Filed under: ,
筆記-使用 Dns.GetHostEntry 解析 IP 位址
某排程使用以下程式碼產生 IEndPoint 以建立 Socket: IPEndPoint pEndPoint = new IPEndPoint(Dns.GetHostEntry(remoteHost).AddressList[0], remotePort); 其中用了 Dns.GetHostEntry(),好處是不管 remoteHost 傳入的是主機名稱還是 IP,一律可轉成 IPAddress。 排程在正式及測試環境運作多時,今天將程式移到另一網段機器上執行,remoteHost 為 IP...
Posted 21 June 2017 10:30 PMJeffrey | with no comments 7,227
Filed under: ,
檔案總管右鍵選單開啟免安裝版Notepad++
使用安裝版 Notepad++ 的同學請忽略本文,祝你有美好的一天。(同場加映萬用檔案總管右鍵開啟技巧一則,繼續讀下去也無妨。) 如果你選擇 下載 Notepad++ 免安裝版 (zip package、7z package、minimalist package),有個困擾是沒法在檔案按右鍵用「Edit with Notepad++」直接編輯檔案。 為此 Notepad++ 提供一顆元件(NppShell.dll,下載網址: http://notepad-plus.sourceforge.net...
Posted 06 June 2017 06:11 AMJeffrey | 3 comment(s) 8,070
Filed under:
更多文章 下一頁 »

搜尋

Go

<December 2018>
SunMonTueWedThuFriSat
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication