Category Design Principle

Design Principle

จดจาก Build GraphQL APIs (Go)

สัปดาห์ที่แล้วมาเป็นคนสอน docker สัปดาห์นี้วนมาเป็นนักเรียนบ้างครับ โดยรอบนี้ลองมาฟังตัว GraphQL วางมันจะต่างกับ REST แบบเดิมๆที่ใช้กันยังไง โดย Course นี้สอนโดยพี่ปั๊บ (Dev Mountain) ครับ ได้ความรู้เยอะครับ มีประสบการณ์ที่เจอมาเล่าด้วยนะ สำหรับผมก่อนมาเรียน อยากลองมาไล่ GraphQL ของ GitLab บางทีข้อมูลที่อยากได้มันยิงหลายรอบมาก และมาแก้พวก Get ที่ยิบย่อยที่เจอๆกัน แปะไว้ด้วยดีกว่า มีอีกบทความ / Post ที่บอกอีกมุมมองนึงนะ เอาไว้มาหาคำตอบตอนเรียน ที่เรียนมา ผมมีจดๆบางส่วนมานะ ตามนี้เลย ทำไมต้อง GraphQL ? ปัญหาแบบเดิมๆ แล้วที่นี้ Facebook…

ออกแบบ Database ยังไง มี Best Practice หรือ Pattern อะไรบ้าง ?

พอดีได้เห็นคำถามในหลายกลุ่มเลย เช่น สมาคมโปรแกรมเมอร์ไทย หรือ .NET Thailand แนวๆจะออกแบบ Database ยังไง มี Best Practice หรือ Pattern อะไรบ้าง ผมมีตอบๆไปนะ เลยคิดว่าเขียน Blog สรุปดีกว่าครับ Recap ACID Type of Database ตามนี้เลยครับ ถ้าเอาตามเทรนลองถาม ChatGPT เพิ่มเติมได้ครับ แต่ตอนนี้ผมหนีมาอีกค่าย claude ai ตัวไม่ดังบ้าง

Design Technique for Enterprise Transaction Design

สรุปแนวคิดสำหรับการออกแบบระบบให้ระบบขนาดใหญ่ (Enterprise) และรองรับข้อมูลธุรกรรม(Transaction) จำนวนมาก โดยต้องการให้ขยายระบบ(Scalability) ได้ในอนาคตครับ เลือกรูปแบบ Data Modeling – Transaction – ORM vs ER – พวก Sensitive Data จัดการอย่างไร – Data distribution / Data Centralization เลือกรูปแบบ Architectural Patterns การเลือก Architecture ต้องดูจาก – Resource Handings (POSA-3) ตรงนี้จะเห็นว่า กล่องสีๆ พวก Performance…

Control Hierarchy และ Fan-in กับ Fan-out คือ อะไร ?

คำนี้ผมเพิ่งได้ยินจากจากการเรียนปริญญาโทครับ โดยในคาบเรียบอาจารย์ให้แบ่งกลุ่ม และลองศึกษา Keyword ต่างๆ ประมาณ 20 นาที แล้วมานำเสนอครับ ของกลุ่มผมมี 3 คำครับ (เดี๋ยวมาอธิบายต่อไปเลย) Control Hierarchy คือ อะไร ? เป็นแผนภาพที่แสดงโครงสร้างของระบบ โดยมองในมุมของ Components (ผมเข้าใจว่ามองลงได้ถึงในระดับ Class/Method ได้นะ) ว่ามี Components มีความสัมพันธ์กับ Module อื่นๆ อย่างไร จากแผนภาพตรงนี้ เรามาค้นหาความสัมพันธ์ที่ซ่อนในโครงสร้างนี้กัน Fan-in & Fan-out คือ อะไร ? – ความหมาย – ทำไมต้องมาดู Fan-in & Fan-out…

Inversion of Control (IoC)

Inversion of Control หรือ IoC มันเป็นจุดขายของตัว Spring Framework จนหลายๆเจ้าเอาไปปรับใช้เข้ากับ Product ของตัวเองครับ (Microsoft ASP.NET MVC ก็ใช้นะ) ก่อนจะไปใช้กัน เรามารู้กัดีกว่า เจ้าตัว Inversion of Control หรือ IoC มัน คือ อะไรครับ Inversion of Control หรือ IoC คือ อะไร มีประโยชน์อย่างไร มันมีมาเพิ่มลดความผูกแน่นติดกันของ Object ครับ ตาม Quote นี้เลย Do…

Best Practices คำแนะนำที่เรียบง่าย แต่มีที่มาที่ล้ำลึก

Best Practices คำแนะนำที่เรียบง่าย แต่มีที่มาที่ล้ำลึก โดยเวลาที่เราเขียนโปรแกรม เราอาจจะโดนจำกัดการใช้ตัวแปร ให้เขียน Code ตามรูปแบบที่ SA กำหนดไว้ ต้องเขียน Code เป็นชั้นๆ อาทิ เช่น Presenter, Business Logic, Data Access และแต่ละชั้นต้องเชื่อมกันผ่าน Interface แต่ถ้าลองมาศึกษาลึกๆแล้ว ทุกอย่างมีที่มาที่ไป แต่ถ้าจะลงลึกไป อธิบายผลดี/ผลเสียมันอาจจะต้องใช้เวลา มันก็เลยกลายเป็น Best Practices เรียบง่ายที่ ห่อหุ้ม(Encapsulate) ความซับซ้อนต่างๆเอาไว้ข้างในครับ ตัว Developer เองจะได้เวลาไปสนใจเรื่องอื่นมากขึ้น เช่น Business หรือ การ…

Design Principle กับ Design Pattern

ก่อนจะมาเข้าเรื่องที่ลึกลงไป ผมอยากแนะนำ 2 คำนี้ก่อนครับ Principle แปลเป็นไทย คือ “หลักการ” แปลไทยเป็นไทย คือ สาระสำคัญที่ยึดถือเป็นแนวปฏิบัติ (ข้อมูลจากราชบัณฑิตยสถาน) Pattern แปลเป็นไทย คือ “รูปแบบ” แปลไทยเป็นไทย คือ แบบ, แผน, ตัวอย่าง, ทำแบบ, แบบอย่างอันดี, เอาแบบอย่าง กลับมาที่ Design Principle คือ หลักการออกแบบ Software โดยมีชุดแนวคิด หรือคำแนะนำ เพื่อป้องกันการออกแบบ Software ที่แย่ ที่ส่งผลทำให้มีการปรับแก้ไข (Customize) หรือ การดูแลรักษา (Maintenance) ยาก…