Tag C#

[.NET] DevExpress เมื่อ Export ข้อมูลใน Grid มาเป็นไฟล์ Excel คอมม่า ( , ) หาย และไม่แสดงเป็นตัวเลข

สำหรับปัญหานี้เป็นปัญหาที่ท้าทาย และหาข้อสาเหตุของปัญหายากมากครับ เนื่องจากที่บริษัทได้ Upgrade ตัว DevExpress แบบก้าวกระโดดครับ ของเดิมเวอร์ชัน 13.1 ชองใหม่เวอร์ชัน 20.2 ห่างกันตั้ง 7 เวอร์ชัน นอกจาก API ที่ถูกยกเลิก(Deprecate) แล้ว มันยังมี API ที่เพิ่มเติมเข้ามา ซึ่งมันไม่ได้บอกตอน Compile หรือตัว Tool ที่ Check Comparability ไม่สามารถตรวจสอบได้ครอบคลุมครับจึงเป็นที่มาของปัญหา เมื่อ Export ข้อมูลใน Grid มาเป็นไฟล์ Excel คอมม่า ( , ) หาย…

[.NET] แก้ปัญหา Build แล้ว Error Your project file doesn’t list ‘win’ as a “RuntimeIdentifier”

blur close up code computer

Blog ตอนนี้ยังเป็น Blog ที่สรุปหลังปรับ Framework ขององค์กรครับ จาก Blog ก่อนหน้าที่ Error “The build is configured to run SonarQube analysis but the SonarQube analysis targets could not be located” คราวนี้มาเจอ Error ใหม่ ที่มันกวนตีนกว่าเดิมครับ เพราะ มันเป็นบ้าง ไม่เป็นบ้าง และถ้า Build ผ่านตัว Visual Studio ไม่เจอนะ…

[.NET] แก้ปัญหา Build แล้ว Error The build is configured to run SonarQube analysis

blur close up code computer

หลังจากปรับ Framework ของบริษัทให้เป็น .NET Standard เรียบร้อยแล้ว เมื่อทดสอบ Build ผ่านตัว Jenkins เกิด Error ดังนี้ The build is configured to run SonarQube analysis but the SonarQube analysis targets could not be located ภาพรวมของ SonarQube Analysis นะครับ ต้องเข้าใจก่อนนะครับ ว่าการวิเคราะห์ Code ของ SonarQube จริงๆ…

