[.NET] บันทึกการจัดการ NuGet ที่ต้องแยกเฉพาะตาม Platform ครับ

เนื่องจากมีบาง NuGet ที่มันมีความพิเศษ แม้ตัว .NET Core / .NET 5++ มันจะใช้ได้แบบ Cross Platform แล้ว แต่มันมี Third Party บางตัว มันจะยังต้องแยกตาม Platform อยู่ครับ ยกตัวอย่าง เช่น IBM DB2 ครับ แล้วที่นี่ ถ้าเรามีโจทย์/เงื่อนไขประมาณนี้ Solution แก้ที่ตัว csproj ของเราครับ โดยเราต้องมาดูกันก่อนว่าตัว cs project มันใส่เงื่อนไขได้ไหม ซึ่งมันทำได้ครับ อ๋อ แต่การแก้แบบนี้ อาจจะต้องตรวจสอบด้วยนะครับ ว่า NuGet ที่เราเอามาใช้งาน ถ้ามีการขยับ Version อย่าลืมตรวจสอบด้วยนะครับ ว่าทุก Platform หรือ ในส่วนของ Visual Studio กับตัว dotnet build เวอร์ชันสอดคล้องกันไหมครับ และก็ตอน Build จากระบบ CI/CD อย่างเช่น Jenkins / Gitlab ถ้าจะระบุ Platform ตอน Build ต้องมาปรับ Param ด้วยครับ Reference

ซ่อมบ้าน-ทาสีกันซึมดาดฟ้า

สำหรับอันนี้จริงวางแผนตั้งแต่ปลายปีที่แล้ว แต่ทว่างานด่วน งานเร่ง งานดองมาแทรกตลอด ช่วงนี้บ่นเยอะงานพวกนี้เลยลดลงจนได้มีเวลาดูบ้านสักที สำหรับ Blog นี้จะแบ่งเนื้อหาประมาณนี้คร้บ Plan Execute – เตรียม Landing Zone ก่อน (หยุดสงกรานต์ 2023) ทว่าไม่ได้ทำต่อแล้ว เพราะว่าติด COVID-19 รายละเอียดตาม Blog COVID-19 First Time (2023-04-25 – 2023-05-05) – แก้ปัญหาท่อระบายน้ำตัน (29-Apr-2023) – ขัดพื้นอีกรอบ (30-Apr-2023) – ซื้อสีกันซึม (1-May-2023) – ทาสีชั้นรองพื้น (4-May-2023) สีหมดถัง ใช้เวลาเยอะกว่าที่คิดนะ 06:30 – 15:20 แดดร้อนมากๆ ผิวไหม้เกรียมเลย รูปด้านล่างผลประกอบการวันแรกครับ เห็นว่าบางจุดทาไปแล้วยังมีรอยสีขาวๆ อาจจะเก็บงานที่ไม่เรียบด้วยกระดาษทรายก็ได้นะครับ ดูจากคลิปใน Reference มีทำอยู่ครับ แต่ผมไม่ไหวแล้วครับ – ทาสีเพิ่มอีกชั้น เพื่อความเหนียว (5-May-2023) เนื่องจากสีเหลือ 1 กระป๋อง 20 kg ถ้าทาแบบวันแรกเอาให้เต็มรองพื้นน่าจะไม่พอแน่ๆ เลยต้องแบ่งพื้นที่นิดนึง ตอนทาสีต้องทาแต่ละชั้นให้มันไขว้กันครับ แต่ละชั้นตามรูป มันจะช่วยให้สียึดติดกันเหนียวขึ้นครับ ที่เลือกทาขอบขึ้นมา 10 นิ้ว เพราะลูกกลิ้ง 10 นิ้วครับ ใช้เวลาน้อยกว่าวันแรก 06:20 – 11:30 ผลประกอบการวันที่สองครับ ส่วนที่เหลือคงรอช่วงปลายปีหน้าหนาวมาทางอีกรอบครับ – ลอกเทปกาวออก (7-May-2023) 2 Month Later Cost Reference

ทำให้ตัว ICONV support TIS-620

จาก Blog ตอนก่อน Interface แล้วได้ TextFile 0 bytes ตอนนั้นผมได้ตัดสินใจว่าจะ Lock Base Image ก่อน แต่ทว่าไม่มีวี่แววที่จะแก้ไข แล้วมีช่วงเวลานึงที่ว่างๆมั้ง เลยคิดว่า Issue นี้ควรจะเข้ามาดูเองแล้ว เลยตัดสินใจศึกษาข้อมูลเพิ่มพบว่า ตัว ICONV มัน On Top จากตัว GCONV ที่สามารถพัฒนาให้รองรับ Encoding ใหม่ๆได้ ดังนั้น สรุปได้ว่าจริงๆ แล้วทีม Maintainer ของ Image Rocky / AlmaLinux น่าต้องการ Optimize Image เลยเอาออก แต่ระบบที่เราดูปลายทางยังอยากได้ TIS-620 !!! ยังไงต้องหาทางแก้ โดยมี Step ดังนี้ ลองเอาไฟล์ TIS-620.so มา build cache ของ gconv-modules ขั้นตอนการ build cache ของ gconv-modules ที่มี TIS-620 มีดังนี้ สำเร็จครับ ตัว TIS-620 โผล่ขึ้นมาครับ Next Step แต่น่าจะต้องลุ้นต่อไปว่าจะได้ย้าย Base Image ไหม จากข่าว Red Hat เลิกเปิดซอร์สโค้ด RHEL ต่อเว็บสาธารณะ ต้องล็อกอินบัญชีลูกค้าเท่านั้น | Blognone ครับ Git Repo: pingkunga/make-iconv-support-tis-620 (github.com) Reference

