Tag: tutorial

130 รายการ

Blog

นากกายต้นฉบับกำลังจัดแท่งช่วงเวลาลงช่อง bucket นาทีบนโต๊ะทำงานสว่าง
javatimeduration

Java Duration.truncatedTo: ปัดช่วงเวลาเป็น bucket โดยไม่ใช้เลขหารเอง

ใช้ truncatedTo กับ ChronoUnit, ค่าติดลบ และข้อจำกัดของหน่วย ผ่าน Java 17 assertions

พี่โชว์
นากกายต้นฉบับกำลังคัดเม็ดข้อมูลจากกรวยสแกนเนอร์ลงราง stream บนโต๊ะสว่าง
javascannerstreams

Java Scanner.tokens: เปลี่ยน token stream เป็น pipeline ที่ปิด resource ชัดเจน

ใช้ Scanner.tokens กับ delimiter, filter และ try-with-resources พร้อม Java 17 assertions

พี่โชว์
นากกายต้นฉบับกำลังหมุนถาดช่องข้อมูลวงกลมบนโต๊ะทำงานสีมิ้นต์
javacollectionslist

Java Collections.rotate: หมุนลำดับโดยไม่สร้าง list ใหม่

เข้าใจ distance บวก/ลบ, modulo, mutable list และ edge cases ผ่าน Java 17 assertions

พี่โชว์
งูขดต้นฉบับกำลังส่องตู้วัตถุผ่านกระจกนิ่งโดยไม่แตะคันโยก property ด้านข้าง
pythoninspectreflection

Python inspect.getmembers_static: สำรวจ object โดยไม่เผลอเรียก property

เทียบ getmembers กับ getmembers_static ผ่าน descriptor ที่มี side effect และ unittest แบบ isolated

พี่โชว์
งูขดต้นฉบับกำลังตรวจประตูทางเลือกครบทุกบาน โดยประตูเกินชุดถูกปิดด้วยสลักเล็ก
pythontypingenum

Python typing.assert_never: ทำให้ branch ที่ไม่ควรถึงตรวจได้ทั้ง static และ runtime

สร้าง exhaustive dispatch ด้วย Enum, assert_never และ unittest พร้อมอธิบายข้อจำกัดของ type checker

พี่โชว์
งูขดต้นฉบับกำลังถ่ายของจากสายพานคิวลงถาด snapshot ที่มีขอบจำกัดบนโต๊ะสว่าง
pythoncollectionsdeque

Python deque.copy: ถ่าย snapshot คิวโดยรักษา maxlen

ดู shallow-copy semantics, maxlen และการแยก mutation ของคิวด้วย unittest ที่รันจริงบน Python 3.14

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

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

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

พี่โชว์
อิกัวนาต้นฉบับกำลังชี้หมุดต่ำสุดและสูงสุดบนรางข้อมูลเส้นเดียวในห้องทำงานสว่าง
zigstdlibslice

Zig std.mem.findMinMax: หา index ค่าน้อยสุดและมากสุดในรอบเดียว

ใช้ findMinMax บน slice ที่ไม่ว่าง พร้อมจัดการ empty input และ tie behavior ด้วย test บน Zig 0.17

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

Rust Vec::spare_capacity_mut: เติม buffer ที่จองไว้โดยไม่สร้าง Vec ชั่วคราว

เรียนรู้ MaybeUninit, set_len invariant และ panic boundary ผ่านตัวอย่างเติมข้อมูลที่ทดสอบจริง

พี่โชว์
กระรอกดินต้นฉบับกำลังเติมชิ้นข้อมูลลงถาดพื้นที่ว่างของกล่องบัฟเฟอร์บนโต๊ะสว่าง
gogolangbytes

Go bytes.Buffer.AvailableBuffer: ต่อข้อมูลลงพื้นที่ว่างโดยลด allocation

ใช้ AvailableBuffer คู่ strconv.Append* อย่างถูกสัญญา พร้อมทดสอบการเขียน CSV, capacity และข้อห้ามเก็บ slice ข้าม Write

พี่โชว์
นากกายต้นฉบับกำลังปิดฝากล่องช่องคู่หลายช่องหลังคัดของจากสายพาน โดยมีชิ้นซ้ำรอการตัดสินใจด้านข้าง
javajava17streams

Java Collectors.toUnmodifiableMap: ปิดการแก้โครงสร้างหลัง stream

ใช้ toUnmodifiableMap สร้างผลลัพธ์ที่เพิ่มหรือลบไม่ได้ พร้อมทดสอบ duplicate key, null และ mutable value

พี่โชว์
นากกายต้นฉบับกำลังให้ลูกบาศก์ผ่านช่องตรวจรูปทรงก่อนลงตะกร้าบนโต๊ะสีมิ้นต์
javajava17collections

Java Collections.checkedList: กันชน type ตอนรับ List จาก legacy boundary

ใช้ checkedList ตรวจ element ตอนเขียนเข้าคอลเล็กชัน พร้อมทดสอบ raw alias และอธิบายว่ามันไม่แทน validation ของข้อมูลเดิม

พี่โชว์
นากกายต้นฉบับกำลังตรึงเข็มนาฬิกาไม้ไว้เพื่อทดสอบสายพานบัตรหมดอายุบนโต๊ะสว่าง
javajava17time

Java Clock.fixed: หยุดเวลาใน test โดยไม่แตะนาฬิการะบบ

ฉีด Clock เข้า business logic แล้วใช้ Clock.fixed ทดสอบวันหมดอายุแบบ deterministic พร้อมแยก wall clock จาก elapsed time

พี่โชว์
งูต้นฉบับกำลังเทลูกปัดตัวเลขจากถ้วยสามแบบลงเครื่องชั่งเศษส่วนโดยมีป้ายข้อความถูกกันไว้นอกโต๊ะ
pythonfractionsdecimal

Python Fraction.from_number: รับเฉพาะตัวเลขโดยไม่เผลอ parse ข้อความ

ใช้ Fraction.from_number แยก numeric API จาก string parsing พร้อมทดสอบ int, float, Decimal และข้อควรระวังค่าทศนิยมฐานสอง

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

Python ExitStack.pop_all: โอนสิทธิ์ cleanup เมื่อทุกขั้นเตรียมสำเร็จ

ใช้ ExitStack.pop_all ทำ all-or-nothing resource setup พร้อม unittest ที่ตรวจ cleanup ก่อนและหลังโอน ownership

พี่โชว์
งูต้นฉบับกำลังวางถาดใบเล็กซ้อนเหนือกล่องตั้งค่าหลายชั้นบนโต๊ะสีมิ้นต์
pythoncollectionschainmap

Python ChainMap.new_child: ซ้อน scope ใหม่โดยไม่ copy config ทั้งก้อน

ใช้ ChainMap.new_child สร้าง override ชั้นใหม่ พร้อมทดสอบ lookup, mutation และ parents เพื่อจัดการ config หลายระดับอย่างชัดเจน

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

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

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

พี่โชว์
ปูสีส้มแดงต้นฉบับกำลังจัดก้อนกรวดเป็นถาดละสามก้อนและแยกเศษที่เหลือไว้ข้างถาด
rustslicechunks

Rust slice::as_chunks: แบ่ง slice เป็นกลุ่มขนาดคงที่โดยไม่ copy

ใช้ as_chunks แปลง slice เป็น array chunks กับ remainder พร้อมทดสอบขอบเขตและอธิบายว่าทำไมขนาดศูนย์จึง panic

พี่โชว์
กระรอกดินต้นฉบับกำลังจับคู่เมล็ดกับช่องเก็บสีต่างกันบนโต๊ะสว่าง
gogolangmaps

Go maps.Collect: สร้าง map จาก iterator คู่ key-value

