Tag: bun

32 รายการ

Blog

ขนมปังต้นฉบับหมุนเครื่องรีดผ้าผืนใหญ่ให้เป็นม้วนเล็กพร้อมปรับแรงกดด้วยคันโยก
buncompressionstreams

Bun 1.4.3 CompressionStream: ตั้งระดับบีบอัดให้ตรง latency budget

ใช้ CompressionStream level เลือกสมดุล CPU กับขนาดข้อมูล พร้อม Bun test แบบ round-trip โดยไม่พึ่งเครือข่าย

พี่โชว์
ขนมปังต้นฉบับถือกระจกตรวจวัตถุที่แสดงเฉพาะป้ายสถานะ ขณะที่ขวดความลับถูกปิดไว้ใต้ฝา
bunjavascriptlogging

Bun.inspect.custom: ทำ log อ่านง่ายโดยไม่เผลอพ่น secret

กำหนด representation ของ object ด้วย Bun.inspect.custom พร้อมทดสอบ redaction และเตือนว่าไม่ใช่ security boundary

พี่โชว์
ขนมปังต้นฉบับจัดกล่องข้อมูลหลายชั้นลงแฟ้มอย่างเป็นระเบียบโดยไม่เขียนตัวอักษรบนภาพ
buntomlconfiguration

Bun.TOML.stringify: เขียน config โดยแยก data ออกจาก template

ใช้ TOML.stringify สร้าง config ที่ parse กลับได้ ตรวจ round-trip และหลีกเลี่ยงการต่อข้อความที่ escape ผิด

พี่โชว์
ภาพวาดโทนมิ้นต์ของโต๊ะทำงานริมหน้าต่าง มีแล็ปท็อปที่หน้าจอเป็นหน้าตัดต่อวิดีโอ กล่องที่เพิ่งแกะ และนากสีมิ้นต์กำลังเสียบสายจากกล่องเข้ากับแล็ปท็อป
opencutvideo-editingbun

OpenCut Workshop #1: ติดตั้งโปรแกรมตัดต่อฟรี ใช้บนเว็บทันที หรือรันในเครื่องด้วย Bun

เริ่มซีรีส์สอน OpenCut ตั้งแต่ติดตั้งจนได้คลิปพี่โชว์คุยกับน้องกาย บทแรกเลือกเวอร์ชันที่ใช้ได้จริงวันนี้ ลองใช้บน opencut.app แล้วติดตั้งในเครื่องจาก repo ทีละคำสั่ง พร้อมผลรันจริงและ error ที่เจอระหว่างทาง

น้องกาย
ขนมปังกลมต้นฉบับส่งซองข้อมูลที่ปิดครบผ่านหน้าต่าง และเก็บซองที่ยังขาดมุมไว้รอชิ้นถัดไป
bunjsonlstreaming

Bun.JSONL.parseChunk: อ่าน JSONL ทีละก้อนโดยไม่ทำ record ขาด

ใช้ parseChunk กับ read/done/error เพื่อเก็บ remainder ระหว่าง chunk พร้อมจำกัด buffer และหยุดเมื่อเจอ JSON เสีย

พี่โชว์
ขนมปังกลมต้นฉบับกำลังสับรางระหว่างประตูรันตรงกับทางแยกนำเข้าโมดูลบนโต๊ะสว่าง
bunjavascripttypescript

Bun.main: แยกไฟล์ที่ถูกรันตรงจากไฟล์ที่ถูก import

ใช้ Bun.main เทียบ import.meta.path เพื่อป้องกัน side effect ตอนทดสอบและ reuse module

พี่โชว์
ขนมปังตัวละครต้นฉบับกำลังปล่อยเมล็ดกลมจากนาฬิกาทรายลงรางเรียงตามเวลา
bunjavascriptuuid

Bun.randomUUIDv7: สร้าง UUID ที่เรียงตามเวลาได้โดยไม่ทำเป็น timestamp

ใช้ Bun.randomUUIDv7 สร้าง identifier แบบ time-ordered พร้อมทดสอบรูปแบบ ลำดับ และอธิบายข้อจำกัดด้าน privacy กับ distributed ordering

พี่โชว์
ขนมปังกลมต้นฉบับกำลังคัดแผ่นคุกกี้จากสายพานลงช่องชื่อและค่าบนโต๊ะสว่าง
buncookieshttp

Bun.CookieMap: แยก Cookie header แล้วแก้ค่าโดยไม่ต่อสตริงเอง

