[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-en-3-12-Cutting-Edge%252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252520Tech-all-all-createdAt:desc-default":3},{"data":4,"page":542,"perPage":543,"totalItems":544,"totalPages":545},[5,79,138,202,239,281,313,355,402,442,468,505],{"alt":6,"cover_image_path":7,"created":8,"expand":9,"id":74,"published_at":75,"school_blog":70,"short_description":76,"title":77,"updated":78,"slug":71,"views":73},"The bright red Ruby programming language logo with a creative and happy developer workspace background.","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Ferby2ett3ey5sod\u002F2q5mgphj7g2_48s1iwjgkx.png","2026-03-16 05:54:04.252Z",{"keywords":10,"locale":44,"school_blog":54},[11,19,24,29,34,39],{"collectionId":12,"collectionName":13,"created":14,"created_by":15,"id":16,"name":17,"updated":18,"updated_by":15},"sclkey987654321","school_keywords","2026-03-16 05:53:14.820Z","","j85uu14nwfncx1a","Ruby History","2026-04-10 16:14:42.926Z",{"collectionId":12,"collectionName":13,"created":20,"created_by":15,"id":21,"name":22,"updated":23,"updated_by":15},"2026-03-04 08:34:47.544Z","3ky9n7b9hsgjf35","Ruby","2026-04-10 16:08:22.609Z",{"collectionId":12,"collectionName":13,"created":25,"created_by":15,"id":26,"name":27,"updated":28,"updated_by":15},"2026-03-16 05:53:24.913Z","3agesqkm8jsfhwm","What is Ruby","2026-04-10 16:14:43.069Z",{"collectionId":12,"collectionName":13,"created":30,"created_by":15,"id":31,"name":32,"updated":33,"updated_by":15},"2026-03-16 05:49:10.525Z","s0pqrcq7u7b17fv","Yukihiro Matsumoto","2026-04-10 16:14:42.645Z",{"collectionId":12,"collectionName":13,"created":35,"created_by":15,"id":36,"name":37,"updated":38,"updated_by":15},"2026-03-16 05:49:18.125Z","0runldorrswj5ds","MINASWAN","2026-04-10 16:14:42.787Z",{"collectionId":12,"collectionName":13,"created":40,"created_by":15,"id":41,"name":42,"updated":43,"updated_by":15},"2026-03-04 08:19:55.412Z","hz7yzm54i2o6cl7","web development","2026-04-10 16:07:24.402Z",{"code":45,"collectionId":46,"collectionName":47,"created":48,"flag":49,"id":50,"is_default":51,"label":52,"updated":53},"en","pbc_1989393366","locales","2026-01-22 11:00:02.726Z","twemoji:flag-united-states","qv9c1llfov2d88z",false,"English","2026-04-10 15:42:46.825Z",{"category":55,"collectionId":56,"collectionName":57,"created":15,"expand":58,"id":70,"slug":71,"updated":72,"views":73},"isnp2fv80bn3yem","pbc_2105096300","school_blogs",{"category":59},{"blogIds":60,"collectionId":61,"collectionName":62,"created":63,"created_by":15,"id":55,"image":15,"image_alt":15,"image_path":15,"label":64,"name":65,"priority":66,"publish_at":67,"scheduled_at":15,"status":68,"updated":69,"updated_by":15},[],"sclcatblg987654321","school_category_blogs","2026-03-04 08:19:47.590Z",{"en":65,"th":65},"กว่าจะเป็นภาษาโค้ด",8,"2026-02-18 01:59:49.988Z","published","2026-04-25 02:32:14.031Z","g8t67hwsdyuoztk","evolution-of-ruby-for-developer-happiness","2026-05-12 21:26:36.714Z",145,"erby2ett3ey5sod","2026-03-18 04:46:34.062Z","Discover why Ruby is the most beloved language for developers. Explore the MINASWAN philosophy and the power of Ruby on Rails in the startup world.","The History of Ruby: A Language Designed for Developer Happiness and Humanity","2026-05-08 06:52:16.842Z",{"alt":80,"cover_image_path":81,"created":82,"expand":83,"id":133,"published_at":134,"school_blog":129,"short_description":135,"title":136,"updated":137,"slug":130,"views":132},"5 Best MacBook External Monitors for Programmers 2026 featuring ARZOPA Z1RC and BenQ RD280U","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Ffcbqg0wgyzvpf4g\u002F22lezkx5a7a_9qza66zcpf.png","2026-03-16 06:50:00.366Z",{"keywords":84,"locale":115,"school_blog":116},[85,90,95,100,105,110],{"collectionId":12,"collectionName":13,"created":86,"created_by":15,"id":87,"name":88,"updated":89,"updated_by":15},"2026-03-16 06:48:56.529Z","t89p5msf6snqcxd","MacBook external monitor","2026-04-10 16:14:43.633Z",{"collectionId":12,"collectionName":13,"created":91,"created_by":15,"id":92,"name":93,"updated":94,"updated_by":15},"2026-03-16 06:49:05.338Z","87md0kh84kqbx8c","best monitor for programming 2026","2026-04-10 16:14:43.721Z",{"collectionId":12,"collectionName":13,"created":96,"created_by":15,"id":97,"name":98,"updated":99,"updated_by":15},"2026-03-16 06:29:41.694Z","0jobzj69zmb9rsg","ARZOPA Z1RC","2026-04-10 16:14:43.460Z",{"collectionId":12,"collectionName":13,"created":101,"created_by":15,"id":102,"name":103,"updated":104,"updated_by":15},"2026-03-16 06:49:22.523Z","bszj87t9ek8zlas","BenQ RD280U","2026-04-10 16:14:43.914Z",{"collectionId":12,"collectionName":13,"created":106,"created_by":15,"id":107,"name":108,"updated":109,"updated_by":15},"2026-03-16 06:49:51.533Z","5eyvwytlle97npa","programmer setup","2026-04-10 16:14:44.071Z",{"collectionId":12,"collectionName":13,"created":111,"created_by":15,"id":112,"name":113,"updated":114,"updated_by":15},"2026-03-16 06:49:58.837Z","u1s8mqzkkosas82","developer gadgets","2026-04-10 16:14:44.221Z",{"code":45,"collectionId":46,"collectionName":47,"created":48,"flag":49,"id":50,"is_default":51,"label":52,"updated":53},{"category":117,"collectionId":56,"collectionName":57,"created":15,"expand":118,"id":129,"slug":130,"updated":131,"views":132},"spm4l1k5bgmhmmt",{"category":119},{"blogIds":120,"collectionId":61,"collectionName":62,"created":121,"created_by":15,"id":117,"image":122,"image_alt":15,"image_path":123,"label":124,"name":125,"priority":126,"publish_at":127,"scheduled_at":15,"status":68,"updated":128,"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":125,"th":125},"Knowledge",0,"2026-03-18 02:25:41.222Z","2026-04-25 02:32:14.497Z","s3vhc075erm9t15","best-macbook-monitors-for-programmers-2026","2026-05-25 14:29:10.540Z",139,"fcbqg0wgyzvpf4g","2026-03-17 03:05:00.000Z","Stop wasting money on the wrong screen! Discover the top 5 monitors for MacBook tailored for developers, from portable ARZOPA Z1RC to pro-coding BenQ RD280U.","5 Best MacBook External Monitors for Programmers (2026 Update)","2026-05-12 18:52:45.105Z",{"alt":139,"cover_image_path":140,"created":141,"expand":142,"id":197,"published_at":198,"school_blog":193,"short_description":199,"title":200,"updated":201,"slug":194,"views":196},"Article cover for Golang The Series EP.140 Finale, featuring production-grade Go code snippets for an Enterprise WebSocket server.","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fo74ygkohmq4k9nf\u002Farticle_cover_for_golang_the_series_ep_874pa0lrr4.eWebSocketserver.png","2026-03-16 04:03:45.337Z",{"keywords":143,"locale":179,"school_blog":180},[144,149,154,159,164,169,174],{"collectionId":12,"collectionName":13,"created":145,"created_by":15,"id":146,"name":147,"updated":148,"updated_by":15},"2026-03-04 08:20:14.253Z","ah6lvy4x8qe08l5","Golang","2026-04-10 16:07:26.172Z",{"collectionId":12,"collectionName":13,"created":150,"created_by":15,"id":151,"name":152,"updated":153,"updated_by":15},"2026-03-04 08:34:00.920Z","ecac9y661or1xka","WebSocket","2026-04-10 16:08:05.227Z",{"collectionId":12,"collectionName":13,"created":155,"created_by":15,"id":156,"name":157,"updated":158,"updated_by":15},"2026-03-04 08:46:00.361Z","wq8gqpsnvd2bmma","Enterprise","2026-04-10 16:13:07.055Z",{"collectionId":12,"collectionName":13,"created":160,"created_by":15,"id":161,"name":162,"updated":163,"updated_by":15},"2026-03-04 08:44:21.262Z","f2p94t41e9t8hnv","system design","2026-04-10 16:12:43.659Z",{"collectionId":12,"collectionName":13,"created":165,"created_by":15,"id":166,"name":167,"updated":168,"updated_by":15},"2026-03-16 03:49:11.920Z","68w24pqpvxluy94","Roadmap","2026-04-10 16:14:41.404Z",{"collectionId":12,"collectionName":13,"created":170,"created_by":15,"id":171,"name":172,"updated":173,"updated_by":15},"2026-03-16 04:03:30.341Z","xbv6j7jyjlxdqqv","Software Engineering","2026-04-10 16:14:41.803Z",{"collectionId":12,"collectionName":13,"created":175,"created_by":15,"id":176,"name":177,"updated":178,"updated_by":15},"2026-03-04 08:44:53.062Z","puutdnxuitnxxgq","Backend","2026-04-10 16:12:51.264Z",{"code":45,"collectionId":46,"collectionName":47,"created":48,"flag":49,"id":50,"is_default":51,"label":52,"updated":53},{"category":181,"collectionId":56,"collectionName":57,"created":15,"expand":182,"id":193,"slug":194,"updated":195,"views":196},"wqxt7ag2gn7xcmk",{"category":183},{"blogIds":184,"collectionId":61,"collectionName":62,"created":185,"created_by":15,"id":181,"image":186,"image_alt":15,"image_path":187,"label":188,"name":189,"priority":190,"publish_at":191,"scheduled_at":15,"status":68,"updated":192,"updated_by":15},[],"2026-03-04 08:33:53.210Z","59ty92ns80w_15oc1implw.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fwqxt7ag2gn7xcmk\u002F59ty92ns80w_15oc1implw.png",{"en":189,"th":189},"Golang The Series",1,"2026-03-16 04:39:38.440Z","2026-04-25 02:32:15.470Z","c2puowxb5818jta","go-enterprise-websocket-roadmap-series-finale","2026-05-24 11:56:15.438Z",158,"o74ygkohmq4k9nf","2026-03-17 02:55:25.743Z","The epic conclusion to our 140-episode journey. Master the 4 pillars of enterprise WebSockets, access our production-ready code template, and discover what to study next to become a top-tier Real-time Architect.","Golang The Series EP.140: Enterprise WebSocket Roadmap & The Grand Finale","2026-05-12 18:52:44.726Z",{"alt":203,"cover_image_path":204,"created":205,"expand":206,"id":235,"published_at":236,"school_blog":231,"short_description":237,"title":203,"updated":238,"slug":232,"views":234},"Golang The Series EP.139: Mobile & Low-bandwidth – Optimizing WebSockets for Unstable Networks","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fvtglxlbfpe6ol4j\u002Fcover_image_golang_the_series_ep_xh66sejcok.nstableNetworks.webp","2026-03-04 08:43:14.983Z",{"keywords":207,"locale":225,"school_blog":226},[208,209,210,215,220],{"collectionId":12,"collectionName":13,"created":145,"created_by":15,"id":146,"name":147,"updated":148,"updated_by":15},{"collectionId":12,"collectionName":13,"created":150,"created_by":15,"id":151,"name":152,"updated":153,"updated_by":15},{"collectionId":12,"collectionName":13,"created":211,"created_by":15,"id":212,"name":213,"updated":214,"updated_by":15},"2026-03-04 08:40:54.386Z","hmclps1vkgyr7my","Mobile Development","2026-04-10 16:12:40.470Z",{"collectionId":12,"collectionName":13,"created":216,"created_by":15,"id":217,"name":218,"updated":219,"updated_by":15},"2026-03-04 08:40:54.493Z","te1uagqlfki2src","Bandwidth Optimization","2026-04-10 16:12:40.617Z",{"collectionId":12,"collectionName":13,"created":221,"created_by":15,"id":222,"name":223,"updated":224,"updated_by":15},"2026-03-04 08:40:54.606Z","s26m2zvbm8amosp","Real-time Systems","2026-04-10 16:12:40.769Z",{"code":45,"collectionId":46,"collectionName":47,"created":48,"flag":49,"id":50,"is_default":51,"label":52,"updated":53},{"category":181,"collectionId":56,"collectionName":57,"created":15,"expand":227,"id":231,"slug":232,"updated":233,"views":234},{"category":228},{"blogIds":229,"collectionId":61,"collectionName":62,"created":185,"created_by":15,"id":181,"image":186,"image_alt":15,"image_path":187,"label":230,"name":189,"priority":190,"publish_at":191,"scheduled_at":15,"status":68,"updated":192,"updated_by":15},[],{"en":189,"th":189},"3kpsi6righezgrh","go-websocket-mobile-resilience-strategies","2026-05-25 09:32:22.480Z",207,"vtglxlbfpe6ol4j","2026-03-02 08:50:25.730Z","Master WebSocket resilience for mobile users. Learn expert strategies for battery efficiency, adaptive heartbeats, and message recovery to keep your real-time app running smoothly on 3G or jittery connections.","2026-05-08 06:51:44.151Z",{"alt":240,"cover_image_path":241,"created":242,"expand":243,"id":277,"published_at":278,"school_blog":273,"short_description":279,"title":240,"updated":280,"slug":274,"views":276},"Golang The Series EP.138: Mastering WebSocket Latency & Performance Optimization","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fimmh876ctlnb2zk\u002Fcover_image_golang_the_series_ep_9ceb66i80j.nceOptimization.webp","2026-03-04 08:44:12.640Z",{"keywords":244,"locale":267,"school_blog":268},[245,250,255,260,265,266],{"collectionId":12,"collectionName":13,"created":246,"created_by":15,"id":247,"name":248,"updated":249,"updated_by":15},"2026-03-04 08:20:11.547Z","ey3puyme01a9bsw","Go","2026-04-10 16:07:25.893Z",{"collectionId":12,"collectionName":13,"created":251,"created_by":15,"id":252,"name":253,"updated":254,"updated_by":15},"2026-03-04 08:44:10.705Z","xicaissou94ouj5","Protobuf","2026-04-10 16:12:40.965Z",{"collectionId":12,"collectionName":13,"created":256,"created_by":15,"id":257,"name":258,"updated":259,"updated_by":15},"2026-03-04 08:44:11.548Z","ezm3p0vsuowuadd","Latency","2026-04-10 16:12:41.299Z",{"collectionId":12,"collectionName":13,"created":261,"created_by":15,"id":262,"name":263,"updated":264,"updated_by":15},"2026-03-04 08:44:12.339Z","s0awvhr8cgjuosg","Performance Tuning","2026-04-10 16:12:41.567Z",{"collectionId":12,"collectionName":13,"created":150,"created_by":15,"id":151,"name":152,"updated":153,"updated_by":15},{"collectionId":12,"collectionName":13,"created":145,"created_by":15,"id":146,"name":147,"updated":148,"updated_by":15},{"code":45,"collectionId":46,"collectionName":47,"created":48,"flag":49,"id":50,"is_default":51,"label":52,"updated":53},{"category":181,"collectionId":56,"collectionName":57,"created":15,"expand":269,"id":273,"slug":274,"updated":275,"views":276},{"category":270},{"blogIds":271,"collectionId":61,"collectionName":62,"created":185,"created_by":15,"id":181,"image":186,"image_alt":15,"image_path":187,"label":272,"name":189,"priority":190,"publish_at":191,"scheduled_at":15,"status":68,"updated":192,"updated_by":15},[],{"en":189,"th":189},"fwr0pxtvmc42yqk","go-websocket-latency-monitoring-performance-tuning","2026-05-15 13:27:05.017Z",211,"immh876ctlnb2zk","2026-03-02 04:30:24.037Z","Stop relying on averages! Dive into P95\u002FP99 latency metrics and expert Go optimization techniques like sync.Pool, Protobuf, and TCP tuning to build lightning-fast, real-time systems.","2026-05-08 06:51:45.601Z",{"alt":282,"cover_image_path":283,"created":284,"expand":285,"id":309,"published_at":310,"school_blog":306,"short_description":311,"title":282,"updated":312,"slug":307,"views":234},"Golang The Series EP.137: Enterprise WebSocket Security – Building an Unbreakable Fortress","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F45evsjmefj3c18r\u002Fgolang_the_series_ep_9gpmj14jad.eakableFortress.webp","2026-03-04 08:44:14.305Z",{"keywords":286,"locale":300,"school_blog":301},[287,288,289,290,295],{"collectionId":12,"collectionName":13,"created":145,"created_by":15,"id":146,"name":147,"updated":148,"updated_by":15},{"collectionId":12,"collectionName":13,"created":150,"created_by":15,"id":151,"name":152,"updated":153,"updated_by":15},{"collectionId":12,"collectionName":13,"created":246,"created_by":15,"id":247,"name":248,"updated":249,"updated_by":15},{"collectionId":12,"collectionName":13,"created":291,"created_by":15,"id":292,"name":293,"updated":294,"updated_by":15},"2026-03-04 08:34:45.957Z","gk56ug8j38rhci3","cybersecurity","2026-04-10 16:08:22.035Z",{"collectionId":12,"collectionName":13,"created":296,"created_by":15,"id":297,"name":298,"updated":299,"updated_by":15},"2026-03-04 08:44:13.045Z","g4w6cq87d9yzbaz","CSWSH","2026-04-10 16:12:41.704Z",{"code":45,"collectionId":46,"collectionName":47,"created":48,"flag":49,"id":50,"is_default":51,"label":52,"updated":53},{"category":181,"collectionId":56,"collectionName":57,"created":15,"expand":302,"id":306,"slug":307,"updated":308,"views":234},{"category":303},{"blogIds":304,"collectionId":61,"collectionName":62,"created":185,"created_by":15,"id":181,"image":186,"image_alt":15,"image_path":187,"label":305,"name":189,"priority":190,"publish_at":191,"scheduled_at":15,"status":68,"updated":192,"updated_by":15},[],{"en":189,"th":189},"e48pslht6qcpb01","go-enterprise-websocket-security-guide-best-practices","2026-05-21 18:12:29.084Z","45evsjmefj3c18r","2026-02-24 02:34:28.466Z","Beyond WSS: Master the 5 pillars of Enterprise WebSocket security. Learn how to prevent CSWSH hijacking, implement ticket-based authentication, and mitigate DoS attacks in your high-scale Go applications.","2026-05-08 06:51:46.077Z",{"alt":314,"cover_image_path":315,"created":316,"expand":317,"id":351,"published_at":352,"school_blog":347,"short_description":353,"title":314,"updated":354,"slug":348,"views":350},"Golang The Series EP.136: WebSocket Versioning & Backward Compatibility – Seamless Upgrades","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fmlecj7zimfn4ncf\u002Fcover_image_for_golang_the_series_ep_8hjmrmne9l.eamlessUpgrades.webp","2026-03-04 08:44:15.459Z",{"keywords":318,"locale":341,"school_blog":342},[319,320,321,326,331,336],{"collectionId":12,"collectionName":13,"created":145,"created_by":15,"id":146,"name":147,"updated":148,"updated_by":15},{"collectionId":12,"collectionName":13,"created":150,"created_by":15,"id":151,"name":152,"updated":153,"updated_by":15},{"collectionId":12,"collectionName":13,"created":322,"created_by":15,"id":323,"name":324,"updated":325,"updated_by":15},"2026-03-04 08:44:14.062Z","z1020rjuhndf8m9","Versioning","2026-04-10 16:12:41.929Z",{"collectionId":12,"collectionName":13,"created":327,"created_by":15,"id":328,"name":329,"updated":330,"updated_by":15},"2026-03-04 08:44:14.480Z","d23neji0er26rrf","Backward Compatibility","2026-04-10 16:12:42.065Z",{"collectionId":12,"collectionName":13,"created":332,"created_by":15,"id":333,"name":334,"updated":335,"updated_by":15},"2026-03-04 08:44:14.705Z","7qpvbtbl99sazyl","API Design","2026-04-10 16:12:42.202Z",{"collectionId":12,"collectionName":13,"created":337,"created_by":15,"id":338,"name":339,"updated":340,"updated_by":15},"2026-03-04 08:44:15.009Z","kjorqkld4c8r3lc","Subprotocol","2026-04-10 16:12:42.341Z",{"code":45,"collectionId":46,"collectionName":47,"created":48,"flag":49,"id":50,"is_default":51,"label":52,"updated":53},{"category":181,"collectionId":56,"collectionName":57,"created":15,"expand":343,"id":347,"slug":348,"updated":349,"views":350},{"category":344},{"blogIds":345,"collectionId":61,"collectionName":62,"created":185,"created_by":15,"id":181,"image":186,"image_alt":15,"image_path":187,"label":346,"name":189,"priority":190,"publish_at":191,"scheduled_at":15,"status":68,"updated":192,"updated_by":15},[],{"en":189,"th":189},"s6w8li1iqpuuwka","go-websocket-versioning-strategies-guide","2026-05-22 15:29:45.864Z",239,"mlecj7zimfn4ncf","2026-02-23 03:15:08.855Z","Don't break your real-time app! Master professional WebSocket versioning strategies in Go. Learn Path-based, Subprotocol, and Payload versioning to ensure a seamless experience for users on older app versions.","2026-05-08 06:51:46.437Z",{"alt":356,"cover_image_path":357,"created":358,"expand":359,"id":398,"published_at":399,"school_blog":394,"short_description":400,"title":356,"updated":401,"slug":395,"views":397},"How to Use Cloudflare Tunnel to Expose Localhost Without Port Forwarding","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fbm8dllzwthuvdi5\u002Fcover_image_how_to_use_cloudflare_tunnel_to_expose_localhost_without_port_forwarding_3ltp5dhqn6.webp","2026-03-04 08:44:18.025Z",{"keywords":360,"locale":381,"school_blog":382},[361,366,371,376],{"collectionId":12,"collectionName":13,"created":362,"created_by":15,"id":363,"name":364,"updated":365,"updated_by":15},"2026-03-04 08:44:16.622Z","7k1sal58dnj3ycv","Cloudflare Zero Trust","2026-04-10 16:12:42.473Z",{"collectionId":12,"collectionName":13,"created":367,"created_by":15,"id":368,"name":369,"updated":370,"updated_by":15},"2026-03-04 08:44:16.902Z","1pf59ie7wale4so","Localhost","2026-04-10 16:12:42.539Z",{"collectionId":12,"collectionName":13,"created":372,"created_by":15,"id":373,"name":374,"updated":375,"updated_by":15},"2026-03-04 08:44:17.506Z","2hw2c6o2elosloo","Cloudflare Tunnel","2026-04-10 16:12:42.786Z",{"collectionId":12,"collectionName":13,"created":377,"created_by":15,"id":378,"name":379,"updated":380,"updated_by":15},"2026-03-04 08:44:17.746Z","il984gdus3ha65e","how to use cloudflare tunnel","2026-04-10 16:12:42.923Z",{"code":45,"collectionId":46,"collectionName":47,"created":48,"flag":49,"id":50,"is_default":51,"label":52,"updated":53},{"category":383,"collectionId":56,"collectionName":57,"created":15,"expand":384,"id":394,"slug":395,"updated":396,"views":397},"rfxf19ot4iq992c",{"category":385},{"blogIds":386,"collectionId":61,"collectionName":62,"created":387,"created_by":15,"id":383,"image":388,"image_alt":15,"image_path":389,"label":390,"name":391,"priority":126,"publish_at":392,"scheduled_at":15,"status":68,"updated":393,"updated_by":15},[],"2026-03-04 08:32:03.969Z","7acfigk1qkd_lv1k6bkji3.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Frfxf19ot4iq992c\u002F7acfigk1qkd_lv1k6bkji3.png",{"en":391,"th":391},"Web Development","2025-01-21 03:43:00.282Z","2026-04-25 02:32:14.918Z","98jiz88lg5ihh7t","how-to-use-cloudflare-tunnel-localhost","2026-05-22 21:21:29.120Z",215,"bm8dllzwthuvdi5","2026-02-19 02:03:40.665Z","Learn how to use Cloudflare Tunnel to expose your localhost project to the internet securely. No port forwarding or public IP required. The ultimate guide for developers.","2026-05-08 06:51:47.112Z",{"alt":403,"cover_image_path":404,"created":405,"expand":406,"id":439,"published_at":433,"school_blog":435,"short_description":440,"title":403,"updated":441,"slug":436,"views":438},"The History of PHP: From a Simple Resume Tool to Powering 70% of the Web","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fo7hs062vt49pkic\u002Fcover_image_for_the_history_of_php_from_a_simple_resume_tool_to_powering_70_of_the_web_x7joyixjaq.webp","2026-03-04 08:19:55.978Z",{"keywords":407,"locale":424,"school_blog":425},[408,413,418,423],{"collectionId":12,"collectionName":13,"created":409,"created_by":15,"id":410,"name":411,"updated":412,"updated_by":15},"2026-03-04 08:19:51.822Z","53qj3tq2f8ryvz4","PHP History","2026-04-10 16:07:23.916Z",{"collectionId":12,"collectionName":13,"created":414,"created_by":15,"id":415,"name":416,"updated":417,"updated_by":15},"2026-03-04 08:19:53.527Z","kxb5av8exza7ssd","Laravel","2026-04-10 16:07:24.148Z",{"collectionId":12,"collectionName":13,"created":419,"created_by":15,"id":420,"name":421,"updated":422,"updated_by":15},"2026-03-04 08:19:53.961Z","2irxiuyeoskuui2","WordPress","2026-04-10 16:07:24.242Z",{"collectionId":12,"collectionName":13,"created":40,"created_by":15,"id":41,"name":42,"updated":43,"updated_by":15},{"code":45,"collectionId":46,"collectionName":47,"created":48,"flag":49,"id":50,"is_default":51,"label":52,"updated":53},{"category":426,"collectionId":56,"collectionName":57,"created":15,"expand":427,"id":435,"slug":436,"updated":437,"views":438},"102u7miss0ec94h",{"category":428},{"blogIds":429,"collectionId":61,"collectionName":62,"created":430,"created_by":15,"id":426,"image":15,"image_alt":15,"image_path":15,"label":431,"name":432,"priority":66,"publish_at":433,"scheduled_at":15,"status":68,"updated":434,"updated_by":15},[],"2026-03-04 08:19:48.998Z",{"en":432,"th":432},"The Origin of Code","2026-02-18 01:59:52.528Z","2026-04-25 02:32:14.183Z","mne53jn0lm6k2tx","evolution-of-php-from-personal-tool-to-web-giant","2026-05-12 07:30:32.748Z",209,"o7hs062vt49pkic","Discover the evolution of PHP—from Rasmus Lerdorf’s personal scripts to the most dominant server-side language in web history.","2026-05-11 21:24:14.643Z",{"alt":443,"cover_image_path":444,"created":445,"expand":446,"id":464,"published_at":67,"school_blog":460,"short_description":465,"title":466,"updated":467,"slug":461,"views":463},"History of PHP from a resume tracking script to a global web standard","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F674ffks78w25zf4\u002F2k36ktce3wm_xovvij6qyy.png","2026-05-25 05:41:16.526Z",{"keywords":447,"locale":454,"school_blog":455},[448,449,450],{"collectionId":12,"collectionName":13,"created":414,"created_by":15,"id":415,"name":416,"updated":417,"updated_by":15},{"collectionId":12,"collectionName":13,"created":419,"created_by":15,"id":420,"name":421,"updated":422,"updated_by":15},{"collectionId":12,"collectionName":13,"created":451,"created_by":15,"id":452,"name":453,"updated":451,"updated_by":15},"2026-05-25 05:21:48.990Z","ri85qu1k1oz6573","PHP",{"code":45,"collectionId":46,"collectionName":47,"created":48,"flag":49,"id":50,"is_default":51,"label":52,"updated":53},{"category":55,"collectionId":56,"collectionName":57,"created":15,"expand":456,"id":460,"slug":461,"updated":462,"views":463},{"category":457},{"blogIds":458,"collectionId":61,"collectionName":62,"created":63,"created_by":15,"id":55,"image":15,"image_alt":15,"image_path":15,"label":459,"name":65,"priority":66,"publish_at":67,"scheduled_at":15,"status":68,"updated":69,"updated_by":15},[],{"en":65,"th":65},"38enfgkirmgpypq","history-of-php-from-resume-tool-to-web-king","2026-05-25 14:06:05.031Z",264,"674ffks78w25zf4","A summary of the history of PHP, from its origin as Rasmus Lerdorf's personal tool to its development into the backend language powering over 70% of websites today.","History of PHP: From a Resume Tool to the Backend of 70% of Websites","2026-05-25 06:11:35.945Z",{"alt":469,"cover_image_path":470,"created":471,"expand":472,"id":501,"published_at":502,"school_blog":497,"short_description":503,"title":469,"updated":504,"slug":498,"views":500},"Golang The Series EP 135: CI\u002FCD for WebSocket Servers – Seamless Deployment Guide","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fuciara056gpthn7\u002Fcover_image_golang_the_series_ep_jygzx7lhwz.DeploymentGuide.webp","2026-03-04 08:44:19.424Z",{"keywords":473,"locale":491,"school_blog":492},[474,475,480,481,486],{"collectionId":12,"collectionName":13,"created":145,"created_by":15,"id":146,"name":147,"updated":148,"updated_by":15},{"collectionId":12,"collectionName":13,"created":476,"created_by":15,"id":477,"name":478,"updated":479,"updated_by":15},"2026-03-04 08:44:18.322Z","1n94l86nx7etuf9","CI\u002FCD","2026-04-10 16:12:43.067Z",{"collectionId":12,"collectionName":13,"created":150,"created_by":15,"id":151,"name":152,"updated":153,"updated_by":15},{"collectionId":12,"collectionName":13,"created":482,"created_by":15,"id":483,"name":484,"updated":485,"updated_by":15},"2026-03-04 08:44:18.652Z","jr5zczy6qrxmd88","Docker","2026-04-10 16:12:43.264Z",{"collectionId":12,"collectionName":13,"created":487,"created_by":15,"id":488,"name":489,"updated":490,"updated_by":15},"2026-03-04 08:44:18.923Z","jt1jqlzs29xu1i7","Deploy","2026-04-10 16:12:43.373Z",{"code":45,"collectionId":46,"collectionName":47,"created":48,"flag":49,"id":50,"is_default":51,"label":52,"updated":53},{"category":181,"collectionId":56,"collectionName":57,"created":15,"expand":493,"id":497,"slug":498,"updated":499,"views":500},{"category":494},{"blogIds":495,"collectionId":61,"collectionName":62,"created":185,"created_by":15,"id":181,"image":186,"image_alt":15,"image_path":187,"label":496,"name":189,"priority":190,"publish_at":191,"scheduled_at":15,"status":68,"updated":192,"updated_by":15},[],{"en":189,"th":189},"b5wbtaxm8jlj8ec","go-websocket-cicd-seamless-deployment-strategies","2026-05-23 20:23:29.582Z",210,"uciara056gpthn7","2026-02-17 01:37:55.380Z","Master CI\u002FCD for stateful systems. Learn how to deploy Go WebSocket servers seamlessly without dropping connections using GitHub Actions, Docker, and Graceful Shutdown patterns.","2026-05-08 06:51:47.260Z",{"alt":506,"cover_image_path":507,"created":508,"expand":509,"id":538,"published_at":539,"school_blog":534,"short_description":540,"title":506,"updated":541,"slug":535,"views":537},"Golang The Series EP 134: Load & Stress Testing WebSockets with k6","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Fp74ksn1anmv7y5u\u002Fcover_image_golang_the_series_ep_bca1i4gx0z.ebSocketswithk6.webp","2026-03-04 08:44:20.088Z",{"keywords":510,"locale":528,"school_blog":529},[511,512,513,518,523],{"collectionId":12,"collectionName":13,"created":145,"created_by":15,"id":146,"name":147,"updated":148,"updated_by":15},{"collectionId":12,"collectionName":13,"created":150,"created_by":15,"id":151,"name":152,"updated":153,"updated_by":15},{"collectionId":12,"collectionName":13,"created":514,"created_by":15,"id":515,"name":516,"updated":517,"updated_by":15},"2026-03-04 08:44:19.453Z","s7490uhe8oarthf","k6","2026-04-10 16:12:43.471Z",{"collectionId":12,"collectionName":13,"created":519,"created_by":15,"id":520,"name":521,"updated":522,"updated_by":15},"2026-03-04 08:44:19.737Z","wfofysa5fhg0v0p","Load Testing","2026-04-10 16:12:43.560Z",{"collectionId":12,"collectionName":13,"created":524,"created_by":15,"id":525,"name":526,"updated":527,"updated_by":15},"2026-03-04 08:34:00.521Z","44l3qn47xjhwgf8","Stress Testing","2026-04-10 16:08:05.159Z",{"code":45,"collectionId":46,"collectionName":47,"created":48,"flag":49,"id":50,"is_default":51,"label":52,"updated":53},{"category":181,"collectionId":56,"collectionName":57,"created":15,"expand":530,"id":534,"slug":535,"updated":536,"views":537},{"category":531},{"blogIds":532,"collectionId":61,"collectionName":62,"created":185,"created_by":15,"id":181,"image":186,"image_alt":15,"image_path":187,"label":533,"name":189,"priority":190,"publish_at":191,"scheduled_at":15,"status":68,"updated":192,"updated_by":15},[],{"en":189,"th":189},"xpb7i33hs27leyi","go-websocket-k6-load-testing-performance-tuning","2026-05-16 23:03:57.299Z",214,"p74ksn1anmv7y5u","2026-02-16 03:44:07.097Z","Prepare your Go system for massive traffic. Learn to perform Load, Stress, and Soak testing on WebSockets using k6. Discover how to identify breaking points and optimize your OS for high concurrency.","2026-05-08 06:51:47.571Z",3,12,413,35]