ใช้ maps.Collect รับ iter.Seq2 เป็น map พร้อมทดสอบ duplicate key, empty input และแยก collection จาก validation

พี่โชว์
กระรอกดินต้นฉบับกำลังส่งเมล็ดจากสายพานทีละเมล็ดลงตะกร้าที่มีของอยู่แล้ว
gogolangslices

Go slices.AppendSeq: เติม iterator ลง slice โดยไม่ต้องเขียนลูปเอง

ใช้ slices.AppendSeq ต่อค่าจาก iter.Seq ลง slice ที่มีอยู่ พร้อมทดสอบ capacity, iterator แบบใช้ครั้งเดียว และ ownership ของข้อมูล

พี่โชว์
นากกายต้นฉบับปิดวาล์วทรัพยากรด้วยมือ ขณะที่สายสำรองต่อเข้ากลไกปิดอัตโนมัติ
javacleanerresources

Java Cleaner: มี fallback cleanup แต่ยังต้องปิด resource แบบ explicit

ใช้ java.lang.ref.Cleaner เป็น safety net โดยไม่จับ owner ค้าง พร้อม Java 17 assertions และขอบเขตที่ห้ามพึ่งเวลาของ GC

พี่โชว์
นากกายต้นฉบับกำลังลองแผ่นรูปทรงไฟล์ผ่านแม่แบบช่องรับบนโต๊ะสว่าง
javaniopath

Java PathMatcher: คอมไพล์ glob ครั้งเดียวแล้วตรวจ path ตาม filesystem

ใช้ FileSystem.getPathMatcher กับ glob ตรวจไฟล์หลายเส้น พร้อมแยก matching จาก path containment และทดสอบ Java 17 จริง

พี่โชว์
นากกายต้นฉบับกำลังวางหมุดตามทางทีละจุดจนถึงประตูกั้นบนโต๊ะมิ้นต์
javastreamsiteration

Java Stream.iterate แบบมี hasNext: สร้างลำดับมีขอบเขตโดยไม่พึ่ง limit เดา ๆ

ใช้ Stream.iterate(seed, hasNext, next) สร้างช่วงตามเงื่อนไข พร้อม Java 17 assertions และขอบเขต overflow กับ non-progressing step

พี่โชว์
งูต้นฉบับกำลังประกบการ์ดบริบทประจำเข้ากับการ์ดเหตุการณ์เฉพาะก่อนส่งลงถาดบันทึก
pythonloggingobservability

Python LoggerAdapter merge_extra: รวม context ประจำกับข้อมูลต่อ log call

ใช้ LoggerAdapter merge_extra เพิ่ม request context โดยไม่ทับข้อมูลต่อเหตุการณ์ พร้อม unittest ที่ตรวจ LogRecord จริงและข้อควรระวัง secret

พี่โชว์
งูต้นฉบับผูกเชือกสำรองจากกล่องทรัพยากรไปยังคันปล่อยอัตโนมัติบนโต๊ะสว่าง
pythonweakrefresources

Python weakref.finalize: วาง cleanup สำรองโดยไม่ทำให้ object อยู่ค้าง

ใช้ weakref.finalize ลงทะเบียน cleanup แบบไม่ยึด owner ไว้ พร้อมทดสอบ idempotency และย้ำว่า context manager ยังเป็นเส้นทางหลัก

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

Python sqlite3 backup: สำรองฐานข้อมูลทีละหน้าโดยไม่ copy ไฟล์ที่กำลังเขียน

ใช้ Connection.backup สร้างสำเนา SQLite ที่สอดคล้อง พร้อม unittest จริงและข้อควรระวัง transaction, destination และการตรวจ restore

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

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

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

พี่โชว์
อิกัวนาต้นฉบับดึงถาดชิ้นส่วนจากปลายขวาของรางย้อนกลับทีละช่องบนโต๊ะมิ้นต์
zigmemoryiterator

Zig splitBackwardsSequence: แยก path จากด้านท้ายโดยไม่ reverse ข้อมูล

ใช้ std.mem.splitBackwardsSequence ดึงชื่อไฟล์และโฟลเดอร์จากท้าย slice พร้อมรู้ empty field, delimiter หลายไบต์ และ lifetime

พี่โชว์
ปูต้นฉบับตรวจกล่องหน้าสุดบนรางคิวก่อนคีบออก ขณะที่กล่องด้านหลังยังเรียงเดิม
rustvecdequequeue

Rust VecDeque::pop_front_if: หยิบหัวคิวเฉพาะเมื่อพร้อม

ใช้ pop_front_if ตรวจและนำสมาชิกหน้าคิวออกแบบ atomic ต่อการยืม พร้อมเข้าใจ mutation ใน predicate และทางเลือกเมื่อเงื่อนไขล้ม

พี่โชว์
กระรอกดินต้นฉบับค่อย ๆ ดึงแถบกระดาษที่แบ่งเป็นท่อนโดยเก็บหมุดคั่นไว้ปลายแต่ละท่อน
gogolangstrings

Go strings.SplitAfterSeq: แบ่งข้อความแบบ iterator โดยเก็บตัวคั่นไว้

ใช้ SplitAfterSeq อ่าน record ทีละส่วนโดยไม่สร้าง slice ทั้งก้อน พร้อมทดสอบ empty separator, single-use iterator และ ownership ของ substring

พี่โชว์
นากกายกำลังเปิดบัตรประวัติเครื่องจักรบนคลิปบอร์ด ดูเวลาเริ่มและคำสั่งล่าสุด
javaprocessprocesshandle

Java ProcessHandle.Info: อ่านคำสั่งและเวลาเริ่มของโปรเซสแบบ snapshot

ใช้ info() ดู command, user, startInstant อย่างปลอดภัยเมื่อค่าอาจว่าง พร้อมทดสอบ Optional

น้องกาย
นากกายกำลังเก็บแสตมป์ที่ตรงรูปแบบจากสายพานลงถาดผลลัพธ์โดยไม่เดินวนซ้ำด้วยมือ
javaregexmatcher

Java Matcher.results: เก็บทุกแมตช์เป็น Stream โดยไม่วน find เอง

ใช้ results() ดึง MatchResult ทั้งก้อน แล้ว map เป็นข้อมูลธุรกิจ พร้อมทดสอบจำนวนแมตช์

น้องกาย
นากกายกำลังตรวจแสตมป์รหัสเงินบนกล่องพัสดุเทียบกับสมุดรายชื่อสกุลเงิน
javacurrencyi18n

Java Currency.getAvailableCurrencies: ตรวจรหัสเงินก่อนรับจากฟอร์ม

ไล่ชุด Currency ที่ JVM รู้จัก เพื่อ validate รหัส ISO 4217 พร้อมทดสอบ THB และรหัสปลอม

น้องกาย
นากกายกำลังติดป้ายชื่อและที่อยู่แยกช่องบนซองจดหมายมิ้นต์ ไม่ตัดสตริงด้วยมือ
pythonemailheaderregistry

Python email.headerregistry: อ่านหัวอีเมลแบบมีชนิด ไม่ต้องตัดสตริงเอง

ใช้ HeaderRegistry และ Address แยกชื่อกับที่อยู่ พร้อมทดสอบ Content-Type แบบมีพารามิเตอร์

น้องกาย
นากกายกำลังห่อกล่องข้อความทุกช่องด้วยเครื่องหมายคำพูดก่อนส่งผ่านสายพานข้ามเครื่อง
pythoncsvunix_dialect

Python csv.unix_dialect: ส่งไฟล์ CSV ข้ามเครื่องโดยไม่พังเพราะขึ้นบรรทัดใหม่

ใช้ dialect ที่ quote ทุกฟิลด์และขึ้นบรรทัดแบบ LF พร้อมทดสอบความต่างจาก excel

น้องกาย
นากกายกำลังแขวนกุญแจหน้าตาเหมือนกันสองดอกบนตะขอคนละอัน
javaidentityhashmapcollections

