[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-th-7-12-Tailwind%25252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252520CSS-all-all-createdAt:desc-default":3},{"data":4,"page":509,"perPage":510,"totalItems":511,"totalPages":512},[5,71,108,154,207,247,291,328,369,406,436,467],{"alt":6,"cover_image_path":7,"created":8,"expand":9,"id":67,"published_at":68,"school_blog":63,"short_description":69,"title":6,"updated":70,"slug":64,"views":66},"EP.125 TLS \u002F WSS และ Certificate Management สำหรับ WebSocket (Production & Enterprise)","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Frn62rb24heeyiyo\u002Fcover_image_ep_1msbjluc3y.EnterpriseGuide.webp","2026-03-04 08:44:42.802Z",{"keywords":10,"locale":34,"school_blog":44},[11,19,24,29],{"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:44:41.631Z","76qprkevbgfdps8","sipxojme8z97ei7","WebSocket TLS","2026-06-07 06:46:37.399Z",{"collectionId":12,"collectionName":13,"created":20,"created_by":15,"id":21,"name":22,"updated":23,"updated_by":15},"2026-03-04 08:44:41.420Z","xjki2vhsm3f0jb4","WSS WebSocket","2026-06-07 06:46:37.337Z",{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"updated_by":15},"2026-03-04 08:34:00.920Z","ecac9y661or1xka","WebSocket","2026-06-07 06:45:55.734Z",{"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-06-07 06:45:07.798Z",{"code":35,"collectionId":36,"collectionName":37,"created":38,"flag":39,"id":40,"is_default":41,"label":42,"updated":43},"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":45,"collectionId":46,"collectionName":47,"created":48,"expand":49,"id":63,"slug":64,"updated":65,"views":66},"wqxt7ag2gn7xcmk","pbc_2105096300","school_blogs","",{"category":50},{"blogIds":51,"collectionId":52,"collectionName":53,"created":54,"created_by":15,"id":45,"image":55,"image_alt":48,"image_path":56,"label":57,"name":58,"priority":59,"publish_at":60,"scheduled_at":48,"status":61,"updated":62,"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":58,"th":58},"Golang The Series",1,"2026-03-16 04:39:38.440Z","published","2026-06-07 06:45:03.856Z","fi5y0zd7vudw30e","ep-125-tls-wss-certificate-management-for-websocket","2026-06-21 12:51:13.094Z",242,"rn62rb24heeyiyo","2026-01-12 03:50:15.171Z","เจาะลึกการใช้งาน TLS และ WSS สำหรับ WebSocket ตั้งแต่ความแตกต่างของ HTTPS vs WSS, การทำงานของ TLS Handshake, การจัดการ Certificate, Let’s Encrypt ไปจนถึง Zero-downtime Renewal สำหรับระบบ Production และ Enterprise","2026-06-07 06:43:21.662Z",{"alt":72,"cover_image_path":73,"created":74,"expand":75,"id":104,"published_at":105,"school_blog":100,"short_description":106,"title":72,"updated":107,"slug":101,"views":103},"EP.124 Security & Authentication ขั้นสูงสำหรับ WebSocket (JWT, Token Strategy & Secure Handshake)","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F6ywcs1la9t4zwi0\u002Fcover_image_ep_qhtvcctin6.SecureHandshake.webp","2026-03-04 08:44:43.684Z",{"keywords":76,"locale":94,"school_blog":95},[77,78,79,84,89],{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"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":80,"created_by":15,"id":81,"name":82,"updated":83,"updated_by":15},"2026-03-04 08:44:42.096Z","kr1dmn7sxgv9vxg","JWT WebSocket","2026-06-07 06:46:37.493Z",{"collectionId":12,"collectionName":13,"created":85,"created_by":15,"id":86,"name":87,"updated":88,"updated_by":15},"2026-03-04 08:44:42.406Z","julxx94rca568ku","WebSocket Authentication","2026-06-07 06:46:37.674Z",{"collectionId":12,"collectionName":13,"created":90,"created_by":15,"id":91,"name":92,"updated":93,"updated_by":15},"2026-03-04 08:44:13.770Z","ij1u9pugpnctjvk","WebSocket Security","2026-06-07 06:46:29.432Z",{"code":35,"collectionId":36,"collectionName":37,"created":38,"flag":39,"id":40,"is_default":41,"label":42,"updated":43},{"category":45,"collectionId":46,"collectionName":47,"created":48,"expand":96,"id":100,"slug":101,"updated":102,"views":103},{"category":97},{"blogIds":98,"collectionId":52,"collectionName":53,"created":54,"created_by":15,"id":45,"image":55,"image_alt":48,"image_path":56,"label":99,"name":58,"priority":59,"publish_at":60,"scheduled_at":48,"status":61,"updated":62,"updated_by":15},[],{"en":58,"th":58},"r4w3srsh9edadud","websocket-security-authentication-jwt-secure-handshake","2026-05-29 02:25:49.776Z",229,"6ywcs1la9t4zwi0","2026-01-12 03:40:06.435Z","เจาะลึกการออกแบบระบบ Security สำหรับ WebSocket ในระดับ Production และ Enterprise ครอบคลุม JWT, Token Strategy, การป้องกัน WebSocket Hijacking และการทำ Secure Handshake อย่างถูกต้อง เพื่อรองรับระบบที่มีข้อมูลสำคัญและผู้ใช้จำนวนมาก","2026-06-07 06:43:21.752Z",{"alt":109,"cover_image_path":110,"created":111,"expand":112,"id":150,"published_at":151,"school_blog":146,"short_description":152,"title":109,"updated":153,"slug":147,"views":149},"กว่าจะเป็นภาษา JavaScript: ภาษาที่สร้างใน 10 วัน แต่ครองโลกทั้งใบ","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fdns2yj06p07cxiw\u002Fbrendan_eich_the_creator_of_java_script_at_netscape_featuring_the_js_logo_and_code_snippets_p5l8mdud8o.webp","2026-03-04 08:20:47.880Z",{"keywords":113,"locale":134,"school_blog":135},[114,119,124,129],{"collectionId":12,"collectionName":13,"created":115,"created_by":15,"id":116,"name":117,"updated":118,"updated_by":15},"2026-03-04 08:20:36.060Z","xcq4mt3coqo1odt","V8 Engine","2026-06-07 06:45:09.934Z",{"collectionId":12,"collectionName":13,"created":120,"created_by":15,"id":121,"name":122,"updated":123,"updated_by":15},"2026-03-04 08:20:38.187Z","b4o3toqgoc84295","Brendan Eich","2026-06-07 06:45:10.401Z",{"collectionId":12,"collectionName":13,"created":125,"created_by":15,"id":126,"name":127,"updated":128,"updated_by":15},"2026-03-04 08:20:39.625Z","0399whisr6wvh9x","ประวัติ JavaScript","2026-06-07 06:45:10.618Z",{"collectionId":12,"collectionName":13,"created":130,"created_by":15,"id":131,"name":132,"updated":133,"updated_by":15},"2026-03-04 08:20:42.484Z","vslzz9nvv6n77cx","JavaScript","2026-06-07 06:45:10.888Z",{"code":35,"collectionId":36,"collectionName":37,"created":38,"flag":39,"id":40,"is_default":41,"label":42,"updated":43},{"category":136,"collectionId":46,"collectionName":47,"created":48,"expand":137,"id":146,"slug":147,"updated":148,"views":149},"isnp2fv80bn3yem",{"category":138},{"blogIds":139,"collectionId":52,"collectionName":53,"created":140,"created_by":15,"id":136,"image":48,"image_alt":48,"image_path":48,"label":141,"name":142,"priority":143,"publish_at":144,"scheduled_at":48,"status":61,"updated":145,"updated_by":15},[],"2026-03-04 08:19:47.590Z",{"en":142,"th":142},"กว่าจะเป็นภาษาโค้ด",8,"2026-02-18 01:59:49.988Z","2026-06-07 06:45:01.789Z","n4c7o0yqlwcv639","history-of-javascript-from-10-days-to-global-standard","2026-06-15 03:42:20.889Z",256,"dns2yj06p07cxiw","2026-01-08 05:35:46.937Z","เจาะลึกประวัติศาสตร์ JavaScript จากจุดเริ่มต้นที่ Netscape สู่สงครามเบราว์เซอร์ และการก้าวขึ้นเป็นราชาแห่งการพัฒนาเว็บด้วย V8 Engine","2026-06-07 06:42:44.726Z",{"alt":155,"cover_image_path":156,"created":157,"expand":158,"id":203,"published_at":204,"school_blog":199,"short_description":205,"title":155,"updated":206,"slug":200,"views":202},"Git for Team: ทำงานร่วมกับทีมอย่างไรให้โปร? คู่มือวาง Workflow ไม่ให้โค้ดพัง","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fqtr2rpue3dll79j\u002Finfographic_showing_team_collaboration_using_git_and_git_hub_illustrating_branching_merging_and_pull_x2kuoopv4i.webp","2026-03-04 08:44:45.153Z",{"keywords":159,"locale":185,"school_blog":186},[160,165,170,175,180],{"collectionId":12,"collectionName":13,"created":161,"created_by":15,"id":162,"name":163,"updated":164,"updated_by":15},"2026-03-04 08:44:43.803Z","tsn8jg792h1wac5","Code Review","2026-06-07 06:46:37.827Z",{"collectionId":12,"collectionName":13,"created":166,"created_by":15,"id":167,"name":168,"updated":169,"updated_by":15},"2026-03-04 08:44:35.823Z","andd8rbw15sng17","GitHub","2026-06-07 06:46:35.932Z",{"collectionId":12,"collectionName":13,"created":171,"created_by":15,"id":172,"name":173,"updated":174,"updated_by":15},"2026-03-04 08:44:44.171Z","4i5n5i9cpmuwg5n","ทำงานเป็นทีม","2026-06-07 06:46:37.953Z",{"collectionId":12,"collectionName":13,"created":176,"created_by":15,"id":177,"name":178,"updated":179,"updated_by":15},"2026-03-04 08:44:35.619Z","9z8e1xfjt07e7n9","Git Workflow","2026-06-07 06:46:35.800Z",{"collectionId":12,"collectionName":13,"created":181,"created_by":15,"id":182,"name":183,"updated":184,"updated_by":15},"2026-03-04 08:44:36.134Z","pg679bitpkii9vv","Git","2026-06-07 06:46:36.158Z",{"code":35,"collectionId":36,"collectionName":37,"created":38,"flag":39,"id":40,"is_default":41,"label":42,"updated":43},{"category":187,"collectionId":46,"collectionName":47,"created":48,"expand":188,"id":199,"slug":200,"updated":201,"views":202},"spm4l1k5bgmhmmt",{"category":189},{"blogIds":190,"collectionId":52,"collectionName":53,"created":191,"created_by":15,"id":187,"image":192,"image_alt":48,"image_path":193,"label":194,"name":195,"priority":196,"publish_at":197,"scheduled_at":48,"status":61,"updated":198,"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":195,"th":195},"Knowledge",0,"2026-03-18 02:25:41.222Z","2026-06-07 06:45:02.533Z","p8mussz4d3imv1c","git-for-team-professional-workflow-guide","2026-06-23 01:10:12.268Z",492,"qtr2rpue3dll79j","2026-01-07 04:24:33.404Z","เลิกทำบาปต่อเพื่อนร่วมทีม! มาทำความเข้าใจการใช้ Git ในโลกแห่งความจริง ตั้งแต่การวางโครงสร้าง Branch ไปจนถึงกระบวนการ Pull Request และ Code Review เพื่อให้งานเดินหน้าอย่างไม่มีสะดุด","2026-06-07 06:43:22.195Z",{"alt":208,"cover_image_path":209,"created":210,"expand":211,"id":243,"published_at":244,"school_blog":239,"short_description":245,"title":208,"updated":246,"slug":240,"views":242},"กว่าจะเป็นภาษา C: รากฐานที่สร้างโลกโปรแกรมมิ่งสมัยใหม่","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F1g5o0h6567abvrn\u002Fcover_image_the_origin_of_c_the_foundation_of_modern_programming_8of9mwux13.webp","2026-03-04 08:20:49.766Z",{"keywords":212,"locale":233,"school_blog":234},[213,218,223,228],{"collectionId":12,"collectionName":13,"created":214,"created_by":15,"id":215,"name":216,"updated":217,"updated_by":15},"2026-03-04 08:20:42.894Z","q8fw2bf4sm83pak","Bell Labs","2026-06-07 06:45:10.977Z",{"collectionId":12,"collectionName":13,"created":219,"created_by":15,"id":220,"name":221,"updated":222,"updated_by":15},"2026-03-04 08:20:45.500Z","9f8c26oyzxwvs13","Dennis Ritchie","2026-06-07 06:45:11.224Z",{"collectionId":12,"collectionName":13,"created":224,"created_by":15,"id":225,"name":226,"updated":227,"updated_by":15},"2026-03-04 08:20:47.293Z","ou39mpoaswi4aaw","ประวัติภาษา C","2026-06-07 06:45:11.423Z",{"collectionId":12,"collectionName":13,"created":229,"created_by":15,"id":230,"name":231,"updated":232,"updated_by":15},"2026-03-04 08:20:49.166Z","sfmbfwte78iapqh","ภาษา C","2026-06-07 06:45:11.704Z",{"code":35,"collectionId":36,"collectionName":37,"created":38,"flag":39,"id":40,"is_default":41,"label":42,"updated":43},{"category":136,"collectionId":46,"collectionName":47,"created":48,"expand":235,"id":239,"slug":240,"updated":241,"views":242},{"category":236},{"blogIds":237,"collectionId":52,"collectionName":53,"created":140,"created_by":15,"id":136,"image":48,"image_alt":48,"image_path":48,"label":238,"name":142,"priority":143,"publish_at":144,"scheduled_at":48,"status":61,"updated":145,"updated_by":15},[],{"en":142,"th":142},"si4b3bern5ywhh2","history-of-c-programming-language","2026-06-11 16:55:31.501Z",241,"1g5o0h6567abvrn","2026-01-01 04:09:12.321Z","เจาะลึกประวัติศาสตร์ภาษา C จากจุดเริ่มต้นที่ Bell Labs สู่การเป็นรากฐานของ OS และภาษาโปรแกรมมิ่งทั่วโลก เรียนรู้เบื้องหลังความท้าทายทางเทคนิคที่เปลี่ยนโลกนักพัฒนาไปตลอดกาล","2026-06-07 06:42:45.041Z",{"alt":248,"cover_image_path":249,"created":250,"expand":251,"id":287,"published_at":288,"school_blog":283,"short_description":289,"title":248,"updated":290,"slug":284,"views":286},"JS2GO EP.50 การ Deploy Application: Go vs Node.js สำหรับระบบ Production","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F8hbhqgc0757fiic\u002Fcover_image_js2_go_ep_50_deploying_applications_go_vs_node_156u4kg4w1.oductionSystems.webp","2026-03-04 08:44:47.832Z",{"keywords":252,"locale":269,"school_blog":270},[253,258,259,264],{"collectionId":12,"collectionName":13,"created":254,"created_by":15,"id":255,"name":256,"updated":257,"updated_by":15},"2026-03-04 08:44:47.024Z","p4tvi007knx0nib","Deploy Application","2026-06-07 06:46:38.718Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":260,"created_by":15,"id":261,"name":262,"updated":263,"updated_by":15},"2026-03-04 08:24:40.405Z","05u3tysava2z6ga","Node.js","2026-06-07 06:45:12.195Z",{"collectionId":12,"collectionName":13,"created":265,"created_by":15,"id":266,"name":267,"updated":268,"updated_by":15},"2026-03-04 08:44:47.385Z","li4cs2v3atd0wds","Production","2026-06-07 06:46:38.822Z",{"code":35,"collectionId":36,"collectionName":37,"created":38,"flag":39,"id":40,"is_default":41,"label":42,"updated":43},{"category":271,"collectionId":46,"collectionName":47,"created":48,"expand":272,"id":283,"slug":284,"updated":285,"views":286},"hsa1afr8fcnd6qb",{"category":273},{"blogIds":274,"collectionId":52,"collectionName":53,"created":275,"created_by":15,"id":271,"image":276,"image_alt":48,"image_path":277,"label":278,"name":279,"priority":280,"publish_at":281,"scheduled_at":48,"status":61,"updated":282,"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":279,"th":279},"JS2GO",10,"2025-08-11 03:41:08.820Z","2026-06-07 06:45:02.240Z","2qqbgr4sjupn62h","deploy-application-go-vs-nodejs-production","2026-06-16 22:24:47.564Z",234,"8hbhqgc0757fiic","2025-12-30 10:59:34.161Z","บทสรุป End-to-End Deployment เปรียบเทียบ Go และ Node.js ในโลก Production ตั้งแต่ Build, Docker, Secrets, CI\u002FCD ไปจนถึง Zero-downtime Deployment จากประสบการณ์ใช้งานจริง","2026-06-07 06:43:22.811Z",{"alt":292,"cover_image_path":293,"created":294,"expand":295,"id":324,"published_at":325,"school_blog":320,"short_description":326,"title":292,"updated":327,"slug":321,"views":323},"Git สำหรับผู้เริ่มต้น: เข้าใจ Add, Commit, Push แบบเห็นภาพ ไม่ต้องท่องจำ","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F0nq4jactw3ay5um\u002Finfographic_showing_git_workflow_working_directory_staging_area_and_local_repository_xretq2u7fp.webp","2026-03-04 08:44:47.152Z",{"keywords":296,"locale":314,"school_blog":315},[297,298,303,308,313],{"collectionId":12,"collectionName":13,"created":181,"created_by":15,"id":182,"name":183,"updated":184,"updated_by":15},{"collectionId":12,"collectionName":13,"created":299,"created_by":15,"id":300,"name":301,"updated":302,"updated_by":15},"2026-03-04 08:44:45.516Z","3nmqs1jfzhl7unv","สอน Git","2026-06-07 06:46:38.371Z",{"collectionId":12,"collectionName":13,"created":304,"created_by":15,"id":305,"name":306,"updated":307,"updated_by":15},"2026-03-04 08:44:45.738Z","zii0fvxs1ygxi1r","Git สำหรับมือใหม่","2026-06-07 06:46:38.466Z",{"collectionId":12,"collectionName":13,"created":309,"created_by":15,"id":310,"name":311,"updated":312,"updated_by":15},"2026-03-04 08:44:46.125Z","reeulx12kt2xrmk","พื้นฐาน Git","2026-06-07 06:46:38.568Z",{"collectionId":12,"collectionName":13,"created":176,"created_by":15,"id":177,"name":178,"updated":179,"updated_by":15},{"code":35,"collectionId":36,"collectionName":37,"created":38,"flag":39,"id":40,"is_default":41,"label":42,"updated":43},{"category":187,"collectionId":46,"collectionName":47,"created":48,"expand":316,"id":320,"slug":321,"updated":322,"views":323},{"category":317},{"blogIds":318,"collectionId":52,"collectionName":53,"created":191,"created_by":15,"id":187,"image":192,"image_alt":48,"image_path":193,"label":319,"name":195,"priority":196,"publish_at":197,"scheduled_at":48,"status":61,"updated":198,"updated_by":15},[],{"en":195,"th":195},"8ljoi174s3n7xdv","git-for-beginners-visual-guide","2026-06-19 01:16:26.261Z",281,"0nq4jactw3ay5um","2025-12-30 10:31:28.406Z","เลิกตั้งชื่อไฟล์ Project_Final ได้แล้ว! มาทำความเข้าใจพื้นฐาน Git ผ่านภาพจำที่เข้าใจง่าย เรียนรู้ขั้นตอน Add, Commit และ Push แบบโปรแกรมเมอร์มืออาชีพ","2026-06-07 06:43:22.517Z",{"alt":329,"cover_image_path":330,"created":331,"expand":332,"id":365,"published_at":366,"school_blog":361,"short_description":367,"title":329,"updated":368,"slug":362,"views":364},"EP.123 Load Balancing & Sticky Sessions สำหรับ WebSocket (Production-Ready Guide)","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F9jkgoya0lc1xyon\u002Fcover_image_ep_gqh5x2ytmj.onsforWebSocket.webp","2026-03-04 08:44:49.572Z",{"keywords":333,"locale":355,"school_blog":356},[334,339,340,345,350],{"collectionId":12,"collectionName":13,"created":335,"created_by":15,"id":336,"name":337,"updated":338,"updated_by":15},"2026-03-04 08:44:48.724Z","s6xhnfomy7n5ycp","WebSocket Server","2026-06-07 06:46:39.070Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"collectionId":12,"collectionName":13,"created":341,"created_by":15,"id":342,"name":343,"updated":344,"updated_by":15},"2026-03-04 08:34:10.799Z","m3qoswhgnc4c38n","Kubernetes","2026-06-07 06:46:00.116Z",{"collectionId":12,"collectionName":13,"created":346,"created_by":15,"id":347,"name":348,"updated":349,"updated_by":15},"2026-03-04 08:44:49.054Z","vbjgbr5ah0kh43p","Real-time System","2026-06-07 06:46:39.270Z",{"collectionId":12,"collectionName":13,"created":351,"created_by":15,"id":352,"name":353,"updated":354,"updated_by":15},"2026-03-04 08:20:14.253Z","ah6lvy4x8qe08l5","Golang","2026-06-07 06:45:08.193Z",{"code":35,"collectionId":36,"collectionName":37,"created":38,"flag":39,"id":40,"is_default":41,"label":42,"updated":43},{"category":45,"collectionId":46,"collectionName":47,"created":48,"expand":357,"id":361,"slug":362,"updated":363,"views":364},{"category":358},{"blogIds":359,"collectionId":52,"collectionName":53,"created":54,"created_by":15,"id":45,"image":55,"image_alt":48,"image_path":56,"label":360,"name":58,"priority":59,"publish_at":60,"scheduled_at":48,"status":61,"updated":62,"updated_by":15},[],{"en":58,"th":58},"rr43ycru4104v7f","ep-123-load-balancing-sticky-sessions-websocket","2026-05-27 08:01:51.970Z",270,"9jkgoya0lc1xyon","2025-12-30 09:45:56.384Z","เจาะลึกการออกแบบ Load Balancer สำหรับ WebSocket ตั้งแต่หลักการ Sticky Session ไปจนถึงแนวทาง Scale ระบบจริงบน Kubernetes เพื่อป้องกันการหลุดของ connection และรองรับผู้ใช้จำนวนมากในระดับ Production","2026-06-07 06:43:23.353Z",{"alt":370,"cover_image_path":371,"created":372,"expand":373,"id":402,"published_at":403,"school_blog":398,"short_description":404,"title":370,"updated":405,"slug":399,"views":401},"EP.122 ขยายระบบ WebSocket ข้าม Region ด้วย Geo-distributed Scaling","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fknc34p98jnuu78s\u002Fcover_image_ep_wgq6o3mql5.iesforWebSocket.webp","2026-03-04 08:44:49.918Z",{"keywords":374,"locale":392,"school_blog":393},[375,376,377,382,387],{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"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":378,"created_by":15,"id":379,"name":380,"updated":381,"updated_by":15},"2026-03-04 08:44:32.154Z","u0s66bjop3dljau","Horizontal Scaling","2026-06-07 06:46:34.757Z",{"collectionId":12,"collectionName":13,"created":383,"created_by":15,"id":384,"name":385,"updated":386,"updated_by":15},"2026-03-04 08:44:49.245Z","mmj7m8vbrznqxx6","Geo-Distributed","2026-06-07 06:46:39.431Z",{"collectionId":12,"collectionName":13,"created":388,"created_by":15,"id":389,"name":390,"updated":391,"updated_by":15},"2026-03-04 08:44:49.445Z","0ips6v3gj6yy1h7","ระบบเรียลไทม์","2026-06-07 06:46:39.574Z",{"code":35,"collectionId":36,"collectionName":37,"created":38,"flag":39,"id":40,"is_default":41,"label":42,"updated":43},{"category":45,"collectionId":46,"collectionName":47,"created":48,"expand":394,"id":398,"slug":399,"updated":400,"views":401},{"category":395},{"blogIds":396,"collectionId":52,"collectionName":53,"created":54,"created_by":15,"id":45,"image":55,"image_alt":48,"image_path":56,"label":397,"name":58,"priority":59,"publish_at":60,"scheduled_at":48,"status":61,"updated":62,"updated_by":15},[],{"en":58,"th":58},"br3q5z8ln357s53","websocket-geo-scaling-strategies","2026-05-13 08:24:48.462Z",226,"knc34p98jnuu78s","2025-12-30 09:45:47.000Z","เรียนรู้แนวทางขยาย WebSocket Server แบบข้ามภูมิภาค เพื่อลด latency รองรับผู้ใช้ทั่วโลก และวางโครงสร้างให้พร้อมระดับ Enterprise","2026-06-07 06:43:23.504Z",{"alt":407,"cover_image_path":408,"created":409,"expand":410,"id":432,"published_at":433,"school_blog":428,"short_description":434,"title":407,"updated":435,"slug":429,"views":431},"EP.121 Deploy WebSocket Server บน Kubernetes ให้เสถียรและพร้อมใช้งานจริง","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F7zzc9diqnbfzpd5\u002Fcover_image_ep_itflh3jc0p.oductionSystems.webp","2026-03-04 08:44:50.865Z",{"keywords":411,"locale":422,"school_blog":423},[412,413,414,419,420,421],{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"updated_by":15},{"collectionId":12,"collectionName":13,"created":341,"created_by":15,"id":342,"name":343,"updated":344,"updated_by":15},{"collectionId":12,"collectionName":13,"created":415,"created_by":15,"id":416,"name":417,"updated":418,"updated_by":15},"2026-03-04 08:44:18.923Z","jt1jqlzs29xu1i7","Deploy","2026-06-07 06:46:31.098Z",{"collectionId":12,"collectionName":13,"created":265,"created_by":15,"id":266,"name":267,"updated":268,"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":351,"created_by":15,"id":352,"name":353,"updated":354,"updated_by":15},{"code":35,"collectionId":36,"collectionName":37,"created":38,"flag":39,"id":40,"is_default":41,"label":42,"updated":43},{"category":45,"collectionId":46,"collectionName":47,"created":48,"expand":424,"id":428,"slug":429,"updated":430,"views":431},{"category":425},{"blogIds":426,"collectionId":52,"collectionName":53,"created":54,"created_by":15,"id":45,"image":55,"image_alt":48,"image_path":56,"label":427,"name":58,"priority":59,"publish_at":60,"scheduled_at":48,"status":61,"updated":62,"updated_by":15},[],{"en":58,"th":58},"jdvfu3khsdfw08k","deploy-websocket-server-kubernetes-production","2026-06-06 18:59:46.687Z",276,"7zzc9diqnbfzpd5","2025-12-29 10:10:07.916Z","เรียนรู้วิธี Deploy WebSocket Server ด้วย Kubernetes ตั้งแต่การสร้าง Docker Image, ตั้งค่า Load Balancer, ใช้ Sticky Session, Auto Scaling และจัดการ Graceful Shutdown ให้พร้อมใช้งานในระดับ Production จริง","2026-06-07 06:43:23.871Z",{"alt":437,"cover_image_path":438,"created":439,"expand":440,"id":463,"published_at":464,"school_blog":460,"short_description":465,"title":437,"updated":466,"slug":461,"views":242},"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":441,"locale":454,"school_blog":455},[442,443,447,448,449],{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"updated_by":15},{"collectionId":12,"collectionName":13,"created":444,"created_by":15,"id":445,"name":58,"updated":446,"updated_by":15},"2026-03-04 08:44:51.471Z","hlato0hav8vo8wm","2026-06-07 06:46:40.040Z",{"collectionId":12,"collectionName":13,"created":351,"created_by":15,"id":352,"name":353,"updated":354,"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":450,"created_by":15,"id":451,"name":452,"updated":453,"updated_by":15},"2026-03-04 08:44:51.688Z","ztv5f26qud778za","whiteboard","2026-06-07 06:46:40.164Z",{"code":35,"collectionId":36,"collectionName":37,"created":38,"flag":39,"id":40,"is_default":41,"label":42,"updated":43},{"category":45,"collectionId":46,"collectionName":47,"created":48,"expand":456,"id":460,"slug":461,"updated":462,"views":242},{"category":457},{"blogIds":458,"collectionId":52,"collectionName":53,"created":54,"created_by":15,"id":45,"image":55,"image_alt":48,"image_path":56,"label":459,"name":58,"priority":59,"publish_at":60,"scheduled_at":48,"status":61,"updated":62,"updated_by":15},[],{"en":58,"th":58},"clsm7oxkvsptxhx","ep-120-realtime-whiteboard-drawing-websocket","2026-05-25 19:49:50.035Z","b3o64zx8imsejrd","2025-12-29 04:41:19.809Z","ออกแบบระบบ Whiteboard ที่รองรับการวาดพร้อมกันหลายคนแบบเรียลไทม์ ด้วย Go และ WebSocket พร้อมแนวคิด undo\u002Fredo และ performance optimization","2026-06-07 06:43:24.279Z",{"alt":468,"cover_image_path":469,"created":470,"expand":471,"id":505,"published_at":506,"school_blog":501,"short_description":507,"title":468,"updated":508,"slug":502,"views":504},"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":472,"locale":495,"school_blog":496},[473,478,483,488,493,494],{"collectionId":12,"collectionName":13,"created":474,"created_by":15,"id":475,"name":476,"updated":477,"updated_by":15},"2026-03-04 08:44:52.376Z","7kgkxt1b9xd0cca","Authorization","2026-06-07 06:46:40.298Z",{"collectionId":12,"collectionName":13,"created":479,"created_by":15,"id":480,"name":481,"updated":482,"updated_by":15},"2026-03-04 08:34:18.095Z","z3u3nql685g5e3b","Authentication","2026-06-07 06:46:03.611Z",{"collectionId":12,"collectionName":13,"created":484,"created_by":15,"id":485,"name":486,"updated":487,"updated_by":15},"2026-03-04 08:44:53.062Z","puutdnxuitnxxgq","Backend","2026-06-07 06:46:40.599Z",{"collectionId":12,"collectionName":13,"created":489,"created_by":15,"id":490,"name":491,"updated":492,"updated_by":15},"2026-03-04 08:44:52.790Z","tkf1l5rauw0t7m0","Secure API Design","2026-06-07 06:46:40.418Z",{"collectionId":12,"collectionName":13,"created":260,"created_by":15,"id":261,"name":262,"updated":263,"updated_by":15},{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},{"code":35,"collectionId":36,"collectionName":37,"created":38,"flag":39,"id":40,"is_default":41,"label":42,"updated":43},{"category":271,"collectionId":46,"collectionName":47,"created":48,"expand":497,"id":501,"slug":502,"updated":503,"views":504},{"category":498},{"blogIds":499,"collectionId":52,"collectionName":53,"created":275,"created_by":15,"id":271,"image":276,"image_alt":48,"image_path":277,"label":500,"name":279,"priority":280,"publish_at":281,"scheduled_at":48,"status":61,"updated":282,"updated_by":15},[],{"en":279,"th":279},"q6au12trb7ipmxx","js2go-ep49-backend-security-authentication-authorization-validation","2026-06-20 00:56:16.239Z",264,"ik5ueoh4be7ojlt","2025-12-24 10:19:35.052Z","สรุปพื้นฐาน Security ที่ระบบ Backend ต้องมี ตั้งแต่ Authentication Authorization และ Data Validation พร้อมแนวทางใช้งานจริงใน Go และ Node.js สำหรับระบบ Production","2026-06-07 06:43:24.586Z",7,12,432,36]