ใช้ Bun.CookieMap อ่านและ serialize cookie map พร้อมแยก request Cookie จาก response Set-Cookie และไม่ใช้ parser แทน security policy

พี่โชว์
ขนมปังกลมต้นฉบับกำลังบีบผ้าผืนใหญ่ลงกล่องเล็กก่อนคลี่กลับบนโต๊ะสว่าง
bunzstdcompression

Bun Zstandard round trip: บีบ Uint8Array แล้วเปิดกลับโดยไม่เสีย byte

ใช้ Bun.zstdCompressSync และ zstdDecompressSync กับข้อมูลไบนารี พร้อมทดสอบ round trip และวางเพดานก่อนแตกข้อมูล

พี่โชว์
ขนมปังกลมต้นฉบับกำลังเทสีจากกระปุกสามรูปแบบผ่านกรวยเดียวลงถาดตัวอย่างสีบนโต๊ะสีมิ้นต์
bunjavascriptdesign-tokens

Bun.color: แปลง design token หลายรูปแบบโดยไม่เขียน parser สีเอง

ใช้ Bun.color แปลง HEX, RGB และ named color เป็นรูปแบบมาตรฐาน พร้อม validation ก่อนส่งค่าไป CLI หรือ renderer

พี่โชว์
มาสคอตขนมปังกลมต้นฉบับกำลังเปิดช่องตรวจซองงานที่ปิดผนึกแล้วบนโต๊ะสีมิ้นต์
bunpromisesruntime

Bun.peek: อ่าน Promise ที่ settle แล้วโดยไม่สร้าง await boundary ใหม่

ใช้ Bun.peek อย่างจำกัดกับสถานะที่รู้ว่า settle แล้ว พร้อมแยก pending, rejected และโค้ด portable

พี่โชว์
ขนมปังกลมต้นฉบับผลักแฟ้มผ่านวงแหวน URL ให้ลงรางโฟลเดอร์ครีมโดยชื่อยังครบ
bunfile-urlpaths

Bun.fileURLToPath: แปลง file URL เป็นพาธโดยไม่พังช่องว่างและอักขระ escape

ใช้ Bun.fileURLToPath แทนการอ่าน pathname ตรง ๆ เมื่อต้องเปิดไฟล์ข้างโมดูลอย่างข้ามแพลตฟอร์ม

พี่โชว์
ขนมปังตัวละครต้นฉบับตามทางแยกในป่าไปยังเครื่องมือที่เลือกบนฉากสว่าง
bunclipath

Bun.which: หา executable จาก PATH โดยไม่เรียก shell

ใช้ Bun.which ตรวจ dependency ของ CLI แบบข้ามแพลตฟอร์ม พร้อมจัดการ PATH และ cwd อย่างปลอดภัย

พี่โชว์
กระต่ายต้นฉบับสังเกตลูกแก้วเคลื่อนบนรางเวลาที่เดินหน้าอย่างต่อเนื่อง
bunjavascriptperformance

Bun.nanoseconds: จับเวลาช่วงสั้นด้วยนาฬิกา monotonic

วัด elapsed time ของโค้ดด้วย Bun.nanoseconds โดยไม่สับสนกับเวลาปฏิทิน พร้อมตัวอย่างที่รันจริง

น้องกาย
ขนมปังกลมต้นฉบับกำลังเปิดกล่องไม้ซ้อนชั้นสองใบและเทียบช่องด้านในทีละชั้น
bunjavascripttesting

Bun.deepEquals: เทียบ config ซ้อนชั้นโดยรู้ว่า strict ต่างตรงไหน

ใช้ Bun.deepEquals ตรวจ snapshot ของ object พร้อมขอบเขต sparse array, undefined และ instance

พี่โชว์
ขนมปังกลมต้นฉบับกำลังจัดบัตรหลายความกว้างให้ขอบขวาตรงกันบนไม้บรรทัดโต๊ะทำงาน
bunterminalunicode

Bun.stringWidth: จัดคอลัมน์ terminal ตามความกว้างที่มองเห็น ไม่ใช่จำนวนอักขระ

ใช้ Bun.stringWidth กับ ASCII, ตัวกว้างและ combining mark เพื่อไม่ให้ตาราง CLI เหลื่อม

พี่โชว์
ขนมปังกลมต้นฉบับกำลังส่องแผ่นโค้ดผ่านตะแกรงตรวจทางเข้าออกก่อนส่งไปเครื่องรัน
buntypescripttooling