Java IdentityHashMap: เมื่อ key ต้องเป็น object เดิม ไม่ใช่ object ที่ equals กัน

ใช้ IdentityHashMap เฉพาะงาน topology และ graph traversal พร้อมทดสอบความต่างจาก HashMap และข้อห้ามใน business data

พี่โชว์
นากกายกำลังเลื่อนตัวชี้ข้ามแถวกระเบื้องไปยังหมุดที่ถูกยกขึ้นถัดไป
javabitsetcollections

Java BitSet.nextSetBit: เดินเฉพาะตำแหน่งที่เปิดโดยไม่สแกนทุกช่อง

ใช้ BitSet.nextSetBit วน sparse flags พร้อมหลีกเลี่ยง off-by-one และแยก index set จาก business identity

พี่โชว์
นากกายกำลังติดลิ้นชักข้อมูลเฉพาะให้แม่พิมพ์แต่ละชิ้นโดยไม่ปะปนกัน
javaclassvaluereflection

Java ClassValue: ผูก cache กับ Class โดยไม่สร้าง static map ถือ class loader ไว้

ใช้ ClassValue คำนวณ metadata ต่อ Class แบบ lazy พร้อม remove, concurrency contract และ Java 17 assertions

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

Python collapse_addresses: รวม CIDR ที่ติดกันโดยไม่ขยายเป็นทุก IP

ใช้ ipaddress.collapse_addresses ลดรายการ network ที่ซ้อนหรือติดกัน พร้อมทดสอบ IPv4, type mismatch และข้อจำกัดด้าน policy

พี่โชว์
งูต้นฉบับกำลังตามริบบิ้นทางลัดจากป้ายเชื่อมไปยังกล่องปลายทาง
pythonpathlibsymlink

Python Path.readlink: อ่านปลายทาง symlink โดยไม่เผลอ resolve ทั้งเส้น

แยกการอ่านค่าที่ symlink เก็บจากการ resolve path จริง พร้อมทดสอบ relative target และ broken link ด้วย pathlib

พี่โชว์
งูต้นฉบับปล่อยเหรียญผ่านชุดประตูก่อนรวมจำนวนความสำเร็จลงถาด
pythonrandomstatistics

Python random.binomialvariate: จำลองจำนวนครั้งที่สำเร็จโดยไม่เขียนลูปเอง

ใช้ random.binomialvariate สำหรับการทดลองอิสระ n ครั้ง พร้อม seed, validation และคำเตือนว่า PRNG ไม่เหมาะกับความลับ

พี่โชว์
นากกายกำลังสับสวิตช์ระหว่างฉากแอปด้านหน้าและฉากพักเบื้องหลังบนโต๊ะสีมิ้นต์
react-nativemobileappstate

React Native AppState: หยุดงานแพงเมื่อแอปพัก แล้ว sync ใหม่ตอนกลับมา

ออกแบบ lifecycle ด้วย AppState change listener โดยไม่สับสน background, inactive และ Android blur พร้อมข้อควรระวัง currentState ตอนเริ่ม

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

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

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

พี่โชว์
ปูต้นฉบับคีบลูกปัดที่ผ่านเงื่อนไขออกจากช่วงกลางของรางโดยเก็บลูกอื่นไว้
rustveciterator

Rust Vec::extract_if: ดึงสมาชิกออกเฉพาะช่วงโดยยังเก็บลำดับที่เหลือ

ใช้ Vec::extract_if แยกสมาชิกที่ผ่านเงื่อนไขจาก range พร้อมเข้าใจ lazy iterator, early drop และต้นทุนการเลื่อนข้อมูล

พี่โชว์
กระรอกดินต้นฉบับกำลังขยายถาดชิ้นงานแล้วตัดพื้นที่สำรองส่วนเกินบนโต๊ะสีมิ้นต์
gogolangslices

Go slices.Grow กับ Clip: จองความจุให้พอ แล้วคืนส่วนเกินตรงขอบงาน

ใช้ slices.Grow ลดการขยาย backing array ซ้ำ และ slices.Clip ตัด capacity ก่อนส่งข้อมูลข้าม boundary พร้อม Go tests ที่รันจริง

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

Go slices.Concat: รวมหลาย slice โดยไม่ผูกผลลัพธ์กับ backing array เดิม

ใช้ slices.Concat รวมข้อมูลหลายก้อน พร้อมทดสอบ aliasing, capacity และกรณีที่ append เดิมอ่านยาก

พี่โชว์
ปูสีส้มแดงต้นฉบับกำลังคลี่สายพานวงแหวนสองช่วงให้กลายเป็นแถวเดียวบนโต๊ะทำงานสีมิ้นต์
rustvecdequecollections

Rust VecDeque::make_contiguous: เปิด ring buffer เป็น slice ก่อน sort

ทำให้ข้อมูลใน VecDeque ต่อเนื่องในหน่วยความจำเพื่อ sort หรือส่งต่อ API ที่รับ slice พร้อมเข้าใจต้นทุนการย้าย

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

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

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

พี่โชว์
นากแม่น้ำต้นฉบับกำลังปรับสวิตช์ให้ลูกศรเคลื่อนไหวยาวกลายเป็นการเปลี่ยนสถานะสั้นและนิ่งบนโต๊ะสีมิ้นต์
react-nativeaccessibilityanimation

React Native reduced motion: เคารพการตั้งค่าลดการเคลื่อนไหวตั้งแต่เฟรมแรก

ใช้ AccessibilityInfo อ่านและติดตาม reduce motion เพื่อเปลี่ยน transition เป็นแบบนิ่งโดยไม่ปิด feedback ที่จำเป็น

พี่โชว์
งูต้นฉบับกำลังย้ายการ์ดคะแนนสูงสุดขึ้นยอดกองทรงต้นไม้บนโต๊ะสีมิ้นต์โดยไม่กลับป้ายคะแนน
pythonheapqpriority-queue

Python 3.14 max-heap API: เลิกใส่เครื่องหมายลบเพื่อจัดคิวค่าสูงสุด

ใช้ heapify_max, heappush_max และ heappop_max โดยตรง พร้อมทดสอบลำดับและแยกจาก min-heap เดิม

พี่โชว์
งูต้นฉบับกำลังใช้แปรงสามขนาดเกลี่ยกองจุดข้อมูลให้เป็นเนินโค้งบนกระดาษครีม
pythonstatisticskde

Python statistics.kde: ประมาณ distribution โดยไม่บังคับให้ข้อมูลเป็นโค้งระฆัง

ใช้ kernel density estimation กับข้อมูลขนาดเล็ก พร้อมทดสอบ density, bandwidth และขอบเขตการตีความ

พี่โชว์
งูต้นฉบับกำลังเปลี่ยนแฟ้มค่าตั้งต้นบนชั้นกลาง ขณะที่ประตูกั้นงานอื่นปิดอยู่บนโต๊ะสีมิ้นต์
pythonosenvironment

Python 3.14 os.reload_environ: รีเฟรช environment ได้ แต่ห้ามแข่งกับ thread อื่น

เข้าใจเวลาที่ os.environ ไม่ตรงกับ process environment พร้อมทดสอบ reload แบบ isolated และวาง synchronization

พี่โชว์
นากแม่น้ำต้นฉบับกำลังคัดบัตรงานซ้ำจากสายพานหลายเส้นลงตะกร้ากลางเพียงใบเดียว
javaconcurrencyconcurrenthashmap

Java ConcurrentHashMap.newKeySet: ทำ concurrent set โดยไม่ใส่ Boolean หลอก

ใช้ key set สำหรับ dedup ข้ามหลาย thread พร้อมทดสอบ add semantics และแยกจาก map ที่ต้องเก็บ metadata

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

