小技巧-多站台共用 IIS 80 Port
講到要在一台主機架設多個站台,一般直覺想到的是用不同的 Port 區隔,例如:httq://web_server/、httq://web_server:8080/ 指向不同站台。不過,非 80 Port 網址親和力較差,甚至會被某些較機歪嚴格的防火牆阻擋(只開放 80 及 443),那麼同一台主機上的多個站台可以共用 80 Port 嗎?Yes!這是 HTTP...
View Article關於 Decimal 小數尾數零
C#的實數型別有三種:float、double、decimal。其中 float、double 為浮點數,本站的老讀者們一定知道-「算錢用浮點,遲早被人扁」的道理,因此只要涉及金額計算,我一律改用 decimal 型別。前幾天,踩到 decimal 小數尾數零地雷一枚。以下程式為例,大家猜猜結果為何?class Program { staticvoid Main(string[] args)...
View ArticleWindows 10 磁碟使用率持續 100%
無意在工作管理員發現 C 碟的啟用時間持續停在 100% 降不下來,但讀寫資料量不高,此種狀況發生在 SSD 上格外讓人心驚。開啟資源監視器查到可疑檔案讀寫活動:C:\Windows\Temp\WPR_initiated_DiagTrackAotLogger_WPR System Collector.etl,以每秒 1MB...
View Article2016 飛龍盃烘爐地馬拉松
去年參加第一屆感覺不錯,今年順理成章連一拉一。五點半起跑,五點出頭抵達南山福德宮會場還有夜景可看。貴賓致詞完畢,準時出發。路線與去年相同,何時上坡何時下坡心裡有數,少了新奇感,但多了幾分篤定。起跑後以兩公里陡下揭開序幕,緊接華夏科技大學旁一百多公尺高的小山頭陡上又陡下,接著轉進河濱。市區賽道左變右拐還得穿越不少巷弄,所幸指引義工部署密集,不然應該會迷路迷到地老天荒。超沒多久遇到烏來馬曾海放我的印地安...
View Article小試 JavaScript Promise
非同步邏輯是寫 JavaScript 逃不掉的複雜課題,古早流行的做法是傳入 Callback 函式當參數,待特定作業完成再呼叫,缺點是串接程序一旦變多,就會出現波動拳式排版,寫到渾然不知身處夢境第幾層:asyncJob1(function() {//Callback 函式: asyncJob1 完成後呼叫//...... ayncJob2(function() {//Callback 函式:...
View ArticleJavaScript 非同步程式革命-async、await 與 TypeScript 2.1
.NET 4 的 Task大幅簡化多執行緒程式碼複雜度,而 4.5 推出的 async/await (參考)則讓非同步程式的寫法更精簡。(註:在博客園找到一篇從 Task、ThreadPool 談到 await 的廣泛介紹,可以一讀)網頁開發老鳥都知道,JavaScript 端的非同步邏輯不比 C# 簡單,複雜起來會讓人寫程式寫到嘔出幾十兩鮮血。於是在前端也看到類似...
View Article【茶包射手日記】打不開的PDF檔與檔案格式鑑定
接獲報案,某套表程式忽然故障導致產出的PDF檔案無法開啟。檢視查檔案內容如下,二進位內容當然看不懂,但由表頭判斷一定不是 PDF。檔案一開始的「俵」跟「遄」字元經 Google 在網際網路上發現不少兄弟姐妹,大致可知這是 Office 相關格式,但試著將副檔名改成 .doc、.docx、.rtf 都無法開啟。爬文找到一個神奇的小工具-Marco Pontello's TrID,它搜羅整理了 7886...
View Article核武級ODP.NET版本暴力破解工具
最近又遇到 ODP.NET 版本問題。(警告:本文涉及斜門歪道雞鳴狗盜之技,正義魔人與衛道人士請自行迴避)古老 ASP.NET 網站參照 ODP.NET 9207 版,移到 x64 平台必須改用新版 ODP.NET,而 ODP.NET 存在版號從 9.2 10.1 降回 2.102 的鬼問題,新版號比舊版號數字小在某些情況下會讓「bindingRedirect...
View Article用 TypeScript await 讓操作確認流程回歸直覺
上回提到 TypeScript 2.1 讓 ES5 平台也能支援 async、await,形同 JavaScript 非同步程式的一場革命,衝著這點大家都該認真考慮改用 TypeScript。但 async、await 當真如此神奇?想想,上回漏講一個 await...
View ArticleVisual Studio 擴充套件自動停用問題
最近發生 SCSS無法自動編譯的狀況,查看 Extension and Updates,問題出在 Web Compiler被停用。手動重新啟用後一切功能如常,原以為是一時系統秀逗,但接連發生好幾次才感覺不對勁。觀察發現,即時手動啟用,重開 Visual Studio 再開,Web Compiler 又是停用狀態。進一步檢查,則發現另一套件 Bundler & Minifier...
View Articleonbeforeunload 事件不再支援自訂訊息
要防止使用者網頁輸入資料時誤按超連結或回上頁鍵,來不及儲存(送出)就離開,有個古老技巧是攔截 onbeforeunload 事件,使用 return "…" 傳回提醒文字,讓使用者有機會反悔,選擇停留在原頁面。(參考:如何避免使用者在特定網頁表單在未經送出時意外離開)這招用了多年,今天在寫某個設定網頁時卻發現 Chrome 沒有顯示我在 onbeforeunload...
View ArticleODP.NET 發行者原則檔經驗一則
之前處理過一個鳥問題,使用 ODP.NET 12.1 連線 Oracle Server 10.2.0.4 時無法參與分散式交易,傳回「Unable to enlist in a distributed transaction /無法列於分散式交易中」錯誤。依網路討論 Server 升級到 10.2.0.5 以上可解決,當時決定將資料庫移至另一台 Oracle Server 11.2...
View ArticleCSHTML 匿名型別資料繫結技巧一則
情境如下, 在 ASP.NET MVC 用一小段程式顯示部門下拉清單,資料來自資料庫,因欄位較多且命名不直覺,我將由資料庫取得的集合轉成匿名型別 Select(o => new { DeptId = o.DI, DeptName = o.DN },再以 Razor 語法 @foreach (var dept in ViewBag.Depts) { <option...
View ArticleIE 內嵌 IFrame 之 IE 相容模式組合問題
先前研究 IE 內嵌 IFrame 相容模式規則時,得到一個結論:透過IFrame內嵌網頁會沿用父網頁的文件模式,透過X-UA-Compatible亦無法改變前幾天同事回報一個黑天鵝案例:IE8 相容模式網頁內嵌 IFrame,裡面再內嵌一個 IFrame,依先前理解,兩個 IFrame 都應沿用 IE8 相容模式。實測卻發現,只要內層 IFrame 沒宣告...
View ArticleHi, XBOX ONE!
去年因為一些事,對人生無常頗有感慨,頓時發現自己的人生嚴肅到有些乏味,老在計較每一分每一秒時間的投資報酬率。小木頭恰巧是鮮明的對比,小小年紀就有七八十歲老先生的豁達(如此「早熟」令人堪憂呀),功課考試什麼的最討厭了,腦海老繞著看到的好玩電腦遊戲打轉。兩個不良示範掛在天平兩端也不是辦法,弄條管道擴大交集,鼓勵二者向中央靠攏,而身為阿宅想到的是-買台遊戲機。吸引嚴肅老頭有點玩心,當成貪玩小鬼努力唸書的誘...
View Article筆記-Scott Hanselman 的 2017 .NET 開發者須知
Scott Hanselman 前兩天有篇文章-What .NET Developers ought to know to start in 2017,我的工作(甚至生活)跟 .NET 息息相關,重量級人物的觀點自然不容錯過,整理筆記如下:前言Scott 之前整理過類似的 .NET 須知,結果被大家拿來當作面試時折磨新人的刑具…...
View Article使用 FileChangeMonitor 實現檔案資料快取自動更新
有個開發老鳥專屬的「成功經驗」陷阱:遇到難題,想出一套簡單有效解法,或許有些小缺點,但造成的麻煩在可忍受範圍,於是 日後再遇到同樣狀況,一律照方煎藥,數十年如一日。但技術會革新、元件會改進,善用一些新特性,小缺點其實可以化為無形。可怕的地方在於:如果每次都能順利解決問題,就不會圖謀改進,直到有天發現洋人船堅砲利,才知自己已成滿清…...
View Article【茶包射手日記】Windows 沒有足夠資訊可以確認這個憑證
某台持續爬網頁抓資料的排程忽然出現 The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel 訊息,推測為 SSL 憑證失效引起。連至該主機使用瀏覽器檢視,果真憑證顯示異常:錯誤訊息如下:Windows does not have enough...
View ArticleAutofac筆記6-Resolve時依參數傳回不同型別
好久沒寫 Autofac 筆記,記錄一則最近遇到的小需求。系統中針對介面(例如:IBlah)實作了多個型別,Resolve<IBlah>() 時希望透過參數指定傳回不同型別。依據官方文件,實現這類需求的最簡單做法是使用 Named Service(具名服務)或 Keyed Service(鍵值對應服務), Register<T>() 後不使用...
View Article在 Chrome/Edge 網頁用 IE 開啟超連結
這是 IE Only 網站親衛隊才有的困擾。許多內部系統年代久遠,寫於全天下瀏覽器只有一種(IE)的時代(2004 年 IE 市佔高達 95% [參考]),寫成 IE Only 也是很合理的事。但你我都知道,時代不同了,滿天都是飛機啊,滿街都是電腦啊,HTML5 世代 IE 早已不是最好的瀏覽器選擇。望著公司那堆 IE Only...
View Article