這星期收到許多勸敗Microsoft Teams的分享訊息,Teams也是一種辦公室即時通訊合作軟體,不過以前Teams得要有Office 365才能用,現在有免費的方案了。除了團隊溝通、檔案共用和視訊通話等功能,我們先從應用程式的Log拋到Teams 頻道開始,來串一下NLog To Teams Channel。
[Fortify][.NET]Unreleased Resource: Streams 排除
明明同事用了using來確保區塊結束時會呼叫Dispose()作到自動釋放資源,但還是被源碼檢測工具fortify舉報。呼~~來解題。
[C#][LINQ]樂透頭獎、雙贏彩及安慰獎的寫生
這週Review年輕同事的程式,程式中需要將兩組序列作比對來決定輸入資料的去向,意外發現了同事使用LINQ All及Any判斷式不小心留下的小bug,簡單作樂透案例給同事看:
- 判斷序列的"任何項目"是否"都"符合(頭獎)
- 判斷序列的"任何項目"是否都不符合(雙贏彩)
- 判斷序列的任一項目是否符合(安慰獎)
[Fortify]Path Manipulation和XML External Entity Injection一起作怪
再次和Fortify神鬼交鋒(新的Rule Pack上市),Fortify SCA新檢測出Path Manipulation及XML External Entity Injection(Input Validation and Representation, Data Flow),來筆記這次的修正。
[.NET][C#]NPOI產生Excel報表(三)下拉選單(xlsx)
昨天留在駐點辦公室驗證需求,客戶端的程式開發人員來討論一個主管交辦的任務,產表時,要多幾個下拉欄位給user選,而且希望透過程式動態帶出下拉選單的值,趁女兒睡著,來試試用NPOI實現從後端作Excel資料驗證。
[.NET][C#]NPOI產生Excel報表(二)分頁列印(xlsx)
星期日晚上來寫blog,上一篇先解決了列印時的表頭資訊,這一篇來解決同事其他的需求:依照資料筆數分頁列印、小計等。順邊筆記2的十次方分頁問題。
[.NET][C#]NPOI產生Excel報表(一)列印表頭資訊(xlsx)
同事剛加入急急如律令的專案幫忙開發報表,使用者有一項需求是列印報表時,表頭要出現頁數、標題、欄位名稱等,專案中使用的是NPOI,之前自己參加專案時都是同事寫好了元件,對NPOI操作不太熟悉,這次捲起袖子來試試。
[.NET][C#]判斷日期是否為月初、月底、季初、季底、年初、年底的日期函數(extension methods)
- 3611
- 0
- C# Extensions
以前只有寫判斷銀行營業、關帳日、計息起息結息日的,趁中午吃點心來補同事們需要的函數(判斷月初、月底、季初、季底、年初、年底)。
[.NET][NHibernate]Transaction中讀取不到剛剛寫入的資料
很開心在上周末下班前一起和客戶端的.NET架構師解決了開發人員的NHibernate交易使用問題,好久沒用Hibernate這個老牌ORM武器了,連開保險上膛都很生疏,來筆記Hibernate問題解決,順便回憶。
客戶端開發人員的問題是在同一個Transaction中,有三個資料庫的操作,但後面的操作無法讀取到同一個Transaction先前寫入的資料。
[.NET][C#]避免使用System.IO.File.AppendAllText寫出大型文字檔案
- 7111
- 0
- .NET Performance
今天加班幫同事抓報表效能問題,調整報表元件後,程式執行時間從14分鐘降成1分鐘,除了寫法上本身的效能差異外,還意外發現防毒軟體來湊腳,最後從微軟connect也發現2年前有一篇討論串提到AppendAlltext及防毒軟體,來筆記紀念今天。
[.NET][C#.NET]走跳在Linux的人生(八).NET Core與Mono執行
- 6663
- 0
- .NETOnLinux
我們來試試用.NET Core從Windows環境開發,然後porting到Linux環境(佈署及執行.NET Core),之前曾看過stackoverflow文章提到Mono的效能問題,這一次我們同時也想了解.NET Core與Mono在效能中的表現是否有變數。
[.NET][C#.NET]走跳在Linux的人生(七).NET Core安裝
- 6706
- 0
- .NETOnLinux
雖然沒辦法所有系統都用.NET Core重新開發,但還是有小部分功能可以趕上跨平台的潮流,我們來試試在Linux(Red Hat Enterprise)環境跑.NET Core。
[.NET][C#.NET]走跳在Linux的人生(六)Daemon(Mono-Service)
- 7327
- 0
- .NETOnLinux
因為一些歷史因素,系統內有些背景下的服務功能在Windows環境下是以Windows Service的方式常駐在系統記憶體中運作,這次要模擬遷移到Linux的環境,想起Daemon小惡魔,好在Mono也有解,我們來筆記。
[.NET][C#].NET走跳在Linux的人生(五)ASP.NET Hosting with Apache
- 9022
- 0
- .NETOnLinux
我們來試試把ASP.NET Web Forms網站放到Linux環境的Apache上執行吧!
[.NET][C#].NET走跳在Linux的人生(四)ASP.NET With mono xsp(Windows Deploy)
- 7663
- 0
- .NETOnLinux
上一篇我們簡單用mono project的範例,在Linux新增ASP.NET程式碼(hello.aspx )並且編譯然後執行,這篇來試試直接把Windows環境編譯好的網站程式放到Linux環境下執行。
[.NET][C#].NET走跳在Linux的人生(三)ASP.NET With mono xsp(Getting Started)
- 7494
- 0
- .NETOnLinux
- 2017-07-16
美好的星期日早上繼續筆記Mono在ASP.NET程式上的支援,我們會安裝測試用的xsp server、實作一個簡單的Web Service做數學加法運算,另外就是實作ASP.NET Core目前還沒看到支援的Web Forms技術架構(...)。
[.NET][C#].NET走跳在Linux的人生(二)Mono Runtime
- 11051
- 0
- .NETOnLinux
- 2017-07-16
上一篇我們簡單用mono project網站所提供的範例,在Linux新增helloworld.cs程式碼並且編譯然後執行,上一篇可以確保mono runtime以及編譯器都有安裝正確,接下來這篇則是計畫直接把Windows環境編譯好的exe及dll(msil:byte code)放到Linux環境下執行,可以發現透過Mono CLR(Microsoft-Compatible APIs),我們可以不用重新編譯就執行.NET的執行檔。
[.NET][C#].NET走跳在Linux的人生(一)Mono
- 15731
- 0
- .NETOnLinux
隨著.NET Core 1.0在2016年的釋出,.NET工程師有更多的機會實現.NET on Linux的需求,就像魔戒中的精靈射手奧蘭多布魯, 走出精靈據點(Rivendell)還是隨便都百步穿楊射死半獸人。
[.NET][C#]物件建立之淺層複製(Shallow Copy) vs 深層複製(Deep Copy)
最近踩到一個legacy code 在C#物件複製的陳年小雷,拆解炸彈的同時也寫筆記!
有時我們會在類別(class)中加入Object.MemberwiseClone方法來提供物件的複製(clone),舊程式使用新物件裡的屬性剛好都是用new關鍵字建立,大概像下面的方式使用屬性:
p2.IdInfo = new IdInfo(17);
很幸運一直沒發生參考問題,最近改用直接指派,類似下面的寫法:
p2.IdInfo.IdNumber = 17;
測試時大驚!原始物件p1的值竟然被覆蓋了,花了時間才發現自己對MemberwiseClone的定義不夠清楚。
[Powershell]在Powershell中使用C#方法
- 3846
- 0
- Power Shell
- 2016-11-12
如果管理Windows Server的Developer或是SE/SP剛好也略懂C#,來試試在Powershell裡頭寫C#。