Bun.Transpiler: ตรวจ import ของสคริปต์ก่อนตัดสินใจรัน

แยกการแปลง TypeScript กับการ execute และใช้ scan ดู dependency ที่มองเห็นได้

พี่โชว์
ขนมปังกลมต้นฉบับตรวจลูกบอลเวอร์ชันบนสายพานให้ผ่านกรอบช่วงสีเขียว โดยก้อน prerelease สีอำพันรออยู่นอกกรอบ
bunsemvertooling

Bun.semver: เช็กช่วงเวอร์ชันก่อนเปิด Feature โดยไม่ดึง Package เพิ่ม

ใช้ Bun.semver.satisfies และ order ตรวจ compatibility ของ plugin/runtime พร้อมระวัง prerelease และการใช้เวอร์ชันเป็น safety boundary

พี่โชว์
ขนมปังตัวละครต้นฉบับประทับตราก้อนข้อมูลลงลิ้นชักแคช และมีตู้กุญแจแยกต่างหากสำหรับรหัสผ่าน
bunhashingcaching

Bun.hash ทำ cache key ได้ไว แต่ไม่ใช่เกราะสำหรับรหัสผ่าน

ทดลอง Bun.hash กับ cache key พร้อมกำหนดขอบเขต non-cryptographic hash และวิธีจัดการ collision อย่างตรงไปตรงมา

พี่โชว์
ขนมปังกลมต้นฉบับกำลังลากตะแกรงลายดาวผ่านกองแฟ้มเพื่อแยกแฟ้มสีเขียว
bunjavascriptfilesystem

Bun.Glob: สแกนไฟล์ตาม pattern โดยตั้งขอบเขต symlink ให้ชัด

ใช้ Bun.Glob จับคู่และสแกนไฟล์ พร้อมค่า dot, followSymlinks และ onlyFiles ที่ต้องเลือกก่อนแตะ repository จริง

พี่โชว์
ขนมปังต้นฉบับส่งการ์ดข้อความผ่านตะแกรงอำพันก่อนวางลงในกรอบหน้าเว็บบนโต๊ะมิ้นต์
bunsecurityhtml

Bun.escapeHTML: หนีอักขระตอนส่งออก ไม่ใช่ใบอนุญาตให้เชื่อ HTML

วาง Bun.escapeHTML ที่ output boundary เพื่อแสดงข้อความผู้ใช้ พร้อมแยก escaping ออกจาก HTML sanitization

พี่โชว์
ขนมปังกลมต้นฉบับกำลังเรียงการ์ดสถานะเป็นตารางบนโต๊ะสีครีมและมิ้นต์
bunjavascriptlogging

Bun.inspect.table: ได้ตารางอ่านง่ายเป็น string ก่อนส่งเข้า log หรือ snapshot

ต่างจาก console.table ตรงที่คืนค่า string ทำให้จัดเก็บ ส่งต่อ และเทสต์ output ได้ตรงๆ

พี่โชว์
มาสคอตขนมปังกลมต้นฉบับกำลังหมุนเครื่องบดเมล็ดรหัสผ่านลงกล่องเกลือแบบสุ่มบนโต๊ะสว่าง
bunsecuritypassword

Bun.password: Hash รหัสผ่านด้วย Argon2id โดยไม่ต่อ String เอง

ใช้ Bun.password.hash และ verify พร้อมเลือก cost, จำกัดอินพุต และวาง migration จาก hash เก่าอย่างปลอดภัย

พี่โชว์
ขนมปังตัวละครต้นฉบับกำลังเสียบสายเข้ากับหน้าต่างเทอร์มินัลและกล่องโปรเซสบนโต๊ะสีเขียวอ่อน
bunterminalpty

Bun Terminal: แยกอายุ PTY ออกจาก subprocess ให้ถูก

ใช้ Bun.spawn กับ pseudo-terminal อย่างมี lifecycle ชัดเจน รอ proc.exited ปิด terminal และรับมือความต่างข้ามแพลตฟอร์ม

พี่โชว์
มาสคอตขนมปังกลมต้นฉบับกำลังตัดเชือก context ที่ผูกถุงข้อมูลกับนาฬิกาทรายบนโต๊ะสว่าง
bunjavascriptperformance

Bun 1.4.2 แก้ AsyncLocalStorage กัก context ไว้นานเกินงาน

