GyaanSetu JavaScript

ระบบนิเวศ JavaScript และ TypeScript

78 articlesDeep, practical knowledge

Meteor 3.5 ลดการใช้ CPU ลง 9% และเพิ่ม Throughput เป็นสองเท่าด้วยการสลับไปใช้ uWebSockets.js

Meteor 3.5 เปิดตัว DDP transport แบบ pluggable ที่สามารถสลับไปใช้ uWebSockets.js ได้ผ่าน environment variable DDP_TRANSPORT=uws ซึ่งช่วยเพิ่ม throughput ได้สูงสุดถึง 1.6 เท่า, ลดการใช้ CPU ลง 9%, ลด RAM ลง 11% และลดระยะเวลา GC pauses ลง 26% สำหรับแอปพลิเคชันที่มีการใช้งาน RPC หนักๆ

JavaScript · 2 min read

เจาะลึกการทำ Server Side Caching ขั้นสูงใน Next.js

เจาะลึกการทำ Server Side Caching ขั้นสูงใน Next.js การขยายขนาดแอป Next.js นั้นต้องการมากกว่าแค่การเลือกระหว่าง SSR และ SSG เมื่อข้อมูลของคุณเพิ่มมากขึ้น คุณจำเป็นต้องมีการทำ caching ขั้นสูงเพื่อลด...

JavaScript · 3 min read

Chrome DevTools Debugger ทำให้การอัปโหลดผ่าน Playwright ช้าลงกว่า 20 เท่า

เมื่อ Coffer เชื่อมต่อ Chrome DevTools debugger ผ่าน Playwright การอัปโหลดที่ใช้ fetch ของพวกเขาลดลงจาก 600 Mbps เหลือเพียง 113 Mbps ซึ่งเป็นการช้าลงมากกว่า 20 เท่า และทำให้ผลการทดสอบประสิทธิภาพ (benchmark) ของพวกเขาพลิกจากหน้ามือเป็นหลังมือ

JavaScript · 3 min read

การเปิดใช้งาน SharedArrayBuffer บังคับให้ฉันต้องเลิกใช้สคริปต์จากบุคคลที่สามทั้งหมด

การเพิ่ม header COOP และ COEP ช่วยให้ใช้งาน multithreading ได้อย่างแท้จริง แต่ก็ทำให้ analytics, Google Fonts, การฝัง YouTube และหน้าต่าง pop-up ของ OAuth ถูกบล็อกในทันที จนทำให้ฉันต้องหันมาโฮสต์ assets ด้วยตัวเองและเขียนโค้ด front-end ใหม่ทั้งหมดตั้งแต่ต้น

JavaScript · 4 min read

Browser vs Node: จุดที่ Event Loop แตกต่างกัน

Browser vs Node: จุดที่ Event Loop แตกต่างกัน Event loop ไม่ได้เป็นส่วนหนึ่งของข้อกำหนดภาษา JavaScript แต่เป็นส่วนหนึ่งของสภาพแวดล้อมของโฮสต์ (host environment) โดยที่ Browser และ Node มีการนำไปใช้งานที่แตกต่างกัน...

JavaScript · 4 min read

ช่องโหว่ WooCommerce Social Login เปิดทางให้แฮกเกอร์เข้ายึดบัญชี WordPress ใดก็ได้

CVE 2026 8457: การข้ามขั้นตอนการยืนยันตัวตนของ WooCommerce Social Login พบช่องโหว่ด้านความปลอดภัยระดับวิกฤตในปลั๊กอิน WooCommerce Social Login โดย WPWeb Elite ซึ่งช่องโหว่นี้มีคะแนน CVSS อยู่ที่ 9...

JavaScript · 3 min read

Next.js 16.3 เพิ่ม useOffline Hook แบบทดลอง เพื่อการตรวจจับสถานะการเชื่อมต่อได้ทันที

Hook นี้จะคืนค่าเป็น boolean ที่อัปเดตแบบเรียลไทม์ ช่วยให้คุณสลับหน้าแอปหลักเป็นข้อความ “คุณไม่ได้เชื่อมต่ออินเทอร์เน็ต” แบบง่ายๆ ได้ทันทีโดยไม่ต้องรอให้การ fetch ข้อมูลล้มเหลว อย่างไรก็ตาม ตัว hook เองไม่ได้รองรับการทำ caching หรือการซิงค์ข้อมูลเบื้องหลัง (background sync)