Java NavigableMap.subMap: เปิดหน้าต่างช่วงคีย์แบบ live view

เลือกข้อมูลตามขอบเขต inclusive/exclusive โดยไม่ copy พร้อมทดสอบการแก้ผ่าน view และการปฏิเสธคีย์นอกช่วง

พี่โชว์
นากแม่น้ำต้นฉบับกำลังสอดบัตรรหัสผ่านกรอบตรวจที่ต้องพอดีทั้งใบ ไม่ใช่เพียงมีบางส่วนตรงกัน
javaregexpattern

Java Pattern.asMatchPredicate: ใช้ regex แบบตรงทั้งข้อความใน Stream

แยก full match จาก find semantics ให้ชัด พร้อมทดสอบ filter ของรหัสงานและกรณีมีข้อความเกิน

พี่โชว์
กระรอกดินต้นฉบับกำลังใช้แว่นขยายรวมการ์ดงานที่เหมือนกันและวางติดกันบนโต๊ะสีมิ้นต์
goslicesstdlib

Go slices.CompactFunc: รวมข้อมูลซ้ำที่ติดกันด้วยกติกาของเรา

ลดข้อมูลซ้ำแบบ adjacent โดยกำหนด equality เอง พร้อมแยกกรณีที่ต้อง sort ก่อนและผลต่อ backing array

พี่โชว์
ปูต้นฉบับสีส้มแดงกำลังเลื่อนลูกปัดสะสมบนรางข้อมูลสีมิ้นต์ทีละชิ้น
rustiteratorsscan

Rust Iterator::scan: พก state ไปทีละรายการโดยไม่หลุดจาก pipeline

ใช้ scan สร้าง running state ใน iterator พร้อมอธิบายจังหวะหยุด, ownership และกรณีที่ loop ชัดกว่า

พี่โชว์
อิกัวนาต้นฉบับกำลังหมุนถาดแบ่งช่องสีเขียวให้ข้อมูลสองช่องหน้าเลื่อนไปท้าย
zigstdlibmemory

Zig std.mem.rotate: หมุน slice in-place สำหรับคิวแบบวงแหวน

เข้าใจทิศทาง amount, ค่าเกินความยาว และ trade-off ของการหมุนข้อมูลจริงเทียบกับเก็บ head index

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

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

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

พี่โชว์
งูต้นฉบับกำลังคลุมกรอบงาน async ด้วยผ้าสีครีมที่ใช้ได้ทั้งรอบกล่องและรอบสายพาน
pythoncontextlibasyncio

Python AsyncContextDecorator: ใช้ lifecycle เดียวกันทั้ง async with และ decorator

สร้างขอบเขต async ที่นำกลับใช้ได้สองรูปแบบ พร้อม unittest พิสูจน์ลำดับ enter/work/exit

พี่โชว์
งูต้นฉบับกำลังแบ่งด้ายจากหลอดเดียวเป็นสองทาง โดยทางช้าค่อย ๆ มีกองด้ายสำรองสะสม
pythonitertoolsiterators

Python itertools.tee: แยก iterator ได้ แต่ต้องรู้ว่า buffer โตตรงไหน

อธิบาย shared source, backlog เมื่อ consumer วิ่งไม่เท่ากัน และวิธีเลือก list หรือ tee ให้ตรงงาน

พี่โชว์
งูต้นฉบับกำลังประกอบบัตรข้อมูลจากช่องฟิลด์ แล้วล็อกกรอบคลาสให้แก้ค่าไม่ได้
pythondataclassespython314

Python 3.14 make_dataclass decorator: กำหนด policy ตอนสร้างคลาสจาก schema

ใช้ decorator hook บังคับ frozen/slots กับ dataclass แบบ dynamic พร้อม unittest ป้องกัน mutation

พี่โชว์
นากแม่น้ำต้นฉบับยืนที่แท่นกลางแลกตะกร้าสองใบซึ่งมาจากคนละสายพาน
javaconcurrencyexchanger

Java Exchanger: นัดแลกข้อมูลระหว่างสองงานแบบเจอกันพอดี

ใช้ Exchanger ทำ two-party handoff พร้อม timeout และแยกจาก queue ที่รองรับหลาย producer/consumer

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

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

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

พี่โชว์
อิกัวนาต้นฉบับเลื่อนไม้ชี้จากธงเริ่มสีเขียวไปยังลูกปัดตัวคั่นสีอำพันถัดไป
zigstdlibparsing

Zig indexOfScalarPos: ค้นตัวคั่นต่อจาก cursor โดยไม่ตัด slice ซ้ำ

ใช้ std.mem.indexOfScalarPos ทำ parser แบบเดิน cursor พร้อมเข้าใจ null และขอบเขตเริ่มค้นหา

พี่โชว์
ปูสีส้มแดงต้นฉบับหยุดสายพานสะสมทันทีเมื่อพบชิ้นงานสีอำพันแตกร้าว
rustiteratortry-fold

Rust try_fold: สะสมค่าแล้วหยุดทันทีเมื่อเจอเงื่อนไขผิด

ใช้ Iterator::try_fold รวมข้อมูลพร้อมส่ง error ออกจากลูปเร็ว โดยไม่ต้องเขียน mutable accumulator เอง

พี่โชว์
กระรอกดินต้นฉบับเดินเก็บของจากท้ายถาดมาหน้าตามลูกศรย้อน โดยของในถาดเดิมไม่ถูกสลับ
goslicesiterators

Go slices.Backward: วนจากท้ายโดยไม่กลับลำดับข้อมูลต้นฉบับ

ใช้ iterator ย้อนลำดับใน Go เมื่ออยากอ่านจากท้ายไปหน้า โดยไม่ mutate slice และไม่เขียน index loop เอง

พี่โชว์
นากต้นฉบับเลือกแผ่นสถานะที่เรียงติดกันระหว่างหมุดสองจุดบนฉากสว่าง
javaenumsetcollections

Java EnumSet.range: สร้างช่วงสถานะแบบ type-safe และประหยัด

ใช้ EnumSet.range เมื่อ enum มีลำดับโดเมนชัด พร้อมระวังการผูก logic กับ ordinal

พี่โชว์
นากต้นฉบับวางแผ่นปฏิทินต่อกันจนถึงเส้นขอบปลายที่เว้นไว้บนโต๊ะมิ้นต์
javadate-timestreams

Java LocalDate.datesUntil: เดินช่วงวันแบบไม่พลาดขอบเขตท้าย

สร้าง Stream ของวันที่แบบ end-exclusive พร้อม step และป้องกัน off-by-one ในรายงาน

พี่โชว์
นากต้นฉบับคัดบัตรผ่านตะแกรงลายเส้นลงสองตะกร้าบนฉากสว่าง
javaregexstreams

Java Pattern.asPredicate: เปลี่ยน regex เป็นตัวกรองที่ประกอบกับ Stream ได้

ใช้ Pattern.asPredicate กับ Stream โดยแยก find ออกจาก matches และคอมไพล์ regex เพียงครั้งเดียว

พี่โชว์
งูต้นฉบับกดกระดิ่งสามใบให้ปล่อยผลลัพธ์จาก callable ตามลำดับบนฉากมิ้นต์
pythonoperatorfunctional-programming

Python operator.call: ส่งฟังก์ชันเข้า pipeline แบบไม่ต้องห่อ lambda

ใช้ operator.call เรียก callable ใน functional pipeline พร้อมรู้ว่าความอ่านง่ายสำคัญกว่าความสั้น

พี่โชว์
อีกัวนาต้นฉบับหมุนแถวลูกปัดสีเขียวให้กลับทิศบนโต๊ะมิ้นต์
zigmemoryslices

Zig std.mem.reverse: กลับลำดับในที่เดิม พร้อมเข้าใจ slice และ mutation