Code Coverage คือ อะไร และสำคัญยังไง ?

ช่วงนี้พยายามจะดันให้ทุกคนในบริษัทเขียน Test แบบ (Automate) มันมีคำถามว่า แล้วเราจะรู้ได้ยังไง ว่า Test ที่เขียนไปมันมีคุณค่า ไม่ใช่ Test เข้าไป execute ที่ code จุดเดิมซ้ำๆ เลยเป็นที่มาของ Blog นี้ครับ โดยจะมีหัวข้อย่อยๆ ดังนี้ Code Coverage คือ อะไร ? KEY: Code Coverage มันบอกว่าเราเข้าใจ Code ที่เขียนมากแค่ไหน จากตัว Testแต่ Code ที่เขียนมา มันจะถูกต้องตาม Business ไหน มันอีกเรื่องนะ เราดู Coverage ยังไง ? Code Coverage Type ก่อนที่เราจะมาจัดกลุ่มจาก Code หยิบยับมากมาย ถ้าใครเรียนสาย SE จะมีการแปลง Code เหล่านั้นออกมาเป็น Graph ซึ่งมีซื่อเรียกว่า Control-Flow Graph เอา Code บรรทัดนั้นๆ มาแปลงเป็น Node ของ Graph ตามตัวอย่างด้านล่าง หลังจากพอเข้าใจเรื่อง Control-Flow Graph มาดูกันว่าในสาย SE เข้าจัด Coverage กันแบบไหนบ้างครับ – Statement Coverage (Line Coverage) – Branch Coverage – Condition Coverage a < b c > 10 true false false true false false true true…

ลองใช้ Headless Chrome ทำ ScreenShot

เรื่องก็มีอยู่ว่า Project นึง คนส่วนใหญ่ไม่ค่อยยอมทำ Test บางทีบอกว่า Coverage Report มันเปิดยาก / ตัวเค้าเองไม่รู้ว่าตอนนี้ Coverage มันลดลง แล้วต้องมาทำ Test เพิ่ม เป็นต้น ผมเลยมีไอเดียเลยว่าเดี๋ยวจะส่งตัว Report Coverage Summary ไปให้ โดยตอนนี้ใช้ Tools reportgenerator.io หลังจากที่มัน Generate เสร็จแล้ว มันจะได้ HTML Report หน้าตาสวยงามครับ ตามรูป จากหน้าตานี้แหละ ผมได้มี Idea ว่าจะหาทาง Capture Coverage Status ตอนนี้ แล้วส่งเข้า Line Notify ครับ แล้วทีนี้การ Capture ดูมา 2 วิธีครับ ลองใช้ Chrome Headless ทำ Screenshot จากที่เกริ่นไปแล้ว ตัว Google Chrome มี headless mode ทำให้เราเรียกผ่านเว็บ จาก command line ได้เลย โดยมี option ที่สำหรับทำ Screenshot ลองเรียกใช้งานดูครับ ทำให้เป็น PowerShell นิดนึง ผลลัพธ์ที่ได้ จากนั้น Script ทีข้างต้น ไปใส่ใน CI Tools อย่าง GitLab / Jenkins ได้เลยครับ นอกจากทำ Screen Shot แล้ว ตัว Chrome headless มันยังมี Option อื่นๆอีกครับ อาทิ เช่น แล้วตัว…

มาฟังงาน Agile Thailand 2023 #ATH2023

งานวันนี้จัดที่ True Digital Park พองานจัดไกลอยู่เลยต้องวางแผนการเดินทางครับ จากสายใต้ใหม่ ถ้านั่งรถ 511 ทางด่วน จะมาไวมาก เลยออกมาดักรอ ได้รถตอน 06:52 และถึงที่ True Digital Park ตอน 08:00 และก็ผมไม่หลงแบบรอบที่แล้วและครับ ที่จำ True Digital Park เป็นที่เดียวกับ Bitec 555 งานนี้จัดที่ True Digital Park (west) นะครับ ชั้น2 คิดว่าน่าจะเป็น Zone ที่น่าจะทำมาใหม่นะ พอมาถึงเจอที่จัดงานเลยครับ ลงทะเบียน รับของ และนั่งทำ ChaiyoGCP#3 ไปสักพักรองานเปิดครับ ตอน 09:00 ซึ่งพอถึงเวลามีเปิดงานเล็กน้อย และยังคง Concept เดิมของงาน โดยเป็นงาน งานปีนี้เป็น Theme Business + Develop work together โดยตั๋วมีแจกเป็นรอบๆ นี่ไปกดทันตอนวิ่งพอดี สำหรับหัวข้อในงานที่ผมฟังๆ มาจะมีดังนี้ (เลือกแบบที่เดินน้อยสุด ปวดหลัง 555 แบกคอมมาแก้ Build Pipeline) AXONS Talk (คุณ​สรรเสริญ สมัยสุต) Software ที่ได้มาแพงสุด Software ที่ไม่มีคนใช้งาน ต้องมอง Software มีชีวิตต้องปรับไปตามเวลาได้ ชวนคุย Agile for business squads by Kris KBANK Agile มาใช้ใน KBANK นะ เพราะส่วน IT โยกไปอยู่ใน KBTG หมดแล้ว การเริ่ม Agile ปล่อยให้ทีมโตทำยังไง – Team…