JavaScript · 2 min read

ผู้ใช้งาน Claude Code ลดค่าใช้จ่าย Token ลง 20%–35% ด้วย AWS Bedrock Proxy

LiteLLM proxy ในรูปแบบ Docker ของนักพัฒนาคนหนึ่ง ช่วยให้ Claude Code CLI สามารถเชื่อมต่อกับโมเดล Nova ของ Amazon บน Bedrock ได้อย่างแนบเนียน โดยยังคงขั้นตอนการทำงานเดิมไว้ แต่ช่วยลดค่าใช้จ่ายในช่วงการเรียนรู้ลงได้ถึงหนึ่งในสามเมื่อเทียบกับราคาของ Anthropic

JavaScript · 3 min read

AGP 9.2.0 เพิ่มความเร็ว Kotlin Coroutine เป็นสองเท่าด้วยการเขียน Bytecode ใหม่โดย R8

R8 ที่มาพร้อมกับ Android Gradle Plugin 9.2.0 เปลี่ยนจากการเรียกใช้ AtomicFieldUpdater แบบ reflective มาเป็นการใช้คำสั่ง Unsafe เพียงคำสั่งเดียว ซึ่งช่วยลดภาระในการทำ synchronization และทำให้การทำงานของ channel, mutex และ StateFlow เร็วขึ้นประมาณ 2 เท่า โดยไม่ต้องแก้ไขโค้ดต้นฉบับเลย

JavaScript · 4 min read

Apache DolphinScheduler 3.x จำเป็นต้องมีการปรับโครงสร้างคลัสเตอร์ใหม่ทั้งหมดและเปลี่ยนชื่อฐานข้อมูลเพื่อทำการอัปเกรด

การอัปเกรดนี้กำหนดให้คุณต้องเปลี่ยนชื่อตารางหลัก ย้ายข้อมูล JSON task blobs ไปยังตารางแบบ relational และเปลี่ยนจาก monolithic master มาเป็นโหนด MasterServer และ WorkerServer ที่แยกจากกัน โดยมีการประสานงานผ่าน ZooKeeper, JDBC หรือ Etcd

JavaScript · 3 min read

ความล้มเหลวของ OTP ในเยอรมนีเผยให้เห็นข้อผิดพลาดในการจัดเก็บหมายเลขโทรศัพท์ในฐานข้อมูล

ผู้ใช้งานถูกล็อกไม่ให้เข้าสู่ระบบเนื่องจากหมายเลขโทรศัพท์มือถือเยอรมันหมายเลขเดียวกันถูกจัดเก็บในฐานข้อมูลทั้งในรูปแบบ "0171 5550134" และ "+49 171 5550134" ส่งผลให้ OTP ถูกส่งไปยังข้อมูลที่ซ้ำซ้อนซึ่งไม่เคยส่งถึงมือผู้ใช้งาน

JavaScript · 3 min read

การขาด Index เปลี่ยน API 45 ms ให้กลายเป็นหายนะ 8 วินาที สำหรับข้อมูล 1.5 ล้านแถว

คอลัมน์ที่ไม่มี Index ทำลายฐานข้อมูลของเราได้อย่างไร เพียงแค่ Index ตัวเดียวที่หายไป ก็เปลี่ยน API 8ms ให้กลายเป็นฝันร้าย 8 วินาที เราได้ทำการทดสอบ Load Test ก่อนการปล่อยเวอร์ชันสำคัญ การพัฒนาในเครื่อง Local ทำงานได้...

JavaScript · 1 min read

เครื่องมือ Automation ของ Safari ปิดแท็บผิดพลาด เนื่องจาก Guard ตรวจไม่พบ Ownership Marker

การ Redirect ทำให้ Identifier ภายในของหน้าฟอร์มหายไป ส่งผลให้ Guard ปฏิเสธการเป็นเจ้าของ (ownership) และทำให้กระบวนการ Cleanup เลือกปิดแท็บปัจจุบันเป็นค่าเริ่มต้น จึงกลายเป็นการปิดหน้า Dashboard ของนักพัฒนาแทนที่จะเป็นแท็บที่หลุดจากการควบคุม (orphaned tab)

JavaScript · 4 min read

แพลตฟอร์มการเรียนรู้เปลี่ยนจากการใช้ vm Sandbox ของ Node มาเป็นระบบ AST Whitelisting

