โชว์ Code Coverage ของ Angular Project ใน Github

เข้าไปเห็น repo ใน github ของหลาย ๆ คน เขาแสดง code coverage เป็น badge แล้วมันดูเท่ไม่หยอก ที่สำคัญมันออโต้ด้วย ไม่ต้องมานั่งพิมพ์เองหลังจาก run unit test เสร็จว่า code coverage เราเท่านี้แล้วนะ ให้มันอัพเดทโดยอัตโนมัติดีกว่า จิ้ม ๆ ดูเห็นเขาใช้ service ของ codecov.io เลยไปลองมั่งดีกว่า

จริง ๆ วิธีนี้ใช้กับ provider เจ้าอื่นได้ด้วย ไม่ใช่แค่ github พวก bitbucket, gitlab ก็ได้นะ

อ่านต่อ »

ทำ Code Analysis ของ .NET Core ใน SonarQube

ก่อนนี้ SonarQube ยังไม่มี feature ที่รองรับ .NET Core ถ้าจะใช้งานบน platform ที่เป็นตระกูล Linux จะต้องใช้ mono เพื่อให้มันสามารถรัน MSBuild.exe ได้ จนเมื่อเดือนมีนาคมที่ผ่านมา SonarQube ก็ออกตัว SonarQube Scanner for MSBuild ที่สนับสนุนการ scan code ที่เป็น .NET Core แบบไม่ต้องพึ่ง mono และสามารถทำงานผ่าน dotnet cli ได้มาใช้กันแล้ว

อ่านต่อ »

เอา .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 มาใช้ดู

อ่านต่อ »

รัน unit test บน jasmine ด้วย karma บน javascript บ้าน ๆ

ไปเจอโค้ด javascript ของลูกค้าแบบที่ไม่ได้ใช้ framework อะไรที่เป็น legacy คือไม่มี test ด้วย แล้วต้องการเขียน unit test เลยแนะนำว่าให้ลองใช้ jasmine ไปแบบไม่ได้บอกอะไร คิดว่าไม่เกิน 15 นาทีน่าจะหาวิธีใช้งานได้ เดินไปดูอีกที อ้าว เข้าป่าไปซะแล้ว เลยนึกขึ้นได้ว่า jasmine เฉย ๆ มันจะยุ่ง ๆ หน่อย ถ้าใช้ karma ร่วมด้วย น่าจะสะดวกกว่านี้เยอะ เลยทำตัวอย่าง ยัดใส่ github แล้วก็เอาไปให้ลูกค้าดู น่าจะเห็นทางไปละ

อ่านต่อ »

ใช้ Watcher ใน .NET Core

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

อ่านต่อ »

Headless Robot Framework มาพร้อมกับ SeleniumLibrary แล้ว

ก่อนหน้านี้เคยโพสต์เกี่ยวกับการใช้ Headless Browser ใน Robot Framework ทั้ง Chrome และ Firefox ตอนนั้นตัว Selenium Library เองยังไม่สนับสนุนการใช้ Headless Browser ทำให้ต้องเขียน Keyword หรือ Library เอา เพื่อเปิดใช้งาน Chrome หรือ Firefox แบบ Headless แต่วันนี้ลองเข้าไปดูใน Document ของ SeleniumLibrary อีกที อ้าวเฮ้ย มันสนับสนุน Headless Browser แล้ว ทั้ง Chrome และ Firefox เลยเว้ย ลองกันเลยดีกว่า

อ่านต่อ »

แปลง UTF-8 เป็น TIS-620 ไป ๆ กลับ ๆ ใน .NET Core

ได้ไปทำงานกับลูกค้าที่มี project เก่า ๆ บางตัวที่ยังใช้ข้อมูลในฐานข้อมูลที่มี character set เป็น tis-620 อยู่ และไม่สามารถแปลงเป็น utf-8 ได้ด้วยสาเหตุอะไรบางอย่าง (น่าจะเป็นงานที่จะงอกขึ้นมากับทุก ๆ ระบบที่เค้า live อยู่) รู้แค่ว่า project ใหม่ ๆ ยังต้องไปดึงข้อมูลจากฐานข้อมูลนี้ แถมอีก project ต้องส่งข้อมูลที่เป็น utf-8 ไปหาระบบที่รองรับแต่ tis-620 อีก นั่นคือ ต้องมีวิธีแปลงข้อมูลจาก tis-620 ไปเป็น utf-8 และแปลงจาก utf-8 กลับไปเป็น tis-620

ข่าวร้ายคือ ใน .NET Core Framework ยกเลิกการ support legacy character set บางภาษาไปแล้ว รวมถึงภาษาไทยด้วย นั่นคือ วิธีการ convert encoding ที่ควรจะทำได้ง่าย ๆ มันไม่ง่ายอีกต่อไป

อ่านต่อ »

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

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

อ่านต่อ »

เพิ่ม Environment Variables ใหม่ใน Angular

ใน Angular โดยปกติจะมี environment มาให้ 2 environment คือ prod กับ ไม่ prod (เรียกรวม ๆ ว่า dev ละกัน) โดย environment ของ prod จะอยู่ที่ /src/environments/environment.prod.ts ส่วนอันที่เป็น dev จะอยู่ที่ /src/environments/environment.ts ซึ่งปกติเวลาเราสั่งคำสั่งผ่าน angular cli เช่น ng serve หรือ ng build มันจะเอาอันที่เป็น dev มาใช้ ถ้าต้องการใช้อันที่เป็น prod ต้องมีการประกาศอย่างชัด ๆ ว่าฉันจะเอา production นะ ผ่าน option --prod หรือ --environment=prod เช่น ng serve --environment=prod

อ่านต่อ »