[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-th-6-12-How%2525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252520to-all-all-createdAt:desc-default":3},{"data":4,"page":519,"perPage":520,"totalItems":521,"totalPages":522},[5,74,128,165,213,245,282,334,365,397,425,466],{"alt":6,"cover_image_path":7,"created":8,"expand":9,"id":70,"published_at":71,"school_blog":66,"short_description":72,"title":6,"updated":73,"slug":67,"views":69},"EP.120 Whiteboard & Real-time Drawing Synchronization ด้วย WebSocket","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fb3o64zx8imsejrd\u002Fcover_image_ep_siccboj32o.onwithWebSocket.webp","2026-03-04 08:44:52.925Z",{"keywords":10,"locale":39,"school_blog":49},[11,19,24,29,34],{"collectionId":12,"collectionName":13,"created":14,"created_by":15,"id":16,"name":17,"updated":18,"updated_by":15},"sclkey987654321","school_keywords","2026-03-04 08:34:00.920Z","","ecac9y661or1xka","WebSocket","2026-04-10 16:08:05.227Z",{"collectionId":12,"collectionName":13,"created":20,"created_by":15,"id":21,"name":22,"updated":23,"updated_by":15},"2026-03-04 08:44:51.471Z","hlato0hav8vo8wm","Golang The Series","2026-04-10 16:12:50.850Z",{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"updated_by":15},"2026-03-04 08:20:14.253Z","ah6lvy4x8qe08l5","Golang","2026-04-10 16:07:26.172Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},"2026-03-04 08:20:11.547Z","ey3puyme01a9bsw","Go","2026-04-10 16:07:25.893Z",{"collectionId":12,"collectionName":13,"created":35,"created_by":15,"id":36,"name":37,"updated":38,"updated_by":15},"2026-03-04 08:44:51.688Z","ztv5f26qud778za","whiteboard","2026-04-10 16:12:50.940Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},"th","pbc_1989393366","locales","2026-01-22 10:59:55.832Z","twemoji:flag-thailand","s8wri3bt4vgg2ji",true,"Thai","2026-04-10 15:42:46.614Z",{"category":50,"collectionId":51,"collectionName":52,"created":15,"expand":53,"id":66,"slug":67,"updated":68,"views":69},"wqxt7ag2gn7xcmk","pbc_2105096300","school_blogs",{"category":54},{"blogIds":55,"collectionId":56,"collectionName":57,"created":58,"created_by":15,"id":50,"image":59,"image_alt":15,"image_path":60,"label":61,"name":22,"priority":62,"publish_at":63,"scheduled_at":15,"status":64,"updated":65,"updated_by":15},[],"sclcatblg987654321","school_category_blogs","2026-03-04 08:33:53.210Z","59ty92ns80w_15oc1implw.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fwqxt7ag2gn7xcmk\u002F59ty92ns80w_15oc1implw.png",{"en":22,"th":22},1,"2026-03-16 04:39:38.440Z","published","2026-04-25 02:32:15.470Z","clsm7oxkvsptxhx","ep-120-realtime-whiteboard-drawing-websocket","2026-05-08 21:05:08.442Z",238,"b3o64zx8imsejrd","2025-12-29 04:41:19.809Z","ออกแบบระบบ Whiteboard ที่รองรับการวาดพร้อมกันหลายคนแบบเรียลไทม์ ด้วย Go และ WebSocket พร้อมแนวคิด undo\u002Fredo และ performance optimization","2026-05-08 06:51:59.489Z",{"alt":75,"cover_image_path":76,"created":77,"expand":78,"id":124,"published_at":125,"school_blog":120,"short_description":126,"title":75,"updated":127,"slug":121,"views":123},"JS2GO EP.49 Security สำหรับ Backend ด้วย Go และ Node.js","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fik5ueoh4be7ojlt\u002Fcover_image_js2_go_ep_49_backend_security_with_go_and_node_3l4haf828s.js.webp","2026-03-04 08:44:53.727Z",{"keywords":79,"locale":106,"school_blog":107},[80,85,90,95,100,105],{"collectionId":12,"collectionName":13,"created":81,"created_by":15,"id":82,"name":83,"updated":84,"updated_by":15},"2026-03-04 08:44:52.376Z","7kgkxt1b9xd0cca","Authorization","2026-04-10 16:12:51.107Z",{"collectionId":12,"collectionName":13,"created":86,"created_by":15,"id":87,"name":88,"updated":89,"updated_by":15},"2026-03-04 08:34:18.095Z","z3u3nql685g5e3b","Authentication","2026-04-10 16:08:11.664Z",{"collectionId":12,"collectionName":13,"created":91,"created_by":15,"id":92,"name":93,"updated":94,"updated_by":15},"2026-03-04 08:44:53.062Z","puutdnxuitnxxgq","Backend","2026-04-10 16:12:51.264Z",{"collectionId":12,"collectionName":13,"created":96,"created_by":15,"id":97,"name":98,"updated":99,"updated_by":15},"2026-03-04 08:44:52.790Z","tkf1l5rauw0t7m0","Secure API Design","2026-04-10 16:12:51.172Z",{"collectionId":12,"collectionName":13,"created":101,"created_by":15,"id":102,"name":103,"updated":104,"updated_by":15},"2026-03-04 08:24:40.405Z","05u3tysava2z6ga","Node.js","2026-04-10 16:07:29.504Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":108,"collectionId":51,"collectionName":52,"created":15,"expand":109,"id":120,"slug":121,"updated":122,"views":123},"hsa1afr8fcnd6qb",{"category":110},{"blogIds":111,"collectionId":56,"collectionName":57,"created":112,"created_by":15,"id":108,"image":113,"image_alt":15,"image_path":114,"label":115,"name":116,"priority":117,"publish_at":118,"scheduled_at":15,"status":64,"updated":119,"updated_by":15},[],"2026-03-04 08:24:37.986Z","js2_go_2_11zon_y6paxmuz32.webp","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fhsa1afr8fcnd6qb\u002Fjs2_go_2_11zon_y6paxmuz32.webp",{"en":116,"th":116},"JS2GO",10,"2025-08-11 03:41:08.820Z","2026-04-25 02:32:14.339Z","q6au12trb7ipmxx","js2go-ep49-backend-security-authentication-authorization-validation","2026-05-15 22:21:45.292Z",254,"ik5ueoh4be7ojlt","2025-12-24 10:19:35.052Z","สรุปพื้นฐาน Security ที่ระบบ Backend ต้องมี ตั้งแต่ Authentication Authorization และ Data Validation พร้อมแนวทางใช้งานจริงใน Go และ Node.js สำหรับระบบ Production","2026-05-08 06:51:59.827Z",{"alt":129,"cover_image_path":130,"created":131,"expand":132,"id":161,"published_at":162,"school_blog":157,"short_description":163,"title":129,"updated":164,"slug":158,"views":160},"JS2GO EP.48 Logging & Monitoring for Production (Go & Node.js)","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fssj081nxo3m7iqh\u002Fcover_image_js2_go_ep_48_logging_monitoring_for_production_go_node_qpowgw7zj4.js.webp","2026-03-04 08:44:54.485Z",{"keywords":133,"locale":151,"school_blog":152},[134,139,144,145,150],{"collectionId":12,"collectionName":13,"created":135,"created_by":15,"id":136,"name":137,"updated":138,"updated_by":15},"2026-03-04 08:44:53.651Z","tuo9u1ayxlr8xvm","Monitoring System","2026-04-10 16:12:51.456Z",{"collectionId":12,"collectionName":13,"created":140,"created_by":15,"id":141,"name":142,"updated":143,"updated_by":15},"2026-03-04 08:44:54.012Z","e283qzmjw1vq2l4","Logging Production","2026-04-10 16:12:51.523Z",{"collectionId":12,"collectionName":13,"created":101,"created_by":15,"id":102,"name":103,"updated":104,"updated_by":15},{"collectionId":12,"collectionName":13,"created":146,"created_by":15,"id":147,"name":148,"updated":149,"updated_by":15},"2026-03-04 08:20:42.484Z","vslzz9nvv6n77cx","JavaScript","2026-04-10 16:07:28.339Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":108,"collectionId":51,"collectionName":52,"created":15,"expand":153,"id":157,"slug":158,"updated":159,"views":160},{"category":154},{"blogIds":155,"collectionId":56,"collectionName":57,"created":112,"created_by":15,"id":108,"image":113,"image_alt":15,"image_path":114,"label":156,"name":116,"priority":117,"publish_at":118,"scheduled_at":15,"status":64,"updated":119,"updated_by":15},[],{"en":116,"th":116},"d8jrjoxb8k7la64","js2go-ep48-logging-monitoring-production-go-nodejs","2026-05-13 08:17:22.259Z",233,"ssj081nxo3m7iqh","2025-12-23 04:57:48.010Z","จากการมีแค่ log สู่การเข้าใจระบบทั้งก้อน เรียนรู้ Structured Logging, Correlation ID, Metrics, Tracing และ Error Monitoring เพื่อให้ระบบ Go และ Node.js พร้อมใช้งานจริงในระดับ Production และ Microservices","2026-05-08 06:51:59.957Z",{"alt":166,"cover_image_path":167,"created":168,"expand":169,"id":209,"published_at":210,"school_blog":205,"short_description":211,"title":166,"updated":212,"slug":206,"views":208},"Work-Life Balance แบบ Programmer: วิธีไม่ให้หมดไฟในวงการนี้","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fkwwrvw3iltat93v\u002Fwork_life_balance_for_programmers_how_to_avoid_burnout_in_the_tech_industry_762b9s96my.webp","2026-03-04 08:44:58.989Z",{"keywords":170,"locale":191,"school_blog":192},[171,176,181,186],{"collectionId":12,"collectionName":13,"created":172,"created_by":15,"id":173,"name":174,"updated":175,"updated_by":15},"2026-03-04 08:35:12.499Z","9bexb3o9mxg9dei","Burnout","2026-04-10 16:12:39.924Z",{"collectionId":12,"collectionName":13,"created":177,"created_by":15,"id":178,"name":179,"updated":180,"updated_by":15},"2026-03-04 08:44:58.046Z","h2p9vyglxcuqfov","ชีวิตโปรแกรมเมอร์","2026-04-10 16:12:52.407Z",{"collectionId":12,"collectionName":13,"created":182,"created_by":15,"id":183,"name":184,"updated":185,"updated_by":15},"2026-03-04 08:44:58.280Z","hoxhv4dr3heikf6","โปรแกรมเมอร์หมดไฟ","2026-04-10 16:12:52.474Z",{"collectionId":12,"collectionName":13,"created":187,"created_by":15,"id":188,"name":189,"updated":190,"updated_by":15},"2026-03-04 08:44:57.697Z","rw5wz1cf9aox58p","Work-Life Balance","2026-04-10 16:12:52.284Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":193,"collectionId":51,"collectionName":52,"created":15,"expand":194,"id":205,"slug":206,"updated":207,"views":208},"spm4l1k5bgmhmmt",{"category":195},{"blogIds":196,"collectionId":56,"collectionName":57,"created":197,"created_by":15,"id":193,"image":198,"image_alt":15,"image_path":199,"label":200,"name":201,"priority":202,"publish_at":203,"scheduled_at":15,"status":64,"updated":204,"updated_by":15},[],"2026-03-04 08:31:18.590Z","50hyjr6os45_ayazwr5gq7.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fspm4l1k5bgmhmmt\u002F50hyjr6os45_ayazwr5gq7.png",{"en":201,"th":201},"Knowledge",0,"2026-03-18 02:25:41.222Z","2026-04-25 02:32:14.497Z","sy7kac0t03r9dox","work-life-balance-for-programmers","2026-05-12 03:07:21.655Z",230,"kwwrvw3iltat93v","2025-12-22 02:12:40.992Z","การทำงานสายโปรแกรมเมอร์เต็มไปด้วยความกดดัน เดดไลน์ และการเรียนรู้ไม่สิ้นสุด บทความนี้จะพาคุณเข้าใจ Work-Life Balance สำหรับ Programmer อย่างแท้จริง พร้อมแนวคิดและวิธีดูแลตัวเอง เพื่อทำงานได้ดีโดยไม่หมดไฟในระยะยาว","2026-05-08 06:52:01.275Z",{"alt":214,"cover_image_path":215,"created":216,"expand":217,"id":241,"published_at":242,"school_blog":237,"short_description":243,"title":214,"updated":244,"slug":238,"views":240},"EP.119 สร้างระบบ Real-time Document Editing แบบ Google Docs ด้วย WebSocket และ Go","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fnyzij7kxx6kmddu\u002Fcover_image_ep_ylr3nwpk30.gWebSocketandGo.webp","2026-03-04 08:44:56.148Z",{"keywords":218,"locale":231,"school_blog":232},[219,220,221,226],{"collectionId":12,"collectionName":13,"created":14,"created_by":15,"id":16,"name":17,"updated":18,"updated_by":15},{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":222,"created_by":15,"id":223,"name":224,"updated":225,"updated_by":15},"2026-03-04 08:44:54.877Z","ype7kkszqa7py9n","Real-time Document","2026-04-10 16:12:51.779Z",{"collectionId":12,"collectionName":13,"created":227,"created_by":15,"id":228,"name":229,"updated":230,"updated_by":15},"2026-03-04 08:44:54.550Z","dhhilrqrpmtr3x7","Google Docs","2026-04-10 16:12:51.619Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":50,"collectionId":51,"collectionName":52,"created":15,"expand":233,"id":237,"slug":238,"updated":239,"views":240},{"category":234},{"blogIds":235,"collectionId":56,"collectionName":57,"created":58,"created_by":15,"id":50,"image":59,"image_alt":15,"image_path":60,"label":236,"name":22,"priority":62,"publish_at":63,"scheduled_at":15,"status":64,"updated":65,"updated_by":15},[],{"en":22,"th":22},"nez2cwex9p6we4q","realtime-document-editing-with-go-websocket","2026-05-12 11:21:18.066Z",242,"nyzij7kxx6kmddu","2025-12-22 02:12:35.702Z","เรียนรู้การพัฒนาระบบแก้ไขเอกสารแบบหลายคนพร้อมกันแบบ Real-time ด้วย Go และ WebSocket พร้อมแนวคิดจัดการ Conflict และ Version Control","2026-05-08 06:52:00.506Z",{"alt":246,"cover_image_path":247,"created":248,"expand":249,"id":278,"published_at":279,"school_blog":274,"short_description":280,"title":246,"updated":281,"slug":275,"views":277},"EP.118 การสร้างระบบ AI + WebSocket สำหรับ IoT แบบเรียลไทม์","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fusojgv4mbo51ee9\u002Fcover_image_ep_5u7zo3et9b.emforIoTDevices.webp","2026-03-04 08:44:57.441Z",{"keywords":250,"locale":268,"school_blog":269},[251,252,257,258,263],{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":253,"created_by":15,"id":254,"name":255,"updated":256,"updated_by":15},"2026-03-04 08:44:56.136Z","1ant8hjpcxuj8a2","IoT","2026-04-10 16:12:51.845Z",{"collectionId":12,"collectionName":13,"created":14,"created_by":15,"id":16,"name":17,"updated":18,"updated_by":15},{"collectionId":12,"collectionName":13,"created":259,"created_by":15,"id":260,"name":261,"updated":262,"updated_by":15},"2026-03-04 08:31:29.142Z","hrqdq7kjl5lzjmi","AI","2026-04-10 16:07:41.358Z",{"collectionId":12,"collectionName":13,"created":264,"created_by":15,"id":265,"name":266,"updated":267,"updated_by":15},"2026-03-04 08:44:49.054Z","vbjgbr5ah0kh43p","Real-time System","2026-04-10 16:12:50.311Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":50,"collectionId":51,"collectionName":52,"created":15,"expand":270,"id":274,"slug":275,"updated":276,"views":277},{"category":271},{"blogIds":272,"collectionId":56,"collectionName":57,"created":58,"created_by":15,"id":50,"image":59,"image_alt":15,"image_path":60,"label":273,"name":22,"priority":62,"publish_at":63,"scheduled_at":15,"status":64,"updated":65,"updated_by":15},[],{"en":22,"th":22},"3wlgaoume77bwtm","golang-ep118-ai-websocket-iot-real-time","2026-05-11 11:49:09.698Z",251,"usojgv4mbo51ee9","2025-12-22 02:12:30.693Z","เรียนรู้การสร้างระบบ IoT อัจฉริยะด้วย Go + WebSocket ที่ผสาน AI เพื่อทำ Anomaly Detection และ Predictive Maintenance แบบเรียลไทม์ พร้อมแนวทางใช้งานจริงในระดับ Production","2026-05-08 06:52:00.864Z",{"alt":283,"cover_image_path":284,"created":285,"expand":286,"id":330,"published_at":331,"school_blog":326,"short_description":332,"title":283,"updated":333,"slug":327,"views":329},"ไขความลับ \"Nano Banana\": ทำไม AI ชื่อกล้วยๆ ถึงล้มแชมป์เก่าได้ราบคาบ?","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fndyl8vxkneahr45\u002Fdigital_glowing_banana_graphic_representing_nano_banana_the_codename_for_google_s_new_gemini_image_m_4di09vp1hq.webp","2026-03-04 08:45:01.197Z",{"keywords":287,"locale":313,"school_blog":314},[288,293,298,303,308],{"collectionId":12,"collectionName":13,"created":289,"created_by":15,"id":290,"name":291,"updated":292,"updated_by":15},"2026-03-04 08:44:59.347Z","zx9l4eq448df98a","Gemini AI","2026-04-10 16:12:52.674Z",{"collectionId":12,"collectionName":13,"created":294,"created_by":15,"id":295,"name":296,"updated":297,"updated_by":15},"2026-03-04 08:45:00.090Z","yxvyznmahwofbr4","Gemini Image Generation","2026-04-10 16:12:52.934Z",{"collectionId":12,"collectionName":13,"created":299,"created_by":15,"id":300,"name":301,"updated":302,"updated_by":15},"2026-03-04 08:45:00.752Z","2c5b5bcrxk9qvpy","สร้างภาพด้วย AI","2026-04-10 16:12:53.208Z",{"collectionId":12,"collectionName":13,"created":304,"created_by":15,"id":305,"name":306,"updated":307,"updated_by":15},"2026-03-04 08:44:59.765Z","51knaqayw5mn73i","Google Gemini","2026-04-10 16:12:52.773Z",{"collectionId":12,"collectionName":13,"created":309,"created_by":15,"id":310,"name":311,"updated":312,"updated_by":15},"2026-03-04 08:45:00.498Z","21720ewj4b2qmja","Nano Banana","2026-04-10 16:12:53.080Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":315,"collectionId":51,"collectionName":52,"created":15,"expand":316,"id":326,"slug":327,"updated":328,"views":329},"pkuzfil3b4ug2ea",{"category":317},{"blogIds":318,"collectionId":56,"collectionName":57,"created":319,"created_by":15,"id":315,"image":320,"image_alt":15,"image_path":321,"label":322,"name":323,"priority":202,"publish_at":324,"scheduled_at":15,"status":64,"updated":325,"updated_by":15},[],"2026-03-04 08:31:47.860Z","3w9eadde0ql_vquww3nx7o.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fpkuzfil3b4ug2ea\u002F3w9eadde0ql_vquww3nx7o.png",{"en":323,"th":323},"Cutting-Edge Tech","2025-01-27 08:43:38.395Z","2026-04-25 02:32:14.847Z","r41jxqt4x4t621a","nano-banana-google-gemini-ai-reveal","2026-05-15 06:58:02.822Z",263,"ndyl8vxkneahr45","2025-12-17 11:47:04.517Z","เจาะลึกเบื้องหลัง \"Nano Banana\" ชื่อลับของ Gemini Image Model ที่เอาชนะ Midjourney ในการทดสอบ Blind Test ด้วยฟีเจอร์เขียนข้อความแม่นยำและความเข้าใจบริบทระดับเทพ พร้อมวิธีใช้งานจริง","2026-05-08 06:52:01.468Z",{"alt":335,"cover_image_path":336,"created":337,"expand":338,"id":361,"published_at":362,"school_blog":358,"short_description":363,"title":335,"updated":364,"slug":359,"views":277},"JS2GO EP.47 Dependency Injection ใน Go และ Node.js: ทำไมระบบใหญ่ต้องมี DI?","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F89duht4c5ae6qrn\u002Fcover_image_js2_go_ep_47_dependency_injection_in_go_and_node_hehykg0srq.geSystemsNeedDI.webp","2026-03-04 08:45:02.070Z",{"keywords":339,"locale":352,"school_blog":353},[340,345,350,351],{"collectionId":12,"collectionName":13,"created":341,"created_by":15,"id":342,"name":343,"updated":344,"updated_by":15},"2026-03-04 08:45:01.083Z","anx8rod7y41shjl","Clean Architecture","2026-04-10 16:12:53.282Z",{"collectionId":12,"collectionName":13,"created":346,"created_by":15,"id":347,"name":348,"updated":349,"updated_by":15},"2026-03-04 08:45:01.460Z","bbwe2jz83qa1d1j","Dependency Injection","2026-04-10 16:12:53.456Z",{"collectionId":12,"collectionName":13,"created":101,"created_by":15,"id":102,"name":103,"updated":104,"updated_by":15},{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":108,"collectionId":51,"collectionName":52,"created":15,"expand":354,"id":358,"slug":359,"updated":360,"views":277},{"category":355},{"blogIds":356,"collectionId":56,"collectionName":57,"created":112,"created_by":15,"id":108,"image":113,"image_alt":15,"image_path":114,"label":357,"name":116,"priority":117,"publish_at":118,"scheduled_at":15,"status":64,"updated":119,"updated_by":15},[],{"en":116,"th":116},"i20pcnin578firk","js2go-ep47-dependency-injection-go-nodejs","2026-05-13 18:39:11.759Z","89duht4c5ae6qrn","2025-12-17 02:25:59.478Z","DI คือเทคนิคสำคัญที่ช่วยให้ระบบทดสอบง่าย ลดการผูกติดกันของโค้ด และปรับเปลี่ยน implementation ได้โดยไม่กระทบส่วนอื่น บทความนี้อธิบายแนวคิด DI พร้อมโค้ดตัวอย่างใน Go (pgx\u002FGORM) และ Node.js รวมถึงวิธีทำให้ระบบพร้อมสำหรับ Production จริง","2026-05-08 06:52:01.906Z",{"alt":366,"cover_image_path":367,"created":368,"expand":369,"id":393,"published_at":394,"school_blog":389,"short_description":395,"title":366,"updated":396,"slug":390,"views":392},"JS2GO EP.46 การสร้าง Middleware และ Modular Architecture ใน Go และ Node.js","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fddfdxscguz1ldsl\u002Fcover_image_js2_go_ep_46_building_middleware_and_modular_architecture_in_go_and_node_exrof0jwyi.js.webp","2026-03-04 08:45:03.591Z",{"keywords":370,"locale":383,"school_blog":384},[371,372,373,378],{"collectionId":12,"collectionName":13,"created":101,"created_by":15,"id":102,"name":103,"updated":104,"updated_by":15},{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":374,"created_by":15,"id":375,"name":376,"updated":377,"updated_by":15},"2026-03-04 08:45:02.900Z","12i9ika4aocvtm5","Modular Architecture","2026-04-10 16:12:53.598Z",{"collectionId":12,"collectionName":13,"created":379,"created_by":15,"id":380,"name":381,"updated":382,"updated_by":15},"2026-03-04 08:34:25.436Z","bctyeonwhcrzvq3","Middleware","2026-04-10 16:08:14.305Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":108,"collectionId":51,"collectionName":52,"created":15,"expand":385,"id":389,"slug":390,"updated":391,"views":392},{"category":386},{"blogIds":387,"collectionId":56,"collectionName":57,"created":112,"created_by":15,"id":108,"image":113,"image_alt":15,"image_path":114,"label":388,"name":116,"priority":117,"publish_at":118,"scheduled_at":15,"status":64,"updated":119,"updated_by":15},[],{"en":116,"th":116},"06v021j7mqri9t7","js2go-ep46-middleware-modular-architecture-go-nodejs","2026-05-15 23:09:33.340Z",249,"ddfdxscguz1ldsl","2025-12-17 02:25:26.894Z","เรียนรู้การสร้าง Middleware (Auth, Logging, Rate Limit) และออกแบบ Modular Architecture แบบองค์กรใน Go และ Node.js พร้อมตัวอย่างโค้ด Fiber + Express และ Best Practices ที่ใช้จริงในระบบ Production","2026-05-08 06:52:02.186Z",{"alt":398,"cover_image_path":399,"created":400,"expand":401,"id":421,"published_at":422,"school_blog":417,"short_description":423,"title":398,"updated":424,"slug":418,"views":420},"EP.117 การเชื่อมต่อ IoT Device หลายตัวด้วย WebSocket (Real-time IoT Network)","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F6geyjq1575qgjai\u002Fcover_image_ep_gg70n9zn2d.-timeIoTNetwork.webp","2026-03-04 08:45:04.567Z",{"keywords":402,"locale":411,"school_blog":412},[403,408,409,410],{"collectionId":12,"collectionName":13,"created":404,"created_by":15,"id":405,"name":406,"updated":407,"updated_by":15},"2026-03-04 08:44:49.445Z","0ips6v3gj6yy1h7","ระบบเรียลไทม์","2026-04-10 16:12:50.583Z",{"collectionId":12,"collectionName":13,"created":253,"created_by":15,"id":254,"name":255,"updated":256,"updated_by":15},{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":14,"created_by":15,"id":16,"name":17,"updated":18,"updated_by":15},{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":50,"collectionId":51,"collectionName":52,"created":15,"expand":413,"id":417,"slug":418,"updated":419,"views":420},{"category":414},{"blogIds":415,"collectionId":56,"collectionName":57,"created":58,"created_by":15,"id":50,"image":59,"image_alt":15,"image_path":60,"label":416,"name":22,"priority":62,"publish_at":63,"scheduled_at":15,"status":64,"updated":65,"updated_by":15},[],{"en":22,"th":22},"nboyiqnzglp5uh7","ep117-iot-multi-device-websocket","2026-05-12 11:25:37.435Z",213,"6geyjq1575qgjai","2025-12-15 01:58:37.695Z","เรียนรู้การสร้างระบบ IoT แบบ Real-time ด้วย Go และ WebSocket ที่รองรับอุปกรณ์หลายตัวพร้อมกัน พร้อมแนวทาง Authentication, Bandwidth Management และการขยายระบบให้รองรับอุปกรณ์นับหมื่น","2026-05-08 06:52:02.811Z",{"alt":426,"cover_image_path":427,"created":428,"expand":429,"id":462,"published_at":463,"school_blog":459,"short_description":464,"title":426,"updated":465,"slug":460,"views":461},"EP.116 การเพิ่มฟีเจอร์ Voice\u002FVideo แบบเรียลไทม์ด้วย WebRTC + WebSocket Signaling","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fvkhrndyjxf6sakd\u002Fcover_image_ep_kpibg1eae8.etSignalinginGo.webp","2026-03-04 08:45:06.410Z",{"keywords":430,"locale":453,"school_blog":454},[431,436,437,442,447,448],{"collectionId":12,"collectionName":13,"created":432,"created_by":15,"id":433,"name":434,"updated":435,"updated_by":15},"2026-03-04 08:45:05.836Z","37t2tvjs3vvty3x","WebRTC","2026-04-10 16:12:54.088Z",{"collectionId":12,"collectionName":13,"created":14,"created_by":15,"id":16,"name":17,"updated":18,"updated_by":15},{"collectionId":12,"collectionName":13,"created":438,"created_by":15,"id":439,"name":440,"updated":441,"updated_by":15},"2026-03-04 08:45:05.158Z","836if8oqwpocqe3","Voice Chat","2026-04-10 16:12:53.881Z",{"collectionId":12,"collectionName":13,"created":443,"created_by":15,"id":444,"name":445,"updated":446,"updated_by":15},"2026-03-04 08:45:04.918Z","2oi71a8zf6vf68l","Video Call","2026-04-10 16:12:53.751Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":449,"created_by":15,"id":450,"name":451,"updated":452,"updated_by":15},"2026-03-04 08:45:05.632Z","cof4vbc2ts3emn3","WebSocket Signaling","2026-04-10 16:12:54.016Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":50,"collectionId":51,"collectionName":52,"created":15,"expand":455,"id":459,"slug":460,"updated":15,"views":461},{"category":456},{"blogIds":457,"collectionId":56,"collectionName":57,"created":58,"created_by":15,"id":50,"image":59,"image_alt":15,"image_path":60,"label":458,"name":22,"priority":62,"publish_at":63,"scheduled_at":15,"status":64,"updated":65,"updated_by":15},[],{"en":22,"th":22},"9u83c9b4adi7p6e","ep116-realtime-voice-video-webrtc-websocket-go",261,"vkhrndyjxf6sakd","2025-12-15 01:58:16.309Z","เรียนรู้วิธีสร้างระบบ Video Call และ Voice Chat แบบเรียลไทม์ด้วย WebRTC และ WebSocket Signaling ในภาษา Go พร้อมโค้ดตัวอย่างและแนวทางการออกแบบระบบระดับ Production","2026-05-08 06:52:03.446Z",{"alt":467,"cover_image_path":468,"created":469,"expand":470,"id":514,"published_at":515,"school_blog":510,"short_description":516,"title":517,"updated":518,"slug":511,"views":513},"Docker Compose คืออะไร? เครื่องมือสำคัญที่โปรแกรมเมอร์ยุคใหม่ต้องรู้","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fhbhtvcn6m4zvtaf\u002Fcover_image_what_is_docker_compose_the_essential_tool_for_modern_developers_clkznj0vwv.webp","2026-03-04 08:45:07.426Z",{"keywords":471,"locale":497,"school_blog":498},[472,477,482,487,492],{"collectionId":12,"collectionName":13,"created":473,"created_by":15,"id":474,"name":475,"updated":476,"updated_by":15},"2026-03-04 08:35:11.709Z","ga2eo1rr4uw66mu","DevOps","2026-04-10 16:12:39.734Z",{"collectionId":12,"collectionName":13,"created":478,"created_by":15,"id":479,"name":480,"updated":481,"updated_by":15},"2026-03-04 08:45:06.613Z","mel6m5brnjq2zmy","Multi-container","2026-04-10 16:12:54.338Z",{"collectionId":12,"collectionName":13,"created":483,"created_by":15,"id":484,"name":485,"updated":486,"updated_by":15},"2026-03-04 08:26:56.612Z","yf74wkqyamfc5qx","โปรแกรมเมอร์","2026-04-10 16:07:36.426Z",{"collectionId":12,"collectionName":13,"created":488,"created_by":15,"id":489,"name":490,"updated":491,"updated_by":15},"2026-03-04 08:45:06.433Z","h61cls1b4isvvvx","Docker Compose","2026-04-10 16:12:54.185Z",{"collectionId":12,"collectionName":13,"created":493,"created_by":15,"id":494,"name":495,"updated":496,"updated_by":15},"2026-03-04 08:44:18.652Z","jr5zczy6qrxmd88","Docker","2026-04-10 16:12:43.264Z",{"code":40,"collectionId":41,"collectionName":42,"created":43,"flag":44,"id":45,"is_default":46,"label":47,"updated":48},{"category":499,"collectionId":51,"collectionName":52,"created":15,"expand":500,"id":510,"slug":511,"updated":512,"views":513},"jwhmeg2uxwz0bkp",{"category":501},{"blogIds":502,"collectionId":56,"collectionName":57,"created":503,"created_by":15,"id":499,"image":504,"image_alt":15,"image_path":505,"label":506,"name":507,"priority":202,"publish_at":508,"scheduled_at":15,"status":64,"updated":509,"updated_by":15},[],"2026-03-04 08:31:40.635Z","1qt33a4n2u3_lr23qy62xh.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fjwhmeg2uxwz0bkp\u002F1qt33a4n2u3_lr23qy62xh.png",{"en":507,"th":507},"Tools & Resources","2025-01-31 09:55:27.001Z","2026-04-25 02:32:14.689Z","myt8jk36cr4iuqn","what-is-docker-compose-essential-tool-for-developers","2026-05-15 19:52:36.642Z",386,"hbhtvcn6m4zvtaf","2025-12-12 02:47:35.017Z","เรียนรู้ Docker Compose เครื่องมือจัดการ Multi-container ที่สำคัญที่สุดสำหรับโปรแกรมเมอร์และ DevOps สรุปวิธีการทำงาน พร้อมตัวอย่างไฟล์ docker-compose.yml ที่ทำให้การพัฒนาซอฟต์แวร์ง่ายขึ้นหลายเท่าตัว!","Docker Compose คืออะไร? เครื่องมือสำคัญที่โปรแกรมเมอร์ต้องรู้","2026-05-08 06:52:03.798Z",6,12,409,35]