Back to Basic: Fundamental Data Structure in C#

English Version: Back to Basic: Fundamental Data Structure in C# (English Version) สำหรับ Blog นี้ ผมเขียนมาประกอบกับ Talk ที่ลองส่งในงาน .NET Developer Day 2025 – Thailand ครับ โดยแรงบันดาลใจในการเขียนเรื่องนี้ มาจากที่ว่าช่วงเดือนที่แล้วได้เข้าไปช่วยดับไฟ ในส่วนของ Performance Test ซึ่งมันเป็นในส่วน WEB API / WinApp ด้วย โดยสาเหตุที่ทำให้ Process มันช้า เกิดจากการเลือก Data Structure ที่ผิดประเภทมันมีหลายตัวนะ แต่ผมเจอแต่คนใช้ IList<T> / List<T> แทบจะทุกเรื่องเลย ถ้า Data มันเล็กๆมันจะไม่เห็นผลเท่าไหร่ แต่ถ้าข้อมูลมันเพิ่มจากหลักสิบ มาเป็นร้อย หมืน แสน ล้าน มันจะส่งผลได้ชัดเจนเลยครับ ปัญหาที่พบ – Component MoverBox มันตอบสนองช้ามาก เวลาเลือกข้อมูลจำนวนเยอะ MoverBox ตัวที่ช่วยเลือกข้อมูลเยอะ โดยทำมาจาก DevExpress นี้แหละ มันอยู่มานานและน่าจะเกิน 10 ปีได้ โดยมี – Process ต่างๆ มันกินเวลามาขึ้น อย่างมีนัยสำคัญ เมื่อข้อมูลเพิ่มขึ้น ใน Loop นอกจาก for แล้ว ยังมี Where หรือ FirstOrDefault หาใน List อีก ตัวอย่างจะประมาณนี้ Recap Data Structure ไม่แน่ใจว่าคนอื่นเจอเหมือนกันไหม แต่ผมเจอคนที่ใช้ List แทน Data Structure ทุกอย่างเลย…

เอา Secret ที่ลืมไว้ออกจาก Code ด้วย BFG Repo-Cleaner

หลังจากที่ได้ Review Code พบว่าบางส่วนมันหลุดไป แล้วมี Endpoint + API Key ติดไปด้วย เลยต้องรีบเอาออกไป ถ้าหลุดไปเดี๋ยวยาว ลองมาปัดฝุ่นดู เราเคยใช้ BFG Repo-Cleaner เมื่อหลายปีก่อนลบพวกนี้ในงานอยู่แล้ว แต่มันจดๆไว้ใน Notion รอบนี้เลย ย้ายมาลง Blog เลยดีกว่า ทำไมต้องใช้ BFG Repo-Cleaner สั่่นๆ Simple แล้วตัว Tools นี้มันมี Feature พวกนี้มาให้เลย ถ้าใช้ git-filter repo น่าจะท่ายากไปนะ ถ้าพร้อมแล้วไป Download BFG Repo-Cleaner และติดตั้ง Java 8++ กันได้เลย คอมผมใช้ Java 21 ทำงานได้นะ ลุยกันเลย ถ้าเราๆไม่ใส่ ==>คำที่ต้องการแทนที มันจะแทนด้วยคำว่า ***REMOVE**

Data Sci Boot Camp Batch#11: Essential Statistics #1

Blog นี้มาจดสรุปที่เรียนมาของแอดทอยอีก เช่น เคยครับ โดยมีหัวข้อตามนี้ Why Stats Stats วิชาที่มีมานานหลายร้อยปี โดยต้องรู้ 💡Stats – The way we try to understand the world Stats ศาสตร์การหา small data เพื่อมาตอบปัญหาที่ใช้กับ population ทั้งหมดได้ (Big Data) ที่ฟังมาผมชอบอีกตัวอย่าง Stats การทำอาหาร แล้วเราช้อนไปคน และตักชึ้นมาชิม (Sample) > ตอบว่าทั้งหม้อ OK เหมือนกัน นอกจากนี้ลองนึกการซื้อหุ้น เราไม่รู้ข้อมูลทั้งหมดเหมือนกัน ต้อง Sampling งบ เข้าไปดูธุรกิจบางส่วน ใช้ Product / Service มันเป็นไม่ได้ใช้ทั้งหมดนะและเรื่องการหาแฟนก็เข่นกัน เจ็บ โสดดอยู่ 555 💡Stats – The way to make better decisions จาก sample เรารู้ะไรบ้าง mean / sd / min max range / normalize เป็น scale population > -sampling- > sample จาก population จนได้ sample มีหลักการเลือก 2 กลุ่มใหญ่ๆ – Probability Sampling 📌Simple Random Sampling – ทุกคนมีโอกาศจะโดนสุ่มเท่ากัน ถ้ามีลูกบอลเลข 1 – 10 มีโอกาศ…

บันทึกงาน Season of AI – Thailand | Season 3 – Best of AI at Ignite