ทดลอง reverse slice แบบ in-place ใน Zig 0.16 และระวังเรื่องข้อมูลต้นฉบับถูกแก้

พี่โชว์
ปูต้นฉบับตรวจลูกโอ๊กในกล่องตัวเลือกและคีบออกเฉพาะเมื่อผ่านเกณฑ์บนฉากสว่าง
rustoptionownership

Rust Option::take_if: ย้ายค่าออกเมื่อเงื่อนไขผ่าน โดยไม่ชน borrow

ใช้ take_if ตรวจและย้ายค่าจาก Option อย่างเป็นอะตอม พร้อมเทียบกับ take และ as_ref

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

Go maps.Insert: เติม map จาก iterator โดยไม่ต้องเขียน loop ซ้ำ

รู้จัก maps.Insert และ iter.Seq2 สำหรับประกอบข้อมูลแบบ pull-free พร้อมขอบเขตเรื่องค่าซ้ำและลำดับ

พี่โชว์
นากกายวางตราประทับแฮชบนแฟ้มเอกสารบนโต๊ะมินต์
pythonhashlibsecurity

Python hashlib.file_digest: แฮชไฟล์ใหญ่โดยไม่อ่านทั้งก้อนเอง

ใช้ hashlib.file_digest ตั้งแต่ Python 3.11 คำนวณแฮชจากไฟล์หรือไฟล์ออบเจ็กต์โดยไลบรารีจัดการบัฟเฟอร์ให้ ลดโค้ดผิดพลาดตอนเช็กซัม

น้องกาย
นากกายเดินสำรวจต้นไม้โฟลเดอร์บนโต๊ะมินต์ถือแผนที่ path
pythonpathlibfilesystem

Python Path.walk: เดินต้นไม้โฟลเดอร์แบบ pathlib โดยไม่ต้อง os.walk

ใช้ Path.walk ตั้งแต่ Python 3.12 ได้ dirpath/dirnames/filenames คล้าย os.walk แต่เป็น Path object ลดการต่อสตริงเอง

น้องกาย
นากต้นฉบับวางของเป็นคู่ในช่องตู้หลายช่องที่ปิดฝาเรียบร้อย
javacollectionsimmutability

Java Map.ofEntries: สร้าง immutable map หลายคู่โดยไม่เปิดช่องให้แก้ทีหลัง

ใช้ Map.entry กับ Map.ofEntries สำหรับตารางคงที่ พร้อมข้อจำกัด null, duplicate key และ Java 17 assertions

น้องกาย
นากต้นฉบับตั้งประตูจับเวลาก่อนปล่อยกล่องงานลงสายพาน
javacompletablefutureconcurrency

Java delayedExecutor: หน่วงการส่งงานโดยไม่สร้าง scheduler ใหม่ทุกจุด

ใช้ CompletableFuture.delayedExecutor ประกอบ async pipeline พร้อมแยก delay ออกจาก timeout และทดสอบบน Java 17

น้องกาย
นากต้นฉบับแยกเม็ดเวลาจากภาชนะใหญ่ลงถาดส่วนประกอบสามใบ
javadurationtime-api

Java Duration parts: แยกวัน ชั่วโมง นาที วินาทีโดยไม่คำนวณ modulo เอง

ใช้ toDaysPart และเมธอด part อื่นของ Duration เพื่อแสดงช่วงเวลา พร้อม Java 17 assertions

น้องกาย
งูต้นฉบับสำรวจต้นไม้โฟลเดอร์และถือกุญแจสำหรับเปิดของในกิ่งปัจจุบัน
pythonfilesystemdir-fd

Python os.fwalk: เดินต้นไม้ไฟล์พร้อม dir_fd เพื่อลด path race

ใช้ os.fwalk เปิดไฟล์แบบอ้างอิงไดเรกทอรีปัจจุบัน พร้อมอธิบายอายุของ descriptor และ unittest ที่รันจริง

น้องกาย
งูต้นฉบับย้ายเส้นทางระหว่างนาฬิกาสามเรือนบนแผนที่โต๊ะสีสว่าง
pythonzoneinfotimezone

Python zoneinfo.reset_tzpath: คุมแหล่งข้อมูล timezone ใน test และ deployment

เปลี่ยนเส้นทางค้นหา TZif แบบชั่วคราวอย่างมีวินัย พร้อม restore state และ unittest ที่รันจริง

น้องกาย
งูต้นฉบับเทเม็ดถั่วจากแฟ้มคอนฟิกลงตาชั่งที่สมดุลพอดี
pythontomllibdecimal

Python tomllib + Decimal: อ่านเลขทศนิยมจาก config โดยไม่เสียเศษ

ใช้ parse_float ของ tomllib ส่งค่าทศนิยมเข้า Decimal ตั้งแต่ตอน parse พร้อม unittest ที่รันจริง

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

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

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

น้องกาย
อิกัวนาต้นฉบับต่อหัวท่อสองอันเป็นคู่สื่อสารบนโต๊ะทดลองสีสว่าง
zigiosocket

Zig 0.16 Socket.createPair: สร้างช่องสื่อสารสองปลายสำหรับงานในโปรเซส

ทดลอง API socket pair ใหม่ใน std.Io พร้อมอธิบาย ownership, การปิด handle และจังหวะที่ควรเลือก pipe

น้องกาย
ปูต้นฉบับชี้จุดที่แถวก้อนหินขนาดเล็กเปลี่ยนเป็นก้อนใหญ่บนฉากสว่าง
rustslicebinary-search

Rust partition_point: หาเส้นแบ่งใน slice ที่เรียงตามเงื่อนไข

ใช้ binary search หา index แรกที่ predicate เปลี่ยนจากจริงเป็นเท็จ พร้อม edge cases และ test ที่รันจริง

น้องกาย
กระรอกดินต้นฉบับตรวจตะกร้าสามใบและหยิบผลไม้ชิ้นแรกที่ไม่ว่างบนฉากสว่าง
gocmpconfiguration

Go cmp.Or: เลือกค่าตัวแรกที่ไม่เป็น zero value แบบอ่านรู้เรื่อง

ใช้ cmp.Or จัดลำดับค่า config, environment และ fallback โดยไม่ต้องเขียน if ซ้อน พร้อมตัวอย่างที่รันจริง

น้องกาย
กระรอกดินสีฟ้าอมเขียวต้นฉบับกำลังหยุดสายพานและผูกป้ายสาเหตุเชิงภาพไว้ที่คันหยุด
gogolangcontext

Go context.WithCancelCause: บอกเหตุผลที่งานถูกยกเลิก

ส่งสาเหตุผ่าน cancellation tree โดยยังรักษา contract ของ context พร้อม go test ที่รันจริง

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

Rust slice::chunk_by: แบ่งข้อมูลติดกันตามกติกาโดยไม่ copy

ใช้ chunk_by มอง slice เป็นช่วงต่อเนื่องตาม predicate พร้อมทดสอบ empty input, ศูนย์ และเส้นแบ่งกลุ่ม

พี่โชว์
นาฬิกาจับเวลาคู่กับกล่อง future บนโต๊ะมิ้นต์
javaconcurrencycompletablefuture

Java CompletableFuture.orTimeout: ตั้งเวลาตายให้งานอะซิงก์

ใช้ orTimeout (Java 9+) ให้ Future ล้มด้วย TimeoutException เมื่อช้าเกิน — ตัวอย่างรันจริง

น้องกาย
สายพานตัดหัวที่ไม่ผ่านแล้วเหลือหางบนโต๊ะมิ้นต์
javastreamjvm

Java Stream.dropWhile: โยนคำนำหน้าทิ้ง แล้วเก็บหางที่เหลือ

คู่กับ takeWhile — dropWhile ตัดหัวที่ไม่ผ่านเงื่อนไข พร้อมตัวอย่างรันจริง