[C#] GetHashCode() ไม่เท่ากับ Equals() นะ !!!

black and white piano keys

ช่วงนี้เห็น Rule นึงที่ SonarQube มันแจ้งเตือนมาครับ “Equals(Object)” and “GetHashCode()” should be overridden in pairs ตัว Message มันหมายความว่าอย่างไรกันนะ หลังจากลองดูคำอธิบายอันนี้จะเป็นในมุมของ Security ครับ เค้าตั้งสมมติฐานว่า ถ้า Object A และ B เมื่อเรียก Equals() แล้ว ถ้าเอา Object A และ B เรียกใช้ GetHashCode() มันควรจะได้ผลลัพธ์ที่เหมือนกันครับ เอาง่ายๆ ถ้า A และ…

[C#] ถ้า GroupBy โดยใช้หลาย Property แล้วห้ามใช้ตัวแปรชนิด var หละ

C# Logo

จาก Blog ตอนก่อนหน้า [C#] ถ้า GroupBy แล้วห้ามใช้ตัวแปรชนิด var มารับหละ ? ตัวอย่างที่ผมได้ยกไปเป็นการ Group By โดยใช้เพียง 1 Property เท่านั้นครับ แต่ใช้ชีวิตจริง มีการใช้งานมากกว่า 1 Property ครับ ยกตัวอย่าง เช่น ก่อนปรับ : มีการใช้งาน 2 Property ครับ ได้แก่ ValueDate และ CashSecurityGroupCode ซึ่งมีชนิดข้อมูลเป็น DateTime และ String ตามลำดับครับ ถ้าเราจะเล่นมุกเดิมใน…

[C#] ถ้า GroupBy แล้วห้ามใช้ตัวแปรชนิด var มารับหละ ?

หลายองค์กรมีตัว Coding Standard เพื่อเป็นแนวทางในการเขียน Code ให้มีระเบียบ ไปในทีศทางเดียวกันครับ ใครๆก็สามารถมาอ่าน Code นั้นได้ครับ แล้วที่นี้ ถ้ามีการประกาศว่า ถ้ามี List<Object> แล้ว GroupBy ห้ามใช้ตัวแปรขนิด var มารับ จะทำอย่างไรหละ ? อ้าว Copy Pattern จาก Stack Overflow มา ทำอย่างไรดี !!! ทุกปัญหามีทางแก้ไขได้ครับ จากโจทย์ ถ้ามี List<Object> แล้ว GroupBy ห้ามใช้ตัวแปรขนิด var มารับ ลองมาดูตัวอย่าง…

[.NET] มา Debug ตัว NuGet Package กันครับ

C# Logo

หลังจากบทความก่อนหน้าที่ได้สอนว่าทำอย่างไรถึงได้ NuGet Package มาใช้งานกันเอง หรือ ใช้ภายในองค์กรแล้วครับ คราวนี้ผมมาสอนว่าถ้ามันเกิดปัญหาจริงๆ แล้วเราจะต้องเข้ามา Debug ตัว NuGet Package ที่ใช้ต้องทำอย่างไรบ้างครับ ทำไมต้อง Debug ตัว NuGet Package เพราะ Bug อาจจะเกิดจาก Nuget Package เอง เพราะต้องการศึกษาการทำงานของ Library เอามาใช้ Project ในรูปแบบ Nuget Package มารู้จักกันก่อนว่า NuGet Package แบบไหนถึงจะ Debug ได้ ต้องมีไฟล์ Symbol ซึ่งถูกจัดเก็บในรูปแบบของไฟล์…

[PowerShell] มาทำ Line Notify แจ้งข้อมูลคุณภาพของ Code กันดีกว่าครับ

powershell

จริงๆต้องบอกว่าทุกปัญหามันเริ่มต้นจากความขี้เกียจแหละครับ และช่วงหลังๆสำหรับหน่วยงานต่างๆ การตรวจสอบคุณภาพของ Source Code ตอนนี้มันถูกจัดไปเป็นเงื่อนไขหนึ่งใน TOR แล้วครับ มันเลยเป็นที่มาของ Blog นี้ครับ หลังจากที่ผมได้ตั้ง SonarQube เพื่อมาตรวจสอบคุณภาพ Code กันแล้ว ปัญหาที่พบ ไอ้ที่มันแหกกฏไปต้องทำอย่างไร ? ทำใจ อยู่ที่เรียนรู้ อยู่ที่ยอมรับมัน และจัดทีมมาแก้ไขมันครับ ตรงนี้ต้องมี Automate Test ประกบเสมอนะครับ แล้วของใหม่ที่กำลังเพิ่มขึ้นเรื่อยจะคุมอย่างไร แจ้งทีม ทำ Line Notify ขึ้นมาครับ เป็นที่มาของ Blog นี้เลยครับ ทำไมต้องมี Line Notify ในเรื่องของ…

[C#] มาดูกันว่า User Remote เข้ามาเปิดใช้ Application จากเครื่องไหน

C# Logo

ก่อนอื่นมาดูปัญหากันก่อนครับ ว่าทำไมถึงต้องไปไล่ดูว่า มีการ Remote จากเครื่อง User เพื่อมาใช้งาน Application ที่ติดตั้งบนเครื่อง Server หรือป่าว ? เพราะ IT ของลูกค้า อยากรู้ว่ามีใครใช้งานในระบบบ้าง แล้วใช้งานที่เครื่องไหน แต่บังเอิญว่ารอบนี้ ตัว Application ที่พัฒนาถูกไปติดตั้งบรเครื่อง Windows Server พอ User Remote เข้ามาใช้งาน ปรากฏว่าระบบลง Log และ Active User มาจากเครื่อง Serer ที่เป็น Windows Server ทั้งหมดเลยครับ โดยคำสั่ง C# ที่ใช้ดึงว่าเครื่องที่…

[C#] ตั้งชื่อเล่นของ Class (Alias) ให้เรียกใช้งานได้ง่าย

Reference: https://pixabay.com/en/colored-pencils-colour-pencils-star-374771/

เวลาเราพัฒนาระบบที่มันซับซ้อนๆมากๆ ปัญหาที่ปวดหัวที่สุดเลย คือ การตั้งชื่อ บางทีชื่อตัวแปรยาวๆ ถ้าย่อไป อาจจะงงได้ Dev เลยใช้ชื่อเต็มไป พอลองเอาตัวแปรเหล่านี้มาใช้ มันดูเกะกะรกตามากครับ กว่าจะรู้ว่า ตั้งชื่อเล่นของ Class (Alias) ให้เรียกใช้งานได้ง่ายกันดีกว่า โดย C# มันมีวิธีในการการตั้งชื่อเล่น(Alias) กันนะ มาดู Code เดิมกันดีกว่า ถ้าสังเกตุใน Code พบว่า RebalanceProcessExtensions.Col_OriginalNAV ชื่อ Class RebalanceProcessExtensions มันยาวมากๆ ครับ ถ้าทำไปนานๆ Code ตรึมครับ ดูยาก ที่นี้มาลองใช้ตัวช่วยกันดีกว่า ลองใช้ Class Alias โดยการย่อชื่อ…