ปัจจุบันแพลตฟอร์มจะใช้ Acorn AST parser ในการวิเคราะห์ (parse) ทุกคิวรีที่นักเรียนเขียนขึ้น และจะปฏิเสธ node ใดก็ตามที่ไม่อยู่ในรายการอนุญาต (whitelist) ที่กำหนดไว้อย่างเข้มงวด ซึ่งช่วยกำจัดช่องโหว่จากการใช้ regex bypass และป้องกันไม่ให้ database handles จริงถูกเปิดเผยภายใน sandbox

JavaScript · 3 min read

ทีมผู้ใช้ Claude Code ลดค่าใช้จ่าย Token ลงได้ถึง 90% ด้วยการตั้งงบประมาณแบบ Hard Budgets และการใช้ Prompt Caching

คู่มือสำหรับนักพัฒนาฉบับใหม่เผยว่า การกำหนดเพดาน Token (hard token caps) การปรับ System Prompts ให้เสถียรเพื่อเพิ่มโอกาสเกิด Cache Hits และการเพิ่ม Context Manager ที่คำนึงถึงต้นทุน สามารถช่วยป้องกันปัญหา Token บวมที่แฝงอยู่ ซึ่งมักจะทำให้ค่าใช้จ่ายรายเดือนของ Claude Code พุ่งสูงขึ้นถึงเท่าตัว

JavaScript · 3 min read

useSyncExternalStore ของ React 18 ช่วยแก้ปัญหา UI กระพริบที่เกิดจากข้อมูลภายนอก

Hook ตัวใหม่นี้เข้ามาแทนที่รูปแบบเดิมที่ต้องใช้ useState และ useEffect ในการคัดลอกค่าจากภายนอก ช่วยป้องกันปัญหา tearing ในการทำ concurrent rendering และทำให้มั่นใจว่าทุกส่วนของ UI จะอ่านค่า snapshot เดียวกันในระหว่างรอบการเรนเดอร์

JavaScript · 4 min read

LiteRT.js เร่งความเร็ว MobileNetV2 ได้สูงถึง 2,439 FPS – เร็วกว่า TensorFlow.js กว่า 25 เท่า

ผลการทดสอบประสิทธิภาพบน Apple M2 Max แสดงให้เห็นว่า LiteRT.js ให้ค่าความหน่วงเพียง 0.41 ms (2,439 FPS) สำหรับ MobileNetV2 ในขณะที่ TensorFlow.js ทำได้เพียง 10.82 ms (92 FPS) โดยความแตกต่างของประสิทธิภาพจะยิ่งเพิ่มมากขึ้นเมื่อใช้โมเดลที่มีขนาดใหญ่ขึ้น อย่างไรก็ตาม นักพัฒนาจำเป็นต้องจัดการ GPU tensors ด้วยตนเอง และต้องรับมือกับการรองรับ WebGPU บนอุปกรณ์มือถือที่ยังคงมีจำกัด

JavaScript · 4 min read

ตัวอักษร 10 ตัวที่มีค่าสูงกว่าใน WWF ช่วยสร้างความได้เปรียบถึง 11 คะแนนในคำศัพท์ขนาดใหญ่

จากการวิเคราะห์รายการคำศัพท์ ENABLE จำนวน 172,835 รายการ ผลการศึกษาเผยว่าตัวอักษรที่มีค่าสูง 10 ตัวของ WWF ช่วยให้ได้เปรียบเฉลี่ย 2.52 คะแนนต่อคำ ในขณะที่ Scrabble นำหน้า WWF เพียงแค่ตัวอักษร H และ Y เท่านั้น และไม่เคยนำหน้าเกิน 3 คะแนน

JavaScript · 3 min read

แค่เปิด 5 แท็บทิ้งไว้ การรีเฟรช JWT เพียงครั้งเดียวก็อาจทำให้ผู้ใช้ถูกออกจากระบบทั้งหมดได้

เมื่อมี 5 แท็บทำการรีเฟรช JWT ที่หมดอายุในเสี้ยววินาทีเดียวกัน ระบบหลังบ้านจะมองว่าการเรียกซ้ำเหล่านั้นเป็นการโจมตีแบบ Replay Attack จึงทำการยกเลิก Refresh Token และทำให้ผู้ใช้ถูกออกจากระบบในทุกแท็บ ซึ่งเป็นสถานการณ์ที่ระบบป้องกันแบบแท็บเดียวไม่สามารถป้องกันได้

JavaScript · 3 min read