สำหรับงานวันนี้จัดที่ Office Microsoft ตึก One Bangkok มา Check-in Office ใหม่เลย ถ้านั่ง MRT มาลงที่สถานีลุมพินี เดินขึ้นมา Tower 4 ได้เลยครับ แต่ผมหลง 555 เดินวนไปวนมาไป Tower 3 ซะงั้น ที่รู้เพราะขากลับ ลง 2 บันไดเลื่อนถึง MRT เลย งานนี้หลักๆ จะ Recap หัวข้อจากงาน MS Ignite 2024 ที่ผ่านมาครับ + Update As of ข่าวล่าสุดจนถึงเดือนที่จัดงานครับ สำหรับหัวข้อที่จดๆมามี ดังนี้คร้าบ A guide to building tomorrow’s AI Solutions Speaker Teerasej Jiraphatchandej ตอนนี้ AI รอบตัวเราทั้ง App / Service หรือ Bundle ลงไปใน OS เลย มันเริ่มตั้งแต่ ChatGPT ปรากฏขึ้นมา 3 ปี ปลายปี 2022 จากนั้น AI เข้ามาในชีวิตประจำวัน เช่น Email / สรุปประชุม / วางแผนการตลาด / ดู Code เรา ในมุมของ Developer เราน่าจะผ่านยุคของ App มาหลายยุคเลยนะ ตอนนี้ App ที่มี AI – แล้วถ้าอยากสร้างเอง ? 📌 Azure Open AI…

RMarkDown Common PDF Export Error

Error ตอน Export PDF Problem: No LaTeX installation detected ตอน Knit to PDF Solution: Ref: 📍📍Update 2025-03-04 เรื่องภาษาไทยต้องไปแก้ Config ใน RMarkdown 📍📍 ถ้ามีติดภาษาไทยต้องมีเปลี่ยนนิดหน่อยครับ ตัว default ที่เป็น pdflatex ไม่รองรับ unicode ใน RMarkdown เราเติมประมาณนี้ + ลง xelatex Ref: Problem: trying to use CRAN without setting a mirror Solution: Problem: ! LaTeX Error: Unicode character ่ (U+0E48) U+0E48 ไม้เอกครับ Solution: หาให้เจอ แล้วลบทิ้ง

จดๆจาก Thailand Developer Day 2025

สำหรับวันนี้งานจัดที่ SCBX NEXT TECH ที่ Siam Paragon ครับ โดยงานเป็น On-Site แรกของผมในปี 2025 ด้วยครับ โดยหัวข้อที่จดๆมาก็มี ดังนี้ครับ แนะนำงาน FOSSASIA+ Practical Unpractical in Open Source Software Speaker: Kongkeit Khunpanitchote (Maintainer ElysiaJS) หลาย App ที่เราใช้ๆกันอย่าง Discord / VS Code / Postman / Figma ทั้งหมดถูกเขียนด้วย Electron มันเป็น Web นี่แหละที่เอามารันบน Desktop มันเป็น webview End User View ไม่ชอบ มันช้า และกิน RAM 📌Why Design ไม่ว่าจะมุมไหนก็ตาม เราจะมองว่ามันวิธีการที่ดีนะ Practical แต่ทว่าวิธีการที่มองว่า Practical มันอาจจะใช้ไม่ได้กับทุก Case นะ อย่าง เช่น App ที่ใช้ HW สูงๆ อย่าง Blender / Adode Premire 📌ดังนั้น Practical Subjective แต่แบ่งได้ 2 มุม 📌แล้วอะไรคือ Technical Needs Technical Needs – ส่วนที่มัน Common ไม่อยากทำซ้ำ อยากให้ Develop ซึ่งเป็น End User ใช้งานได้ง่ายสะดวก ต้อง minimal footprint 📌ลองมาดู…

Data Sci Boot Camp Batch#11 : Data Visualization

สัปดาห์นี้แอดทอยมีสอน 4 ส่วนครับ หัวข้อใหญ่ๆ ตามนี้เลยครับ แนะนำ replit.com replit เหมือนสมัยสักปี 2016 / 2017 เป็น IDE Online เคยเล็กอยู่ช่วงนีง ในสมัย replit.it แล้วก็ลืมไป ผมเพิ่งจำได้ว่าเคยใช้ เพราะ วันนี้แหละลอง Login แล้วได้เลย ตอนนี้เป็น IDE ที่สมบรูณ์แบบลองเขียน Code ได้เลย และมี AI ด้วยนะ แบบพวก GitHub Copilot เลย Recap Command Line (Linux Base) Data Visualization with R สำหรับตอนนี้สามารถดู Blog R + Data Transformation ได้นะ – Why we need data viz ? – เกณฑ์การเลือก Data Visualization / Charts ปกติมีกราฟหลายแบบ การเลือกใช้ Visualization แอดทอย แนะนำเกณฑ์ไว้ ดังนี้ สำหรับ Lib ที่ใช้แสดงผลจะเป็นตัว ggplot2 โดยที่ 2 บอกว่าทำ 2D ได้นะ ggplot = Grammar of Graphic Plot ก่อนจะใช้ ggplot เราต้องรู้ โพยสรุปย่อ – Histogram (1 Variable / numeric) บอกการกระจายของข้อมูล ตรงนี้จะเห็นว่า เราใส่ทั้ง…

ลองใช้ Custom Fonts (เช่น ภาษาไทย) ใน jsPDF

สำหรับ Blog นี้เคยเขียน Version English ไว้แล้วครับ สามารถไปอ่านได้เลย ถ้าสนใจภาษาไทยอ่านต่อได้ใน Blog นี้ครับ ปกติแล้วเจ้า jsPDF มันจะรองรับ Font 14 ตัวเป็นมาตรฐาน ดังนี้ครับ ถ้าต้องการใช้ font ที่รองรับอยู่แล้ว เราเรียกใช้ method setFont() แต่ถ้าต้องการ font อื่นๆ เช่น Kanit Regular ลองมาทำด้วยกันครับ ลองใช้ Custom Fonts (เช่น ภาษาไทย) ใน jsPDF NOTE: เลือกไฟล์อย่างเดียวครับ ที่เหลือมันจะเติมให้หมดเลย  font style / Module format Reference