น้องกาย
แถวการ์ดเรียงแล้วมีการ์ดใหม่สอดกลางอย่างเป็นระเบียบ
pythonbisectstdlib

Python bisect.insort: สอดค่าใหม่แล้วยังเรียงอยู่

ใช้ bisect.insort คงลิสต์เรียงตอนแทรก พร้อมตัวอย่าง unittest — เหมาะคิวคะแนน/ตารางเวลาเล็ก ๆ

น้องกาย
กราฟจุดสองชุดบนสมุดมิ้นต์พร้อมไม้บรรทัดแนวโน้ม
pythonstatisticsstdlib

Python statistics.correlation: วัดแนวโน้มสองชุดตัวเลขใน stdlib

ใช้ statistics.correlation (3.10+) คำนวณ Pearson พร้อม unittest รันจริง — ไม่ต้องดึง NumPy แค่ดูความสัมพันธ์คร่าว ๆ

น้องกาย
นากกายอัปเดตช่องแผนที่พร้อมกันบนโต๊ะมิ้นต์โดยไม่ชนกุญแจ
javaconcurrencycollections

Java ConcurrentHashMap.compute: อัปเดตค่าต่อคีย์แบบ atomic

ใช้ compute เพื่อนับเคาน์เตอร์โดยไม่แข่ง get+put พร้อมตัวอย่างรันจริง

น้องกาย
นากกายเปิดวาล์วสตรีมบนโต๊ะมิ้นต์ ตัดลำดับเมื่อเจอชิ้นอำพัน
javastreamjvm

Java Stream.takeWhile: ตัดคำนำหน้าตามเงื่อนไข แล้วหยุดทันที

เทียบ takeWhile กับ filter/dropWhile พร้อมตัวอย่างรันจริง

น้องกาย
นากกายวางแสตมป์ override ทับเมธอดลูกบนสมุดมิ้นต์
pythontypingpep698

Python typing.override: แสตมป์บอก type checker ว่าตั้งใจทับเมธอดแม่

ใช้ @override จาก typing (PEP 698) เพื่อจับชื่อเมธอดทับผิด พร้อม unittest รันไทม์

น้องกาย
นากกายถือการ์ดข้อมูลสองใบ ใบใหม่แก้แค่ช่องสีอำพันบนโต๊ะมิ้นต์
pythondataclassesstdlib

Python dataclasses.replace: คัดลอกแล้วแก้บางฟิลด์แบบปลอดภัย

ใช้ dataclasses.replace กับ dataclass ธรรมดาและ frozen พร้อม unittest

น้องกาย
นากกายดันกล่องเข้าคิววงกลมบนโต๊ะมิ้นต์ กล่องเก่าหล่นออกด้านท้าย
pythoncollectionsdeque

Python deque(maxlen): คิววงกลมที่ตัดของเก่าให้อัตโนมัติ

ใช้ collections.deque แบบ maxlen เพื่อเก็บหน้าต่างล่าสุด N ชิ้น พร้อม unittest

น้องกาย
บล็อกโค้ดบนโต๊ะมิ้นต์มีไม้บรรทัดดึงเยื้องร่วมออกเหลือเนื้อหาตรงคอลัมน์
javastringtext-blocks

Java String.stripIndent: ตัดเยื้องร่วมของบล็อกข้อความ

ใช้ stripIndent กับ text block หรือสตริงหลายบรรทัดเพื่อตัดช่องว่างนำหน้าต่ำสุดร่วมกันโดยคงเนื้อหาสัมพัทธ์

น้องกาย
นากกายต่อท่อ async สองท่อนให้เป็นเส้นเดียวบนโต๊ะมิ้นต์
javacompletablefutureasync

Java thenCompose: ต่อ Future แบบแบน ไม่ซ้อน CompletionStage

ใช้ CompletableFuture.thenCompose เมื่อขั้นตอนถัดไปคืน Future อีกชั้น พร้อมเทียบ thenApply ที่ซ้อน

น้องกาย
นากกายกดปุ่มชื่อเมธอดบนแผงมิ้นต์ แล้วการ์ดออบเจ็กต์เรียงตัวเอง
pythonoperatorstdlib

Python operator.methodcaller: เรียกเมธอดเป็นคีย์เรียง/แมปโดยไม่เขียนแลมบ์ดา

ใช้ operator.methodcaller สร้าง callable ที่เรียกเมธอดชื่อเดิม พร้อมอาร์กิวเมนต์ คู่กับ sorted/map

น้องกาย
นากกายรับกล่องงานสามใบที่เสร็จไม่พร้อมกันบนสายพานมิ้นต์
pythonconcurrencyfutures

Python as_completed: เก็บผลงานขนานทีละชิ้นตามลำดับเสร็จ

ใช้ concurrent.futures.as_completed เพื่อประมวลผล future ที่เสร็จก่อนโดยไม่รอทั้งหมด พร้อม unittest

น้องกาย
นากกายตั้งนาฬิกาจับเวลาข้างกล่องงานบนโต๊ะมิ้นต์
javaconcurrencycompletablefuture

Java CompletableFuture.orTimeout: ตัดงานช้าด้วยหมดเวลาในตัว

สอนใช้ CompletableFuture.orTimeout เพื่อล้มอนาคตที่ค้างเกินกำหนด พร้อม java-test ที่รันบน JDK ของเครื่อง

น้องกาย
นากกายเปิดสมุดโน้ตคอนฟิกบนโต๊ะมิ้นต์มีกุญแจและค่าคู่กัน
pythonstdlibtoml

อ่านไฟล์ TOML ด้วย tomllib ในสแตนดาร์ดไลบรารี

สอนโหลดคอนฟิก TOML ด้วย tomllib.load / loads พร้อม unittest ที่รันจริง ไม่ต้องติดตั้งแพ็กเกจภายนอก

น้องกาย
นากกายสีมิ้นต์จัดกล่องเล็กเรียงเป็นแถวบนโต๊ะทำงานสว่าง
pythonstdlibitertools

Python itertools.batched: หั่นลิสต์เป็นก้อนคงที่แบบสั้น ๆ

สอนใช้ itertools.batched แบ่ง iterable เป็นทูเปิลขนาด n พร้อม unittest ที่รันจริง อ้างอิง docs.python.org

น้องกาย
นากกายเทเม็ดสีผ่านกรวยไม้แยกสองทางลงชามบนโต๊ะมิ้นต์
javastreamstutorial

Java Collectors.teeing: สรุปสตรีมสองมุมในครั้งเดียว

ใช้ Collectors.teeing รวมผล average กับ count จากสตรีมเดียว พร้อมเมธอด main และการ assert

น้องกาย
นากกายจัดหมุดรูปร่างสีต่างๆ ลงถาดไม้บนโต๊ะมิ้นต์
pythonstdlibenum

Python StrEnum: ติดป้ายสถานะที่เป็นสตริงโดยไม่ต้อง .value ทุกครั้ง

ใช้ enum.StrEnum ให้สมาชิกเทียบและต่อสตริงได้ตรง ๆ พร้อม unittest อ้างอิงเอกสารมาตรฐาน

น้องกาย
นากกายชี้กระดานโน้ตซ้อนชั้นบนโต๊ะมิ้นต์
pythonstdlibperformance

Python lru_cache: จำผลคำนวณซ้ำให้ฟังก์ชันบริสุทธิ์เร็วขึ้น

อธิบาย functools.lru_cache แบบสั้น พร้อม unittest ที่พิสูจน์ว่าเรียกซ้ำไม่คำนวณใหม่

น้องกาย
ปูต้นฉบับกำลังใช้วงเวียนวัดริบบิ้นสีเขียวที่ถูกตัดเป็นช่วงบนโต๊ะสว่าง
ruststringsperformance

