Category dotnet

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

powershell

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

[PowerShell] Convert Hyper-V .VHD เป็น .VHDX และ Optimize ขนาดของ Disk

สำหรับการแปลง VHD ไปเป็น VHDX และทำการลดขนาดของ Disk (Shink เป็นไปได้แนะนำให้ทำใน Mode Offine ครับ) โดยใน ฺBlog นี้สอนแบบ Offline ด้วยโดยมีขั้นตอน ดังนี้ จัดการไฟล์ VM ของ VHD เดิมให้เรียยร้อยก่อน อาทิ เช่น ลบไฟล์ที่ไม่จำเป็น ทำการ Disk Clear พื้นที่ Disk CD เข้าไป Path ที่มีไฟล์ vhd แปลงไฟล์ VHD ไปเป็น VHDX ด้วยคำสั่ง…

[PowerShell] แก้ไขไฟล์ App.config ใน Jenkins Pipeline

powershell

หลังจากทำมี Tools ที่ กำหนดค่าที่เดียว แต่สามารถใช้งานไปได้ทุก Application แล้ว (Universal Configuration) แต่ทำไมคนอื่นถึงไม่ค่อยใช้งานกัน เราก็ถึงบ้างอ้อทันที อ๋อขี้เกียจไปแก้ app.config หรือ web.config นั้นเอง ด้วยความที่ระบบมันมี Base 3 สำหรับลูกค้า 3 กลุ่ม แต่ใช้ Code ชุดเดียวกันนะครับ มันจึงต้องมีการเตรียมค่าตั้งต้นกันก่อนนั้นเองครับ อาทิ เช่น Base AMC / INS ตัว Application อ่านค่าจาก HKEY_LOCALMACHINE Base TSY ตัว Application…

[VS] Uninstall Visual Studio 2017

อยากลง Visual Studio 2019 แต่ติดว่าเครื่องเก่ามีเวอรชัน 2017 อยู่ อยากจะล้างให้สะอาดสามารถทำตามขั้นตอนได้ ดังนี้ครับ เปิด Command Line แบบ Administrator cd เข้าไปที่ Path “C:\Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\layout\” run installcleanup.exe ผลที่ได้ โดยตัว Tools ของ MS จะช่วย Delete ข้อมูลของ Visual Studio โดยมีรายละเอียดการลบ ดังนี้ C:\ProgramData\Microsoft\VisualStudio\15.0 C:\ProgramData\Microsoft\VisualStudio\Packages %appdata%\Microsoft\VisualStudio\15.0* %appdata%\Microsoft\VisualStudio\Packages…

[C#] DTO/Mapper Class Example

C# Logo

DTO คือ อะไร? DTO คือ Data Transfer Object พูดง่าย ๆ ก็คือเป็น object ที่ใช้ในการส่ง data กันในระบบครับ นอกจากนี้แล้ว การใช้ DTO ยังเป็นการ Limit ข้อมูล หรือมองว่าเป็นการกำหนด Pattern ให้กับ Request / Response กับระบบ และยังป้องกัน Over-posting Attack (คนร้ายเดา Field ได้ถูก แล้วลองส่ง Request เข้ามา) ถ้าไม่มี DTO ดักไว้…

[C#] ให้ Log4net เขียน Log แยกตาม Process Id ของ Application

Ref https://pixabay.com/th/การวิเคราะห์-ข้อมูล-นวัตกรรม-3088958/

จาก Blog ตอนก่อนของ Site ได้ Deploy ตัว .Net App ไว้ที่ Windows Server ไว้ที่ Drive C: แล้วให้ User Remote เข้ามาใช้งานครับ แต่พอเวลามีปัญหามันดัน Write Log ไม่ได้ครับ เพราะ Application ทุกตัวที่ที่รันขึ้นมา ดันเขียน Log ลงไปที่ Path และไฟล์ชื่อเดียวกันครับ ทำให้ User สามารถเปิดโปรแกรมใช้งานได้แค่ 1 Instance เท่านั้นครับ เมื่อทาง Dev ต้องการหาสาเหตุของ…

[C#] ทำให้การ Debug เป็นเรื่องง่าย โดยการใช้ toString()

C# Logo

เคยสังเกตุบ้างไหม ว่าเวลาที่ต้องการดู Data ที่เก็บอยู่ใน Object มันข่างยากลำบากเหลือเกิน ถ้าเป็น List แล้วเนี่ย ถึงกับตายได้เลย จากรูปด้านล่าง ถ้ามีใน List มี 18 ตัว ถ้าอยากหา Object ที่สนใจต้องกดไล่ดูมากที่สุดถึง 18 ครั้ง จะมาน่ั่งไล่กดเปิดดูที่ละอันมันก็ ไม่คุ้มนะ เปลืองแรงไป ดังรูป แล้วมันมี Trick อะไรช่วยไหม ตอบเลยว่ามีครับ ใช้ toString() สิ โดยเพิ่มเข้าไปที่ Object ของเราเลย อย่างของผม ลอง Complie แล้ว Debug…

[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 โดยการย่อชื่อ…

[Dapper] Query Parent-Child อย่างไร ?

หลังจากลองทำ Framework ที่เอา Dapper เป็น ORM ครับ ตอนนี้ก็ติดปัญหาว่า เราจะดึงข้อมูลที่อยู่ในรูปแบบ Parent-Child กันอย่างไรครับ โดยผมมีรายละเอียด ดังนี้ โจทย์ที่ผมต้องการ คือ เวลา Query ข้อมูลจาก Table Corporateaction แล้ว ให้มันดึงข้อมูลของ Table ลูก CorporateDetail ขึ้นมาให้หมด โดยการ Query เพียงคร้งเดียวเท่านั้นครับ POCO Class ของผม มีโครงคร่าวๆ ดังนี้ครับ Query ที่ผมเขียนไว้ Code ในส่วนของ Data Access…