Tag c sharp

[C#] มาใช้ HtmlAgilityPack ดึงข้อมูลจากเว็บ

ตอนที่ผมเขียน Blog น่าจะเป็นช่วงปลายปี 2016 นะครับ พอดีวันนี้เหลือเวลาอีก 2-3 ชั่วโมงจะเลิกงาน ผมเลยลองทำ Project ง่ายๆ ดูครับ โดยดึงข้อมูลจากเว็บ เกี่ยวกับข้อมูลพื้นฐานของหุ้นนะครับ ก่อนที่จะทำ สิ่งที่ตต้องทำลอง Research Library ดูก่อนครับ ว่ามีอะไรช่วยได้ไหม เท่าที่ดูมี Library ที่เหมาะสม ดังนี้ครับ ถึงเวลาเริ่มทำ ลองมาดูวิธีใช้ HtmlAgilityPack ดึงกว่า ลองใช้งานจริง Source Code สรุปสิ่งที่ได้ทำ

[C#] Guidelines for Exception Handling

หลังจากเขียน Code ในการทำงานมาหลายปี พอดีเจอบทความนึงที่น่าสนใจ ผมเลยทำความเข้าใจ และสรุป เกี่ยวกับ Exception ดังนี้ครับ Exception คือ อะไร ? Exception คือ การแจ้งข้อมูลข้อผิดพลาดที่เกิดขึ้น จากการทำงานของระบบครับ มันมีกลุ่มที่เราสามารถจัดการเองได้ ใช้ Try Catch เข้าช่วย หรือจัดการไม่ได้เลยพวกกลุ่ม Error Guidelines for Exception Handling – Catch only the exceptions that you can handle. เวลาเขียน Code ใน…

[.NET] มาทำให้ Parallel.ForEach Debug ง่ายกันเถอะ

หลังจากหายไปพักนึง หลังากลองตบตีกพวก Thread มาสักพักใหญ่แล้ว วันนี้ขอประเดิม Blog เลยและกันครับ สำหรับตัว Microsoft .Net Framework ถ้าใครได้ใช้ตั้งแต่ 4.0 เป็นต้นไป มันมีชุดคำสั่งสำหรับทำงานแบบ Parallel ด้วยครับ ซึ่งหนึ่งในนั้น คือ Parallel.ForEach นั้นเองครับ แล้ว Parallel.ForEach คือ อะไร มันเหมือน ForEach แหละ แต่ต่างกันที่ ForEach ทำคนเดียว แต่ Parallel.ForEach ช่วยกันทำครับ มันก็ดีช่วงกันทำนี่ แล้วมันมีปัญหาอะไร ก็ตอนมี Bug ไงครับ ยิ่งเป็น Runtime Exception แล้ว จับได้ยากครับ เพราะ Parallel.ForEach…

[.NET] ประกาศให้โลกรู้ว่า Method นี้ Class นั้น Obsolete ตกยุคแล้ว !!!

Update 2024-12-10จาก Code เล็กๆ เมื่อวันเวลาผ่านไป มันก็เติบโตขึ้น ผ่านการตัดต่อพันธุกรรมมาอย่างโชกโชน พร้อมกับภาระหน้าที่อันยิ่งใหญ่ แต่บาง Class บาง Method มันไม่ตอบโจทย์ทางธุรกิจแล้ว มันควรจะถูกกำจัดไปซะ แต่ Code มันบางส่วนมันใช้อยู่ เราจะทำอย่างไร เพื่อให้ทีม Develop ที่พัฒนาด้วยกัน เปลี่ยนไปเรียกใช้ Class หรือ Method ใหม่แทน !!! ทางแรก เราอาจจะประกาศแจ้งให้ในทีมทราบ แต่บางครั้งอาจจะมีหลงลืมบ้าง เพื่อป้องกันปัญหาระยะยาวทำแบบ Java ดีกว่า ตัว Java มันมีบอกว่า Code ส่วนไหนที่เลิกใช้ (deprecated) ไปแล้วครับ โดยในตัว…

[C#] ทำไม int / int แล้วไม่มีทศนิยมหละ

พอดีผมได้ Port Code ในส่วน Business Logic อันนึงจาก VB6 มาเป็ C# แทน เพราะดูแล้วเขียนใหม่น่าจะรีด Performance ได้ดีกว่าครับ หลังจากผมใช้เวลาไปประมาณ 1 เดือน ในการยก Code ขึ้นมา Complile ผ่านนะ แต่ Run แล้ว ประกอบกับ UnitTest แล้วผลลัพธ์ผิด พอลอง Debug เข้าไปดูแล้วพบว่า ถึงตอนนี้เราต้องไปดูที่ C# Specification ครับ โดยตัวภาษา C# แบ่งเรื่อง Division operator เป็น 3 กลุ่มครับ…

[C#] พัฒนาระบบได้ โดยไม่จำเป็นต้องลง DevExpress

DevExpress เป็น Tools ที่ช่วยให้การพัฒนาฝั่ง UI ง่ายๆครับ แต่มันแพง ถ้าทีมเรามี Dev กันหลายๆคน จำเป็นไหมที่ต้องลง DevExpress หมดทุกเครื่อง คำตอบ คือ ไม่จำเป็นครับ (ไม่ใช่ให้ไปลงเถื่อนนะครับ) แต่เราสามารถแก้ไขปรับเปลี่ยนนิดหน่อย เพื่อให้ Dev คนอื่นๆที่ไม่ได้ต้องมาแก้ UI เช่น จัดการกับ Business Logic หรือ จัดการกับ Database สามารถทำงานได้ครับ โดยการแก้ไฟล์ licenses.licx ให้เป็นไฟล์เปล่าๆ ใน Project Main ของเราครับ

[VSTO] เปิด Feature Debug Mode ให้กับตัว Excel Add-in (VSTO) ของเรา

เวลาเราทำตัว Add-in สำหรับ Microsoft Office นะครับ บ่อยครั้งเลย ที่เราเอาตัวที่ Build เรียบร้อยแล้ว ไป Deploy ที่เครื่อง User แต่ปรากฏว่า มันเงียบ….. แล้วตรูจะไปต่อยังไงเนี่ยยย วันนี้ผมมีทริปในการ Set ค่า เพื่อเปิด Debug Mode ของ VSTO ครับ Note: สำหรับ KM นี้ใช้กับ .NET Framework เท่านั้นครับ Reference

[VSTO] Registry Key ที่เกี่ยวข้องกับ VSTO

สำหรับตอนนำ VSTO Office Add-in ไปติดตั้ง หากลงผ่านตัว Setup แล้วระบบสร้างตัว Registry ที่เกี่ยวข้อง Registry ที่ Path ดังนี้ครับ สำหรับ Office ทุกตัวยกเว้น Visio ครับ สำหรับตัว Visio นะครับ เครื่องที่ไม่มี ก็ไม่ต้องตกใจนะครับ เพียงแค่นำ Script Registry ชุดนี้ไป Save เป้น .reg แก้ค่าที่เกี่ยวข้อง และรันมันครับ

[VSTO] วิธีแก้ปัญหาเมื่อลง Office Add inไม่ได้

สำหรับ Developer ที่ทำส่วนเสริมให้กับ Office หลายคนอาจจะเข้าใจว่ามีแต่ตัว VBA อย่างเดียวนะครับ แต่จริงๆแล้วเนี่ย MS Office สามารถให้เราปรับแต่ง Customize เพิ่มความสามารถด้วย .Net Framework ได้เหมือนกันนะครับ โดยเรียกรวมเป็น Office Add-in ซึ่งเมื่อ Code เสร็จ พอจะนำไปติดตั้งเราต้องลงตัว Visual Studio Tools for Office Runtime (VSTO)  เกริ่นมานานพอควรและ แต่เมื่อนำไปลงทดสอบที่ Site งาน พอดีดันไปเจอเครื่อง Windows 7 เครื่องนึงที่ลงไม่สำเร็จครับ โดยมี Message…

[C#] Shallow Copy กับ Deep Copy

จากบทความตอนที่แล้ว ความแตกต่างระหว่าง Shallow copy กับ Deep copy คราวนี้เรามาลองดูการใช้งานจริงในภาษา C# บ้างนะครับ สำหรับวิธีการ Copy Object ใน C# มีวิธีที่สามารถทำได้ทั้งหมด ดังนี้ Implement Interface ICloneable MemberwiseClone Reflection Serialization (Binary Formatter) Update: 2022 สำหรับวิธีการนี้ ถ้าเป็น .NET Core 5 ไม่สามารถใช้งานได้แล้วนะครับ และถูกเอาออกถาวรใน .NET9Ref: Deserialization risks in use of BinaryFormatter and…