Rust 1.98: substr_range คืนช่วง byte ของ slice โดยไม่ค้นซ้ำ

ทำความเข้าใจ str::substr_range สำหรับเชื่อม string slice กลับสู่ตำแหน่งต้นฉบับ พร้อมข้อจำกัดเรื่อง provenance และ UTF-8

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

Go 1.27: ใช้ go doc -ex หา executable example ก่อนเดา API

อ่านตัวอย่างที่ผูกกับ package และ symbol จากเครื่องตัวเองด้วย go doc -ex พร้อมวิธีใช้ให้ตรง module version

พี่โชว์
นาฬิกาและแผงคำขอ HTTP บนโต๊ะมิ้นต์มีเข็มชี้ใกล้หมดเวลาและนากกายยืนมุมซ้าย
javahttptimeout

Java HttpClient: ตั้ง request timeout ไม่ให้ค้างรอปลายทาง

ใช้ java.net.http.HttpClient กับ timeout ต่อคำขอ พร้อม java-test ที่ยืนยัน Duration และพฤติกรรมหมดเวลา

น้องกาย
นากกายสีมิ้นต์หยุดรอสายพานงานที่นาฬิกาทรายหมด แต่เครื่องด้านหลังยังหมุนอยู่
javaconcurrencytimeouts

Java CompletableFuture.orTimeout: ตั้งเส้นตายได้ แต่ไม่ได้หยุดงานเบื้องหลังให้

แยกเวลารอของ future ออกจากการยกเลิก I/O พร้อม test สำเร็จและ timeout บน Java 17

พี่โชว์
นากกายสีมิ้นต์ถ่ายสำเนาแผนที่ลงกระดาษใหม่ ข้าง ๆ มีกรอบใสที่ยังเชื่อมกับต้นฉบับ
javacollectionsimmutability

Java Map.copyOf คือ Snapshot แต่ unmodifiableMap ยังมองเห็นต้นฉบับเปลี่ยน

แยก immutable copy ออกจาก read-only view พร้อม assertions ที่เผย aliasing ของ map ต้นทาง

พี่โชว์
นากกายสีมิ้นต์กำลังเปิดกล่องสำรองเฉพาะเมื่อกล่องหลักว่างบนโต๊ะสว่าง
javaoptionalperformance

Java Optional: orElse สร้างค่าทิ้งได้ ส่วน orElseGet ทำเมื่อจำเป็น

เห็นผลของ eager กับ lazy fallback ชัด ๆ พร้อม assertion ที่กัน side effect เกิดทั้งที่มีค่าอยู่แล้ว

พี่โชว์
งูต้นฉบับกำลังจัดบัตรงานบนลูกศร dependency และหยุดวงลูกศรที่วนกลับหาตัวเอง
pythonalgorithmsautomation

Python TopologicalSorter: เรียงงานจาก dependency และจับวงจรก่อนเริ่ม

สร้างแผนงานจากกราฟ predecessor พร้อม unittest สำหรับลำดับถูกต้อง งานอิสระ และ cycle

พี่โชว์
งูสีมิ้นต์ต้นฉบับกำลังแยกลูกปัด request สองสีลงรางคู่ที่ไม่ไหลปนกันบนโต๊ะสว่าง
pythonasyncioobservability

Python contextvars: ส่ง Request ID ข้าม async โดยไม่ปนกัน

ใช้ ContextVar แทน global สำหรับข้อมูลระดับ task พร้อม unittest ที่ปล่อยสอง coroutine วิ่งพร้อมกัน

พี่โชว์
งูขดตัวต้นฉบับกำลังรูดซิปสองแถวที่ยาวไม่เท่ากันและชี้ฟันซิปส่วนเกินบนโต๊ะมิ้นต์
pythondata-qualitytesting

Python zip(strict=True): ให้ข้อมูลคนละความยาวล้มตรงจุด ไม่เงียบหาย

ป้องกัน record ถูกตัดเมื่อสองลิสต์ยาวไม่เท่ากัน พร้อม unittest สำหรับ input ปกติ ว่าง และผิดรูป

พี่โชว์
ภาพวาดโทนมิ้นต์สว่าง อิกัวนาตัวเล็กใช้ฉากไม้วัดมุมของกรอบไม้เปล่าที่เพิ่งประกอบเสร็จบนโต๊ะ มีสลักเล็กสีอำพันอยู่ที่มุมข้อต่อ ชิ้นส่วนที่ยังไม่ได้ใช้วางเรียงข้าง ๆ
zigworkshopcli

Zig Workshop #1: วางโครง CLI ที่รันได้จริงด้วย build.zig ของ 0.16

เริ่ม workshop สร้าง zlog เครื่องมือวิเคราะห์ nginx access log — zig init ของจริงใน 0.16, build.zig.zon ที่บังคับ fingerprint, main ที่รับ std.process.Init, อ่าน argument, buffered stdout พร้อม flush และรหัสจบโปรแกรมที่ถูกต้อง

พี่โชว์
ภาพวาดโทนมิ้นต์สว่าง อิกัวนาตัวเล็กยืนเลือกภาชนะจากชั้นไม้ที่มีถาดใหญ่ใบเดียว ถังเล็ก กล่องช่องเท่ากันหลายช่อง และกระป๋องจิ๋ว กำลังยกถาดใหญ่ที่มีขอบสีอำพันลงมาใช้
zigtutorialmemory-management

Zig 0.16 บทที่ 9: เลือก allocator ให้ถูกงาน และของที่หายไปใน 0.16

สวนสัตว์ allocator ของ Zig 0.16 — arena ที่ทำให้โค้ดคืนหน่วยความจำหายไปเกือบหมด (วัดได้ว่าลดการขอจาก 50 ครั้งเหลือ 5), FixedBufferAllocator, MemoryPool, stackFallback พร้อมทางย้ายสู่ BufferFirstAllocator ใน 0.17, DebugAllocator vs smp_allocator และรายชื่อ allocator ที่ถูกลบทิ้งใน 0.16

พี่โชว์
ภาพวาดโทนมิ้นต์สว่าง อิกัวนาตัวเล็กใส่เอี๊ยมยืนหลังเคาน์เตอร์ไม้ ผลักกล่องไม้เปล่าที่มีป้ายเล็กสีอำพันติดอยู่ข้างฝาข้ามเคาน์เตอร์มาให้ ด้านหลังเป็นชั้นวางกล่องเปล่าหลายขนาด
zigtutorialmemory-management

Zig 0.16 บทที่ 8: allocator คืออะไร และใครเป็นเจ้าของหน่วยความจำ

หัวใจของ Zig คือไม่มี allocator ตั้งต้น — ทำความเข้าใจ interface ที่มีแค่สี่ฟังก์ชัน, ธรรมเนียมว่าใครเป็นเจ้าของผลลัพธ์, เขียน allocator ของตัวเองที่นับการใช้งานได้, และรายงาน leak จริงจาก DebugAllocator ที่ผมรันให้ดูทั้ง output และรหัสจบโปรแกรม

พี่โชว์
ภาพวาดโทนมิ้นต์สว่าง ลังไม้ห้าใบเหมือนกันเรียงกันบนโต๊ะยาว มีเพียงใบกลางที่ปักธงเล็กสีอำพันไว้บนฝา อิกัวนาตัวเล็กยืนข้างลังใบนั้นและจดบันทึกลงกระดาษครีมบนคลิปบอร์ด
zigtutorialerror-handling

Zig 0.16 บทที่ 7: error ไม่มีข้อมูลแนบ แล้วจะบอกรายละเอียดยังไง

งานจริงของ error handling ใน Zig — รูปแบบ diagnostics struct ที่ standard library ใช้เอง, ทดสอบทุกจุดที่หน่วยความจำเต็มด้วย checkAllAllocationFailures, ตาราง safety ต่อ build mode ที่ผมรันจริงทั้งสามโหมด และการเขียน panic handler เองแบบ 0.16

