快速將C#型別轉成TypeScript介面定義
使用TypeScript處理AJAX呼叫時,常需要在前端定義與C#物件屬性一致的TypeScript型別,以便將後端傳來的JSON資料還原成強型別物件。針對較正式的資料模型,我會用CodeGen方式同步C#與TypeScript端的型別定義(順便處理多語系問題)。但蠻多時候處理對象只是零散的小型別,不必殺雞用牛刀,針對這類需求,推薦一個好用工具-TypeLITE。在NuGet查關鍵字"typelit...
View Article善用VS2015 NuGet Manager解決方案管理功能
NuGet已經是Visual Studio寫專案時的柴米油鹽醬醋茶了,但有些人可能沒發現在解決方案(.sln,Solution)層也可以開啟NuGet Manager。如下圖,在Solution Explorer的.sln開右鍵選單,有一個「Manage NuGet Packages for Solution…」:在解決方案開啟NuGet...
View ArticleCTE應用-將多筆查詢結果合併成逗號分隔字串
一對多關聯是常見的資料庫應用情境,有時我會遇到將多筆關聯資料特定欄立合併成逗號分隔字串的需求。聽起來有點抽象,用個實例說明。假設有兩個資料表,應用系統清單及負責該系統的工程師名字,用以下指令建立模擬資料:CREATETABLE AppSystem ( Name VARCHAR(16), CodeName VARCHAR(16))INSERTINTO AppSystem VALUES ('HR',...
View Article欄位合併效能比較:CTE vs FOR XML
前一篇文章介紹用CTE實現SQL一對多關聯欄位合併的方法,找資料期間曾發現另一個替代做法,利用SQL Server的FOR XML PATH('')技巧,可將多筆資料轉成單一字串(參考),看來也相當簡潔。但當下覺得子查詢加FOR XML轉換的做法有效能疑慮,理應不如CTE(事實不然!),加上搞CTE比較有挑戰性,故選了CTE研究嚐鮮。網友ChoeChin留言提到FOR...
View Article在SharePoint網站檢視RDLC報表發生錯誤
冷門茶包一枚。在SharePoint網站安裝網站應用程式,在其中使用ReportViewer檢視RDLC報表,發生以下錯誤:The type 'Microsoft.SharePoint.Portal.Analytics.UI.ReportViewerMessages, Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral,...
View Article【茶包射手日記】IIS不接受TCP連線
公司有一台主機連續兩天出現異象。剛上班的尖峰時間出現IIS網站無回應,使用遠端桌面登入觀察到桌面反應遲緩,但幾個系統服務與網路磁碟機功能正常,IISRESET後問題仍未消除。進一步用 telnet 127.0.0.1 80 測試,得到的結果是TCP連線一建立就被切斷,主機上有另一個走8080 Port的PHP網站,telnet 127.0.0.1 8080...
View Article2016台北渣打馬拉松
攝氏4度。曾以為這是跑東京馬或京都馬才有幸體驗的跑馬溫度,今天我們終於能驕傲地說:台灣,做到了!(補聲暗)報名渣打馬原本期望靠著路平天冷好催速,振作起來挑戰PB。天曉得遇上44年難得一見的霸王級寒流(專業名詞是負北極振盪),全台處處雪花飄,台北市不只陽明山,連木柵附近的猴山岳、阿柔洋、二格山甚至指南宮都下起霰來,面對此生難逢的寒流,把握氣溫最低的清晨時分,在戶外奔跑徹底體驗4度到底有多冷,好盡興呀~...
View ArticleGUID Primary Key資料庫避雷守則
【聲明】該不該用GUID當Primary Key是可以讓開發人員大戰三百回合的好題材,由標題可知我屬於GUID陣營,這篇文章不打算花時間論證該不該用GUID PK,假設讀者已接受使用GUID當PK,只聚焦如何避免GUID PK導致資料庫效能悲劇。故事源起MVP...
View Article【茶包射手日記】VS2015卡在專案初始化無回應
用Visual Studio 2015開啟最近每天在寫的解決方案,突然卡在「解決方案呈現載入中(loading…),多個專案處於初始化中(initializing…)」狀態,Visual Studio 2015...
View Article漫談尾牙抽獎程式的公正性
上週看到以程序員生活為題材的漫畫作者西喬的創作:「年会上的程序员们……」,改編自一個「CTO覺得抽獎程式有點問題,程式作者被迫在旺年會場接受上千人Code...
View Article小技巧-自動刪除App_Data過期暫存檔
寫網站時有時需要產生暫存檔,過去我慣用的做法是透過System.IO.Path.GetTempPath(),將暫存檔寫入Windows系統暫存資料夾,如意算盤是暫存資料夾本來就是放暫存檔的地方,而Windows有機制可在磁碟空間不足時刪除暫存檔釋放空間,如果檔案沒有機密或敏感性,放在暫存資料夾基本上可以Fire and...
View Article小技巧-為text-overflow: ellipsis增加完整文字顯示
CSS 的 text-overflow: ellipsis 刪節號效果可讓長度不一的文字等寬顯示,遇到版面空間有限又必須整齊排列時很好用,但套用刪節號樣式後看不到完整文字,尤其遇上文字前半截相同時更是難以區別,是一大困擾。為此,我的慣用解法是為套用 ellipsis 的文字元素加上 title Attribute 存入完整文字,將滑鼠移到文字上停留就能看到原始文字,問題迎刃而解。每次套用...
View ArticleLINQ寫法:類SQL查詢語法 vs 方法串接
前陣子跟同事討論到LINQ查詢寫法。記得在LINQ剛推出時以「可以在C#裡寫SQL語法查資料」為號召,範例裡常看到這種長得有點像SQL語法的LINQ查詢運算式(LINQ Query Expression,我習慣叫它「類SQL查詢語法」): IEnumerable<int> scoreQuery = //query variable from score in scores...
View Article讀書筆記-思考的藝術
前陣子跟同事聊到邏輯謬誤,同事提到德國作家的相似作品,談非受迫性的思考邏輯錯誤及行為偏誤,邏輯控對這些知識沒什麼抵抗力,趁著剛好拿到博客來Coupon就入手了,下單隔天書就送抵小七門市,效率令人驚喜。(線上書店品項完整折扣多再加上交貨神速,實體書店只剩能深入試閱及可搭訕知性正妹等優勢,這場仗註定艱辛。)書薄不及300頁又算淺顯好消化,沒兩下就能翻完,但衡量自己不會有耐性再翻一次,又不想讀過的內容太快...
View Article讀書筆記-行為的藝術
前情提要第二本「行為的藝術」讀書筆記來了。相較於「思考的藝術」聚焦於邏輯,這本書較偏心理學層次,原本不太引起我的興趣,沒想到讀來驚喜連連,常有「對耶,好像真的是這様」「慘,完全被說中」的感嘆。人類有許多古怪的行為習慣(有些說是劣根性也不為過),不少來自遠古以來的物種演化,由於不具某些「劣根性」的人活不久,留存的基因仍繼續主宰現代人類的行為,非常有趣的邏輯。理由的正當性我只有5頁,可以讓我先印嗎?因為...
View Article在PowerPoint投影片剪貼Visual Studio程式碼
最近在準備開發教學投影片,有大量從Visual Studio剪貼程式碼範例到PowerPoint的需求,遇到一個大問題:從Visual Studio複製程式碼再貼到PowerPoint時,語法顏色有被保留,但換行消失,排版全亂,讓人極度困擾。想起VS2010推出時也有類似的剪貼簿亂碼問題,當時寫了個小工具自力救濟。這次面對的情況類似,理應可如法炮製,便花了點時間研究,發現Visual...
View Article在IIS設定SVG與字型檔MIME Type
開始試用docfx產生API文件(docfx是微軟程式庫文件產生器SandCastle的接班人),編譯專案時可一併產生API文件網頁,非常方便,大推!(docx的安裝使用可參考網友霧隱虎的文章,VS2015用NuGet在專案安裝docfx.msbuild,以後每次編譯時可在_site目錄找到API文件網頁。)直接從檔案總管瀏覽文件網頁大致正常,只有左側目錄總表因本機網頁JavaScript受跨網域存...
View Article我的.NET舊版相容情結
前陣子有篇文章提到微軟中止.NET 4.0/4.5/4.5.1技術支援,結論是:1) Windows預設會自動升級到.NET 4.5.2,2) 用.NET 4.0/4.5/4.5.1寫的程式不需修改就可直接執行(僅有極少例外)。很妙的是,每回建立新專案,我下意識總是挑選較低版本,例如:開.NET 4專案若沒用到async、await等.NET 4.5專屬特色,我會優先選.NET...
View ArticleGoogle Cardboard體驗與Viewer Profile 調校心得
Google Cardboard是 Google 發明的窮人版觀落陰3D立體眼鏡,用瓦楞紙板、兩塊凸透鏡、魔鬼氈折成將手機固定在眼前的小紙箱,執行特殊App對左右眼分別顯示有視差的影像產生立體感,再感測手機的移動隨頭部轉動改變視角,營造逼真的虛擬實境感。另外,Cardboard 在側面還加了一對隔紙板相吸的磁鐵,手機如有 NFC 功能,移動磁鐵改變磁場還可控制 App,十分巧妙的點子。收到好心人贈送...
View Article