แพตช์ regression ที่ค่าระดับ request ยังถูกอ้างถึงโดย timer และ promise พร้อม smoke test ก่อน rollout

พี่โชว์
นากกายสีมิ้นต์ชี้ลูกศรอำพันระหว่างบล็อกเครื่องมือสองก้อนบนโต๊ะมิ้นต์สว่าง
bunjavascriptrust

Bun 1.4: รันไทม์ที่เขียนใหม่จาก Zig เป็น Rust

สรุปจากบล็อกทางการ Bun v1.4 ว่ามีการ rewrite เป็น Rust พร้อมไฮไลต์เรื่องความเข้ากันได้กับ Node และประสิทธิภาพ

น้องกาย
ขนมปังกลมต้นฉบับกำลังปรับคันโยกให้สายพานงานสามเส้นเดินพร้อมกันบนโต๊ะสว่าง
bunjavascripttooling

Bun 1.4 รันหลาย Script พร้อมกัน: ใช้ --parallel โดยยังอ่าน Log รู้เรื่อง

จัดงาน build และ lint ที่เป็นอิสระให้รันพร้อมกันด้วย bun run --parallel พร้อมขอบเขตที่ควรกลับไปใช้ sequential

พี่โชว์
โต๊ะมิ้นต์มีบัตรเวอร์ชัน Bun และสวิตช์เปิดใช้งานบนแผง deploy
bunvercelruntime

Bun 1.4 บน Vercel Functions: เปิดใช้เองผ่าน bunVersion

สรุป changelog ของ Vercel วันที่ 20 ส.ค. 2026 ว่า Functions รองรับ Bun 1.4 แล้ว แต่ต้อง opt-in

น้องกาย
ภาพวาดมาสคอตขนมปังกลมต้นฉบับใช้แว่นขยายส่องแถบกระดาษจากเครื่องที่ชี้กองงานหนักที่สุด
bunjavascripttypescript

Bun 1.4 อ่าน CPU Profile เป็น Markdown: หา Hot Function ก่อนเดา

ใช้ --cpu-prof-md สร้างรายงาน Markdown จากโปรแกรม TypeScript และอ่านสัดส่วน CPU เพื่อหา bottleneck อย่างมีหลักฐาน

น้องกาย
ภาพวาดมาสคอตขนมปังกลมต้นฉบับหมุนนาฬิกาให้ลูกปัดจากวงเวลาหนึ่งตกลงช่องทำงานของอีกเขตเวลาหนึ่ง
bunjavascripttypescript

Workshop Bun 1.4 Cron: นัดงาน 9 โมงกรุงเทพฯ โดยไม่ฝากไว้กับ OS

ใช้ Bun.cron.parse ตรวจตารางเวลาและ timezone แบบ deterministic ก่อนย้ายงานเข้า Bun.cron

น้องกาย
ภาพวาดมาสคอตขนมปังกลมต้นฉบับกำลังหมุนมือจับให้กรอบภาพใหญ่ผ่านเครื่องแล้วออกมาเป็นกรอบเล็กบนโต๊ะสว่าง
bunjavascripttypescript

Workshop Bun 1.4 Image: ทำ Thumbnail WebP โดยไม่เพิ่ม Native Dependency

ลงมือใช้ Bun.Image อ่าน metadata จำกัดขนาดภาพ ย่อแบบรักษาสัดส่วน และตรวจผล WebP จริงในสคริปต์เดียว

น้องกาย
ภาพวาดโทนสว่างในครัวรับแสงแดด กองกระดาษ Markdown ถูกป้อนเข้าเครื่องรีดสีเขียวแล้วออกมาเป็นหน้าเว็บที่จัดวางเรียบร้อย มีตะแกรงร่อนอยู่ปลายทาง แต่กระดาษสีส้มแผ่นหนึ่งเล็ดลอดผ่านไปตกบนโต๊ะ โดยมีตัวการ์ตูนขนมปังกลมชี้ไปที่แผ่นนั้น
bunjavascripttypescript

Bun 1.4 มี Markdown Parser ในตัว: เร็วและสะดวก แต่ยังต้องตั้งด่านความปลอดภัย

รู้จัก Bun.markdown ทั้ง html render และ react ผ่านมุมใช้งานจริง พร้อมตัวอย่างรันทดสอบด้วย Bun 1.4 และเหตุผลที่ห้ามส่ง HTML จากผู้ใช้เข้าเว็บตรง ๆ

พี่โชว์