พี่โชว์
ภาพวาดโทนมิ้นต์สว่าง อิกัวนาตัวเล็กยืนดูรางน้ำไม้ที่แยกเป็นสองทาง ทางหนึ่งไหลต่อไปข้างหน้า อีกทางเทลงถาดที่มีป้ายสีอำพันวางรออยู่ ไม่มีน้ำหกออกนอกราง
zigtutorialerror-handling

Zig 0.16 บทที่ 6: error ที่คอมไพเลอร์ไม่ยอมให้คุณเมิน

ระบบ error ของ Zig ไม่มี exception ไม่มีการคลี่ stack และเมินไม่ได้ — error set เป็นชนิดข้อมูล, try/catch/errdefer, switch บน error ที่ต้องครบทุกกรณี และ error return trace ที่ผมรันจริงแล้วพบว่า ReleaseSafe ปิดไว้ ต่างจากที่เอกสารส่วนใหญ่บอก พร้อมเทียบกับ C++, Java, C#, Go และ Rust

พี่โชว์
ภาพวาดโทนมิ้นต์สว่าง อิกัวนาตัวเล็กนั่งอยู่หน้าแท่นพิมพ์ไม้ กำลังเรียงตัวพิมพ์ลงบล็อกเพื่อทำแม่พิมพ์ไว้ล่วงหน้า มีแผ่นที่พิมพ์เสร็จแล้วเรียงซ้อนอยู่ข้าง ๆ
zigtutorialcomptime

Zig 0.16 บทที่ 5: comptime กลไกเดียวที่แทน macro, template และ reflection ทั้งหมด

comptime คือการรันภาษา Zig เองตอนคอมไพล์ — สร้างตาราง lookup ล่วงหน้า, เขียน generic ด้วยฟังก์ชันที่คืน type, อ่านโครงสร้าง struct ด้วย @typeInfo และ inline for, ตรวจความถูกต้องด้วย @compileError และ @Int ที่มาแทน @Type ใน 0.16 พร้อมตัวอย่างที่รันผ่านจริง

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

Zig 0.16 บทที่ 4: ทำไม I/O ต้องส่ง io ไปทุกที่ และข้อความที่เขียนไม่เหมือนเดิม

หัวใจของการเปลี่ยนแปลงใน Zig 0.16 — I/O กลายเป็นพารามิเตอร์เหมือน allocator, writer ที่คุณต้องส่ง buffer ให้เองและต้อง flush, อ่านไฟล์ทีละบรรทัดด้วย takeDelimiter, จัดการ CRLF ของ Windows และ format method ที่เปลี่ยน signature จนโค้ดเก่าใช้ไม่ได้

พี่โชว์
ภาพวาดโทนมิ้นต์สว่าง อิกัวนาตัวเล็กยืนหน้าตู้ลิ้นชักไม้ที่ดึงออกมาสามช่อง แต่ละช่องมีของคนละแบบ กำลังติดป้ายกำกับช่องที่สามด้วยแปรงจุ่มสีเหลืองอำพัน
zigtutorialfundamentals

Zig 0.16 บทที่ 3: struct, enum, union และคอนเทนเนอร์ที่เปลี่ยนไปทั้งหมด

ประกอบข้อมูลเป็นก้อนใหญ่ใน Zig 0.16 — struct กับ decl literal, enum ที่ switch ครบทุกกรณีหรือคอมไพล์ไม่ผ่าน, tagged union แทน inheritance, การจัดวางหน่วยความจำที่คอมไพเลอร์เรียงให้เอง และ ArrayList/HashMap/MultiArrayList แบบ 0.16 ที่ใช้ไม่เหมือนเดิม

พี่โชว์
ภาพวาดโทนมิ้นต์สว่าง อิกัวนาตัวเล็กกำลังจัดบล็อกไม้ขนาดไม่เท่ากันลงในรางไม้ที่มีช่องพอดีตัว มีบล็อกใบหนึ่งใหญ่เกินช่องถูกวางแยกไว้ข้าง ๆ อย่างชัดเจน
zigtutorialfundamentals

Zig 0.16 บทที่ 2: ชนิดข้อมูลและการควบคุมการทำงาน ที่ไม่มีอะไรซ่อนไว้

เจาะพื้นฐานภาษา Zig 0.16 — จำนวนเต็มความกว้างใดก็ได้, การล้นที่ Zig ถือว่าผิดกฎทั้ง signed และ unsigned, optional ที่แทน null ได้จริง, ความต่างของ array กับ slice, ลูปที่วิ่งหลายชุดพร้อมกัน, labeled switch และ defer พร้อมตัวอย่างที่รันผ่านจริงทุกชิ้น

พี่โชว์
ภาพวาดโทนมิ้นต์สว่าง อิกัวนาตัวเล็กยืนบนโต๊ะไม้ริมหน้าต่าง กำลังยกกล่องเครื่องมือใบเดียวที่มีทั้งค้อน ไขควง และตลับเมตรอยู่ข้างใน วางทับกล่องเก่าหลายใบที่ปิดฝาไว้
ziginstallationtutorial

เริ่มต้น Zig 0.16 ตั้งแต่ติดตั้ง: ทำไม tutorial เก่าที่คุณเจอถึงคอมไพล์ไม่ผ่าน

บทแรกของชุดเรียน Zig ภาษาไทย — ติดตั้ง Zig 0.16.0 บน Windows, macOS และ Linux, เขียนโปรแกรมแรกสองแบบ, ตั้งโปรเจกต์ด้วย zig init และเข้าใจว่าทำไมโค้ดตัวอย่างส่วนใหญ่บนอินเทอร์เน็ตตอนนี้ใช้กับ 0.16 ไม่ได้

พี่โชว์
25 เทคนิค Go ที่นักพัฒนามืออาชีพใช้จริงในงาน Production
gogolangconcurrency

25 เทคนิค Go ที่นักพัฒนามืออาชีพใช้จริงในงาน Production

รวม 25 เทคนิค Go (Golang) ที่ใช้ได้จริงตั้งแต่ goroutines, channels, context, error handling ไปจนถึง generics, structured logging และฟีเจอร์ใหม่ใน Go 1.25/1.26 พร้อมตัวอย่างโค้ดและ diagram ประกอบทุกหัวข้อ

Dev Team
คู่มือติดตั้ง Rust ฉบับเข้าใจง่าย
rustinstallationtutorial

คู่มือติดตั้ง Rust ฉบับเข้าใจง่าย

เรียนรู้วิธีติดตั้ง Rust และ Cargo บน Windows, macOS และ Linux แบบละเอียด พร้อมเคล็ดลับการตั้งค่า toolchain สำหรับมือใหม่

Dev Team
คู่มือติดตั้ง Go (Golang) ฉบับเข้าใจง่าย
gogolanginstallation

คู่มือติดตั้ง Go (Golang) ฉบับเข้าใจง่าย

เรียนรู้วิธีติดตั้ง Go (Golang) บน Windows, macOS และ Linux แบบ step-by-step พร้อมตัวอย่างโค้ดและเคล็ดลับสำหรับมือใหม่

Dev Team
Lynx.js Workshop ตอนที่ 1: เริ่มต้นเขียน Mobile App ด้วย ReactLynx
lynxjsreactlynxmobile

Lynx.js Workshop ตอนที่ 1: เริ่มต้นเขียน Mobile App ด้วย ReactLynx

พี่โชว์พาทำความรู้จัก Lynx.js (ReactLynx) — framework สำหรับสร้าง mobile app ข้าม platform ด้วย React + TypeScript จาก setup โปรเจกต์จริง, รันบนมือถือด้วย QR code, จนเข้าใจโครงสร้าง element แบบ view/text

Showkhun