Tag dotnet

Optimize Container image size

Container ships

จาก Blog ตอนก่อนที่ไปพบว่า docker image มีขนาดใหญ่มาก และถ้าปล่อยไปนานๆ ไม่น่าจะดีแน่นๆ หลังจากแก้ปัญหาเรียบร้อยไป ผมขอสรุป Step การ Optimize Docker image ครับ //ดองไปหลายเดือนกว่าจะเขียนจนจบได้ Best Practice – Use Minimal Base Images พยายามเลือกใช้ Base Image ที่เล็กที่สุด และน่าเชื่อถือด้วยครับ ส่วนใหญ่จะเป็นพวกตระกูล ข้อสังเกตุ – Minimize the Number of Layers การ Run Command…

บันทึกการปรับ format data ที่ใช้รับส่งผ่าน TCP จาก BinaryFormatter มาเป็น JSON แทน

เรื่องมีอยู่ว่ามี Code เก่าอยู่ชุดนึงที่ใช้ TCPClient+TcpListener ส่ง Data ระหว่าง App กัน โดยก่อนจะส่งใช้ตัว BinaryWriter + BinaryFormatter อย่างที่หลายคนน่าจะทราบกันตัว BinaryFormatter จะถูกเอาออกใน .NET8 ถาวร เนื่องจากเรื่องของความปลอดภัย ตอนนี้ยังใช้ได้อยู่นะ แต่เจ็บแล้ว ทำทีเดียวให้จบเลยดีกว่า และไม่อยากมาแก้ไขเยอะ เพราะยังมีบางส่วนทียังเป็น .NET 4.7.2 และไป .NET6 ต่อไม่ได้อย่าง VSTO ด้วย ภาพรวมเป็นตามนี้เลยครับ Code เดิม – Client Snippet – Server Snippet…

บันทึกการแก้ไขปัญหา SonarQube Analysis .NET(C#) ทำงานนานน

ต้นเรื่อง ตอนแรกไปซนดู Monitor ของ VM แต่ละตัว แล้วพบว่าทำไม VM ที่มี SonarQube Docker ใช้ CPU / RAM นานปิดปกติ เลยเข้าไปตรวจสอบข้างใน SonarQube พบว่า background analysis task ทำงานนานมากกก ทำไมมันใช้เวลาเพิ่มขึ้นขนาดนั้นนนนนน สิ่งที่แรกสงสัยเลย Size ของ Code ที่เข้ามาเพิ่มครับ ตัว SonarQube มันจะใช้เวลาตรวจตามไฟล์ใหม่ที่ส่งเข้ามาครับ ตอนนี้ลองเข้าไปที่ Measures > Size > New Lines โอ้วเจอไฟล์แปลกที่…

[VS2022] แก้ไขปัญหา There is no project properties provider for “Persistence = ProjectFileWithInterceptionViaSnapshot”. Projects are not loaded

ช่วงนี้มีเคสให้ไปช่วยตรวจสอบบ่อยๆครับ ล่าสุดที่เจอ Error ตามรูปด้านบนเลยครับ มี output log ประมาณนี้ครับ Solution จากที่ลองหาใน Stackoverflow แนะนำให้ลอง Repair ตัว Visual Studio ก่อนครับ แต่ลองแล้วไม่ได้ 555 พอลองมาไล่ดู Log มีข้อมูลแนะนำที่น่าสนใจอันนึงครับ The project file cannot be opened. Unable to locate the .NET SDK. Check that it is installed, your…

dockerfile สำหรับ .NET6 + DB2

จดไว้ก่อน เพราะ documentation ของ DB2 ในส่วนนี้มันไม่ค่อยดีครับ และตัว Library ของมันเอง มีความ Unique ด้วยตัวมันเองอีกครับ ใช้ alpine ไม่ได้นะ DB2 Environment Full dockerfile ตรง Reference บางอันดูไม่เกี่ยวกับ .NET นะ แต่มันมีอธิบายเรื่อง DB2 ผมเลยเอามา Reference ด้วยนะ Reference

dockerfile สำหรับ jenkins ที่ build . NET Core3 / .NET6

หลังจากวันเจ้าตาก65 ตัดสินใจ Merge Code เข้าเส้นหลักไปแล้ว ขอแปะ dockerfile ของ Jenkins ที่ใช้ build .NET Core3 และ .NET6 เผื่อต้องกลับหาใหม่ครับ .NET Core3 .NET6 อ๋อ หลายคนอาจจะสงสัยว่าทำไมไม่ใช้งาน Multi-Stage Build ไปเลย Storage มันไม่พอครับ เวลามีหลายๆ Build เพราะตอน Build มัน Pull Image Build ลงมาชุดนึง + Restore Dependency เลยทำ multi-Stage…

[C#] Attaching an event handler

.NET Core

Blog ตอนนี้ มาจากตอน Review Code แล้วผมพลาดครับ ลองดู Code ได้นะครับ จาก Code ด้านบน ผมจำผิดจริงๆ ผมมองว่า MyEvent_Handle1 ถูกแทนทีด้วย MyEvent_Handle2 เลยทวงตอน Review ไปว่า Logic ของ MyEvent_Handle1 จะหายไปครับ แต่มีโดนแย้งมา เลยมาลองทำ Snippet ลองดีกว่าครับ จริงด้วยครับ ทำงานทั้งคู่เลย เพราะมัน subscribe MyEvent_Handle1 และ MyEvent_Handle2 เรียบร้อยแล้วครับ ตาม ครับ ถ้าลองเกรียนๆ…

[.NET] dotnet pack -c release เพิ่ม .pdb ลงในเข้าไปใน Package

blur close up code computer

จาก Blog ตอนก่อน ได้มีการอธิบายการทำ Nuget Package ใช้ในบริษัทกันไปครับ และสอน Debug Nuget Package ที่ Build ไปครับ หลังจากที่ Build Server ได้ Update Visual Studio เป็นเวอร์ชัน 16.10.3 พบว่าคำสั่ง dotnet pack มีปัญหาครับ ของเดิม เมื่อกำหนด –include-source –include-symbols แม้ว่า Build Dll แบบ Release ตัวไฟล์ Symbol (.pdb) และ…

[.NET] ทำ NuGet ใช้เองภายในองค์กร

หลายคนอาจจะสงสัยในเมื่อ Source Code เป็นของเราเองทำไมต้องทำเป็น Nuget Package ด้วยหละ มันมีเหตุผลของมัน ดังนี้ครับ จัดการได้ง่าย และสะดวกแก่การติดตาม เพราะ แยกเป็นเวอร์ชันอย่างบชัดเจนครับ ติดตั้งได้ง่าย แทนที่จะเอาไฟล์ .dll มาอ้างอิงใน Project หลัก เราสามารถอ้างอิงตัว Nuget Package แทนครับ และเมื่อมีเวอร์ชันใหม่ เราสามารถใช้ Nuget Package Manager จัดการ Update เวอร์ชันได้ทั้ง Solution เลยครับ แยกส่วน ทำให้สามารถทดสอบในระดับย่อย (Unit Test) ได้ง่ายครับ ถ้าจะทำ NuGet…