เอา .NET Core Project Test ออกจาก Code Coverage ใน Sonarqube

ในโพสต์ที่แล้วลองหา Code Coverage ใน .NET Core ไปแล้ว พอเอาเข้าไปแสดงใน Sonarqube มันดันมีผลของ Coverage จาก Project Test ปนเข้ามาด้วย นั่นแปลว่า ถ้าเราไม่หาวิธีเอามันออกจากผล Coverage เราก็ต้องทำ Project Test ขึ้นมาอีกอัน เพื่อเป็น Unit test ของ Project Test นั้นซ้อนอีกที ซึ่งวิธีแรกดูเข้าท่ากว่าเยอะ

ดู​ Code Coverage บน .NET Core ด้วย coverlet

หาวิธีเช็ค code coverage บน dotnet core บน non-windows platform จนเจอตัวที่ชื่อ minicover ตามที่ฟิวแนะนำด้วย blog ของปุ๋ย เข้าไปอ่านก็เจอว่าโอเคดีเหมือนกันนะ ตัว minicover แต่ก็ยังไม่ได้ตัดสินใจว่าจะใช้ minicover หรือตัวอื่น เลยหา ๆ ต่อ จนเจออีกตัวที่ชื่อ coverlet ก็โอเคเหมือนกัน ด้วยอยากลองทางเลือกอื่น ๆ บ้าง แถมกับที่ ตัว coverlet มันดูง่ายดี เลยลองเอา coverlet มาใช้ดู

ใช้ Watcher ใน .NET Core

Microsoft ทำ tool ที่เอาไว้ auto rerun โค้ดใน .NET Core ไม่ว่าจะเป็น app เราหรือแค่เฉพาะ test เรียกว่า watcher โดยมันจะทำหน้าที่คอย detect ว่าโค้ดเรามีการเปลี่ยนแปลงหรือไม่ ถ้ามีการเปลี่ยนแปลงเกิดขึ้น มันก็จะ auto rerun สิ่งที่เราทำอยู่ให้

Convert Datetime จาก ค.ศ. เป็น พ.ศ. ใน Razor Template

ใน C# ที่ใช้ Razor Template Engine เช่นในแอพที่เป็น MVC หรือเอา RazorLight Package มาใช้ในการ render ตอนเวลาต้องการ render วันที่ที่เป็น string ที่เป็นปี ค.ศ. เช่น “2018-02-17T01:22:38” ให้เป็นปี พ.ศ. จะต้องทำการ convert ก่อน โดยอาจจะ convert ตั้งแต่ใน app เอง หรือจะ convert ใน template ก็ได้

เขียน middleware บน .NET Core 2.0

โดยปกติ เวลาสั่ง dotnet run ตัว web api มันจะแสดงแค่ว่า ตอนนี้กำลัง listen อยู่ที่ port ไหน ถ้ามี request ที่ตรงกับ route เข้ามาก็เงียบ ๆ จะมีบ่น ๆ ก็แค่ตอนเจอ error เลยลองตั้งโจทย์ว่า อยากจะให้ web api request มันคอย log ทุก request ที่เข้ามาบน console เหมือนกับ access log จะทำยังไงดี middleware น่าจะเป็นคำตอบที่น่าสนใจ

ใช้ LinQ กับ mongodb บน .NET Core 2.0

น้องแอ๋มมาบอกว่า อยากให้ลองใช้ LinQ แล้วจะติดใจ เลยลองเอาตัวอย่างเดิมที่เขียนต่อกับ mongodb มา modify เพิ่ม โดยการก๊อปปี้เอา CustomersService class มาสร้างเป็น CustomersLinQService class แล้วแก้ให้มาใช้ LinQ

ใช้ CORS ใน .NET Core 2.0

ปัญหาเวลาทำ frontend กับ backend แยกออกจากกันคือ ถ้าทั้ง 2 ฝั่งอยู่คนละ domain ไม่ว่าจะคนละ subdomain คนละ port หรือ คนละ scheme (เช่น http กับ https) ก็ตาม จะเจอปัญหาเรื่อง cross origin ซึ่งเกิดจากที่ตัวบราวเซอร์เองไม่อนุญาตให้ใช้ ajax เรียกเนื้อหาที่อยู่บน domain อื่น เรียกว่า same-origin policy เพื่อป้องกันการเข้าถึงข้อมูลที่สำคัญข้าม domain กัน วิธีหนึ่งที่สามารถแก้ได้คือ เอา reverse proxy มาคั่นกลาง แล้วทำให้ backend มาใช้ domain เดียวกันกับ frontend แต่ถ้าไม่สามารถทำแบบนี้ได้ ก็มีอีกวิธีคือการกำหนดที่ backend ให้เปิดรับ request จาก origin ที่ต้องการ เรียกว่า […]

เอา Nuget Package ไปไว้ที่ Nuget Server ผ่าน .NET Core 2.0 Command Line

Nuget คือ package manager สำหรับ .NET เอาไว้ให้กับคนทำ package สามารถแชร์ package ให้ developer คนอื่นสามารถดาวน์โหลดไปใช้งานได้ Nuget Package ที่สร้างบน .NET Core ผ่านคำสั่ง dotnet pack สามารถเอาไป publish บน Nuget Server ได้ผ่านคำสั่ง dotnet nuget push