Tag: testing

123 รายการ

Blog

นากการ์ตูนใส่ฮู้ดสีเขียวเทียบจิ๊กซอว์สองชิ้นที่หน้าตาต่างกัน ชิ้นหนึ่งเป็นชิ้นเดียว อีกชิ้นประกอบจากสองส่วน และเครื่องอัดการ์ตูนที่กดทั้งสองให้เป็นรูปเดียวกัน
javaunicodenormalizer

Java Normalizer: ค้นหาชื่อไทยให้ตรงกัน เข้าใจ NFC กับ NFKC ก่อนใช้

ทำคีย์สำหรับค้นหาข้อความด้วย java.text.Normalizer พร้อมเทสต์สระอำ ลำดับวรรณยุกต์ และตัวเลขเต็มความกว้างบน JDK 21

น้องกาย
นากการ์ตูนใส่ฮู้ดสีเขียวใช้กรรไกรตัดริบบิ้นลวดลายตรงช่องจุดสีเขียวพอดี โดยลูกปัดรูปเครื่องหมายเล็ก ๆ ยังติดอยู่กับแผ่นของตัวเองไม่หลุดร่วง
javatextthai

ตัดข้อความไทยใน Java ให้สระ วรรณยุกต์ และอีโมจิอยู่ครบด้วย BreakIterator

ทำพรีวิวข้อความไทยด้วย BreakIterator บน JDK 21 พร้อมเทสต์ขอบเขตตัวอักษรและอีโมจิ เพื่อใช้กับแจ้งเตือนและหัวข้อการ์ด

น้องกาย
นากการ์ตูนใส่ฮู้ดสีเขียวจัดกองเหรียญและธนบัตรเปล่าให้เป็นคอลัมน์ตรงกันบนกระดานบัญชี มีตัวคั่นรูปจุลภาคและไม้บรรทัดจัดแนวขอบขวา
pythonformattingf-string

จัดรูปแบบตัวเลข Python ให้รายงานเงินบาทอ่านง่าย พร้อมเทสต์

ใช้ format specification จัดหลักพัน ทศนิยม และคอลัมน์รายงานเงินบาทด้วย Python พร้อมตัวอย่าง Decimal และ unittest ที่รันได้ทั้งไฟล์

น้องกาย
นากการ์ตูนใส่ฮู้ดสีเขียวบรรจุตัวอักษรหลากสีลงซองปิดผนึกบนสายพานที่ต่อเป็นโซ่ลิงก์ยาว มีหมุดแผนที่และรูปชามก๋วยเตี๋ยวติดผนัง
pythonurlliburl

สร้างลิงก์ภาษาไทยด้วย urllib.parse พร้อมเทสต์กัน URL พัง

ใช้ quote, urlencode และ urlsplit สร้างลิงก์ภาษาไทยที่มีช่องว่างและอักขระพิเศษ พร้อม unittest ตรวจการอ่านค่ากลับและเติม query ลง URL เดิม

น้องกาย
นากการ์ตูนสีเขียวใส่เอี๊ยมสอดตั๋วกระดาษเจาะรูสองใบผ่านเครื่องเทียบที่มีนาฬิกาทรายใบใหญ่ ส่วนนาฬิกาจับเวลาที่มือถุงมือเงาถืออยู่ถูกกากบาทสีอำพัน
javasecuritytokens

เทียบ Java token ให้รัดกุมด้วย MessageDigest.isEqual พร้อมเทสต์และหมุนคีย์

ลดช่องข้อมูลรั่วจากการเทียบ token ด้วย MessageDigest.isEqual บน JDK 21 พร้อมแปลง hex ตรวจข้อมูลผิดรูปแบบ และรองรับ token เก่าระหว่างเปลี่ยนชุด

น้องกาย
งูการ์ตูนสีเขียวถือเช็กลิสต์ยืนที่ประตูเริ่มงานของโรงงาน กันคันโยกไว้จนกว่าช่องกุญแจบนแผงจะครบ ขณะที่เครื่องพิมพ์ปล่อยกระดาษบันทึกที่ค่าลับถูกปิดด้วยสติกเกอร์สีเขียว
pythonsecuritysecrets

Python โหลด Secret ให้ครบก่อนเริ่มงาน พร้อมปิดค่าลับใน Log

ตรวจตัวแปรสภาพแวดล้อมที่จำเป็นให้ครบก่อนเปิดบริการ ซ่อนค่าลับใน log และเตรียมรับคีย์เก่าระหว่างหมุนคีย์ พร้อม unittest ที่รันได้

น้องกาย
นากการ์ตูนใส่เอี๊ยมสีเขียวยืนวัดความสูงแก้วกาแฟกับไม้วัดระดับขนาดใหญ่ ข้างไฟสัญญาณเขียวเหลืองและแผงกั้นลายทาง บนโต๊ะไม้ในห้องสว่างที่มีต้นไม้
javaruntimeversion

เช็ก Java ตอนเริ่มระบบ ให้ JVM ผ่านระดับแพตช์ขั้นต่ำก่อนรับงาน

ใช้ Runtime.Version เทียบเวอร์ชัน Java ตามตัวเลข พร้อม helper ตรวจเกณฑ์ขั้นต่ำแยกตามรุ่น และเทสต์ที่รันได้บน Java 21

น้องกาย
งูการ์ตูนสีเขียวถือแว่นขยายส่องเครื่องจักรสีมิ้นต์ที่มีไฟหมุนสีส้มด้านบน ข้างคลิปบอร์ดรายการตรวจบนโต๊ะไม้ในห้องสว่างที่มีต้นไม้
pythonsecuritysite

ตรวจ Python startup: อ่าน .pth และหา sitecustomize ก่อนโค้ดเริ่มรัน

สร้างตัวตรวจ .pth และโมดูลปรับแต่ง startup แบบอ่านอย่างเดียว พร้อมเทสต์ เพื่อหาจุดที่ควรทบทวนในแต่ละ Python environment

น้องกาย
นากการ์ตูนสีเขียวใส่เอี๊ยมวางกล่องพัสดุข้างเครื่องพิมพ์ลายนิ้วมือ แล้วเทียบการ์ดลายนิ้วมือสองใบที่ตรงกันพร้อมเครื่องหมายถูกสีเขียว ส่วนการ์ดที่ไม่ตรงถูกแยกไว้พร้อมเครื่องหมายสีอำพัน
javasecuritysha-256

เช็ก SHA-256 ของไฟล์ดาวน์โหลดด้วย Java ก่อนเอาเข้าระบบ

ใช้ MessageDigest ตรวจ checksum ของไฟล์แบบอ่านทีละก้อน พร้อมเทสต์บน Java 21 และเข้าใจว่าค่าแฮชยืนยันอะไรได้บ้าง

น้องกาย
งูการ์ตูนสีเขียวส่องไฟฉายเข้าไปในลิ้นชักตู้เก็บบัตรใบรับรอง เทียบกับตู้สีเหลืองอีกใบฝั่งตรงข้าม มีเส้นประพาซองจดหมายลอยไปยังตู้ที่จะใช้ตรวจ
pythonssltls

Python ใช้ CA store ไหน เช็กให้ชัดก่อนแก้ TLS error

ไล่ดูแหล่งใบรับรองที่ Python ใช้ด้วย ssl พร้อมเทสต์แบบไม่ต่อเครือข่าย แยกพาธเริ่มต้นออกจากใบรับรองที่โหลดจริง เพื่อแก้ปัญหา TLS ให้ตรงจุด

น้องกาย
นากการ์ตูนสีเขียวใส่เอี๊ยมเรียงเหรียญทองและธนบัตรบนโต๊ะไม้ ข้างถาดที่มีตัวเลขไทยรูปทรงการ์ตูนและเครื่องคิดเงินสีเขียวมิ้นต์
javanumberformatlocale

แสดงเงินบาทใน Java 21 ด้วย NumberFormat พร้อมเลขไทยและเทสต์

จัดรูปแบบเงินบาทให้ตรงงานด้วย Locale ไทย กำหนดทศนิยมและการปัดเศษ พร้อมตัวอย่างเลขไทยและเทสต์ที่รันได้บน Java 21

น้องกาย
งูการ์ตูนสีเขียวยื่นหน้าดูกล่องแฟ้มสีเขียวที่บรรจุตารางเอกสาร ข้างกองกระดาษตารางที่กระจายบนโต๊ะไม้ในห้องทำงานสว่างที่มีต้นไม้
pythoncsvutf-8-sig

ส่งออก CSV ภาษาไทยให้ Excel อ่านง่ายด้วย Python utf-8-sig

เขียน CSV ภาษาไทยพร้อม BOM ด้วย utf-8-sig และจัดการบรรทัดด้วย newline='' พร้อมเทสต์ตรวจไบต์ อ่านกลับ และจับ BOM ที่ติดหัวคอลัมน์

น้องกาย
นากการ์ตูนสีมิ้นต์ยิ้มชี้ปฏิทินรายเดือนบนผนังและวางเหรียญทองไว้ที่ช่องวันทำการสุดท้ายก่อนวันหยุดซึ่งแรเงาสีเทา บนโต๊ะมีซองใส่เหรียญทอง
javajava-timetemporaladjusters

คำนวณวันเงินเดือนออกด้วย Java TemporalAdjusters พร้อมเทสต์วันสิ้นเดือน

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

น้องกาย
นากการ์ตูนสีมิ้นต์ปักหมุดป้ายตัวเลขย่อบนบอร์ดไม้ก๊อก ม้วนกระดาษตัวเลขยาวคลี่ลงบนโต๊ะ ข้างป้ายตัวเลขพลิกหน้าสามช่องสีเขียว
javacompactnumberformatnumberformat

ย่อตัวเลขบนแดชบอร์ดด้วย CompactNumberFormat ใน Java 21

แสดงยอดวิวและยอดขายเป็น 1.2K หรือคำไทยด้วย Locale พร้อมกำหนดทศนิยม การปัดเศษ และเทสต์การแปลงข้อความกลับเป็นตัวเลข

น้องกาย
งูการ์ตูนสีเขียวใช้กรรไกรตัดหัวป้ายรหัสจากม้วนกระดาษอย่างระวัง ขณะที่เครื่องทำลายเอกสารที่มีป้ายเตือนข้าง ๆ ฉีกป้ายรหัสจนขาดกระจาย
pythonstringsremoveprefix

ล้างรหัสงานด้วย Python removeprefix และ removesuffix ให้ข้อมูลไม่แหว่ง

ตัด INV- หน้าเลขคำสั่งซื้อและ .csv ท้ายชื่อไฟล์ให้ตรงจุด พร้อมเทสต์จับบั๊ก lstrip และ rstrip ที่มักเผลอลบเนื้อข้อมูลไปด้วย

น้องกาย
งูการ์ตูนสีเขียวถือห่วงพวงกุญแจที่ร้อยป้ายสิทธิ์สีฟ้ารูปหนังสือ สีเหลืองรูปดินสอ และสีเขียวรูปเครื่องหมายถูก ข้างกล่องสีส้มที่มีป้ายถังขยะสีแดงแยกไว้
pythonenumflag

จัดชุดสิทธิ์เอกสารด้วย enum.Flag ใน Python พร้อมเทสต์

รวมสิทธิ์อ่าน เขียน ลบ และอนุมัติด้วย enum.Flag แทน boolean หลายตัว พร้อมตรวจสิทธิ์ เก็บค่าลงฐานข้อมูล และทดสอบด้วย unittest

น้องกาย
นากการ์ตูนสีมิ้นต์ชั่งเหรียญบนตาชั่งทองเหลืองที่แม่นยำ ข้างม้วนกระดาษใบเสร็จ เครื่องคิดเลข และลิ้นชักที่มีเหรียญเรียงเป็นระเบียบ
javabigdecimalmoney

Java คิด VAT เป็นบาทและสตางค์ให้ตรงทุกใบเสร็จ: BigDecimal, setScale และ RoundingMode

ทำไม double กับเงินถึงเพี้ยน สร้าง BigDecimal แบบไหนถึงถูก ปัดเศษ HALF_UP กับ HALF_EVEN ต่างกันยังไง ปัดต่อบรรทัดหรือปัดที่ยอดรวม และกับดัก equals ทดสอบจริงบน JDK 21

น้องกาย
นากการ์ตูนสีมิ้นต์จัดเรียงแท่งไม้ป้ายชื่อบนชั้นวางให้เป็นระเบียบ กำลังหยิบแท่งสีอำพันที่วางผิดที่ย้ายไปไว้ตำแหน่งที่ถูกต้อง
javacollatorsorting

Java เรียงชื่อภาษาไทยให้ตรงพจนานุกรม: ทำไม Collections.sort ส่ง "เกศินี" ไปท้ายลิสต์ และ Collator แก้ยังไง

String.compareTo เรียงตามรหัส Unicode ทำให้ชื่อที่ขึ้นต้นด้วยสระหน้า เ แ โ ใ ไ ไปกองท้ายลิสต์ ใช้ java.text.Collator กับ Locale th-TH เรียงชื่อไทยให้ถูก ปรับ strength และใช้ให้ปลอดภัยกับหลายเธรด ทดสอบจริงบน JDK 21

น้องกาย
นากการ์ตูนสีมิ้นต์หมุนปุ่มทองเหลืองบนปฏิทินตั้งโต๊ะแบบวงล้อคู่ที่เชื่อมกัน ข้างแจกันดอกบัวและถ้วยชาบนโต๊ะ
javajava-timebuddhist-era

Java แสดงวันที่เป็น พ.ศ. แบบไม่ต้อง +543 เอง: ThaiBuddhistDate และกับดัก withLocale

ใช้ java.time.chrono.ThaiBuddhistDate กับ DateTimeFormatter แสดงและรับวันที่ พ.ศ. ให้ถูก พร้อมจุดที่หลายคนพลาด: withLocale ไม่เปลี่ยนปฏิทิน แต่ localizedBy เปลี่ยน ทดสอบจริงบน JDK 21

น้องกาย
นากการ์ตูนสีมิ้นต์ใช้ตรายางเติมช่องว่างบนแผ่นแม่แบบการ์ดอวยพร ข้างลิ้นชักเอกสารส่วนตัวที่ล็อกด้วยแม่กุญแจสีเขียวอมฟ้า
pythonstringtemplate

Python string.Template: ให้ผู้ใช้แก้ข้อความแจ้งเตือนเองได้ โดยไม่เปิดช่องให้ล้วงข้อมูลในอ็อบเจกต์

ทำไมไม่ควรเอาข้อความที่ผู้ใช้พิมพ์ไปเข้า str.format ตรงๆ และใช้ string.Template กับ substitute, safe_substitute, get_identifiers แทน พร้อม unittest ที่รันจริงบน Python 3.14

น้องกาย
นากการ์ตูนสีมิ้นต์ยืนหน้าแผงตะขอแขวนกุญแจทองเหลือง หยิบกุญแจที่ซ้ำกันขึ้นมาแล้วติดป้ายเตือนสีอำพัน ข้างแฟ้ม config บนโต๊ะ
pythonjsonconfig

Python json: ไฟล์ config มี key ซ้ำ ระบบไม่เตือนสักคำ จับให้ได้ด้วย object_pairs_hook

json.loads เก็บค่าตัวสุดท้ายเมื่อ key ซ้ำแบบเงียบๆ ตามที่เอกสาร Python เขียนไว้ ใช้ object_pairs_hook โยน error ตั้งแต่ตอนโหลด config พร้อม unittest ที่รันจริง

น้องกาย
นากการ์ตูนสีมิ้นต์ใส่เอี๊ยมยีนส์ถือบัตรสองใบที่เกือบเหมือนกันส่องด้วยแว่นขยาย ข้างตู้บัตรรายการห้องสมุดและกล่องแนะนำที่มีลูกศรชี้ไปยังลิ้นชักที่ตรงกัน
pythondifflibfuzzy-matching

Python difflib.get_close_matches: เดาคำที่ผู้ใช้พิมพ์ผิด แล้วถามว่า "หมายถึงอันนี้ไหม?"

ใช้ difflib.get_close_matches ในไลบรารีมาตรฐาน ทำระบบแนะนำคำเมื่อพิมพ์ชื่อจังหวัดหรือคำสั่งผิด ปรับ n และ cutoff ให้พอดี พร้อม unittest ที่รันจริงบน Python 3.14

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

Java Math.clamp: บีบค่าให้อยู่ในช่วงในบรรทัดเดียว และแปลง long เป็น int แบบไม่ล้น

เลิกเขียน Math.max(min, Math.min(max, x)) ซ้อนกัน ใช้ Math.clamp ของ Java 21 คุมค่าเปอร์เซ็นต์ หน้า และขนาดหน้า พร้อม Java assertions ที่รันจริง

น้องกาย
นากการ์ตูนสีมิ้นต์บวกเหรียญบนตาชั่งที่แม่นยำ ข้างเครื่องคิดเลขและแว่นขยายที่ส่องเศษเล็ก ๆ บนโต๊ะ กับลิ้นชักเหรียญที่จัดเรียงไว้
pythonmathfloat

Python math.fsum: บวกทศนิยมทั้งลิสต์ให้แม่น และรู้ว่าเมื่อไหร่ควรเลิกใช้ float กับเงิน

เทียบ total += x กับ sum() และ math.fsum บน Python 3.14 แบบรันจริง ดูว่าทำไมยอดรวมเพี้ยน อะไรแก้ได้ อะไรแก้ไม่ได้ พร้อม unittest

น้องกาย
นากกายวางแถบเวลาระหว่างนาฬิกาทรายกับไม้กั้นเพื่อตรวจว่าระยะเวลาไม่ยาวเกินขอบเขต
javadurationconfiguration

Java Duration.parse: รับ timeout แบบมีหน่วยโดยไม่เดาว่าเลขคืออะไร

ใช้ Duration.parse อ่านค่า ISO-8601 จาก config พร้อม Java assertions ตรวจค่าถูกต้อง รูปแบบผิด และเพดาน timeout

พี่โชว์
นากกายเลื่อนลูกปัดสีเดียวกันจากถาดข้อมูลไปยังรางนับเพื่อหาของซ้ำ
javacollectionsfrequency

Java Collections.frequency: เช็กของซ้ำก่อนรับ batch

ใช้ Collections.frequency นับค่าที่เท่ากันตาม equals พร้อม Java assertions และข้อจำกัดเมื่อข้อมูลใหญ่หรือ equality ซับซ้อน

พี่โชว์
นากกายตรวจช่องเก็บของและหยิบตะกร้าสำรองเมื่อช่องไม่มีอยู่โดยไม่สร้างช่องใหม่
javamapdefault

Java Map.getOrDefault: อ่าน fallback โดยไม่เผลอเพิ่ม key

ใช้ Map.getOrDefault สำหรับ lookup ที่ไม่แก้ map พร้อม Java assertions แยก missing key ออกจาก key ที่ map ไป null

พี่โชว์
งูต้นฉบับวางลูกบอลสองสีกองสูงเท่ากันบนแท่นอันดับหนึ่งร่วม
pythonstatisticsmode

Python statistics.multimode: รายงานอันดับหนึ่งร่วมโดยไม่ทิ้งคำตอบ

ใช้ statistics.multimode จัดการข้อมูลที่มีค่าพบบ่อยเท่ากัน พร้อม unittest สำหรับ tie, empty input และลำดับผลลัพธ์

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

Python shutil.which: หา executable ก่อนเรียก subprocess อย่างมีขอบเขต

ใช้ shutil.which กับ PATH ที่กำหนดเองและ allowlist คำสั่ง พร้อม unittest ที่สร้าง executable ชั่วคราวโดยไม่เรียก shell

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

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

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

พี่โชว์
อิกัวนาต้นฉบับตัดริบบิ้นข้อมูลตรงหมุดเดี่ยวและเก็บถาดว่างไว้ตรงตำแหน่งเดิม
zigparsermemory

Zig splitScalar: เก็บช่องว่างใน CSV เล็ก ๆ ไม่ให้ข้อมูลเลื่อน

ใช้ std.mem.splitScalar แยก field ด้วย delimiter หนึ่งไบต์โดยรักษาช่องว่าง พร้อม zig test ตรวจ missing และ extra fields

พี่โชว์
กระรอกดินต้นฉบับค่อย ๆ ดึงชิ้นข้อมูลจากริบบิ้นไบต์ผ่านช่องคัดทีละชิ้น
gobytesiterator

Go bytes.FieldsSeq: อ่าน token ทีละชิ้นโดยไม่สร้าง slice ก้อนใหญ่

ใช้ bytes.FieldsSeq เดินข้อมูลไบต์แบบ lazy หยุดได้ทันทีเมื่อได้ field ครบ พร้อม Go test ตรวจ whitespace และ early stop

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

Java Optional.orElseGet: เรียก fallback เฉพาะตอนค่าหลักหาย

เปรียบเทียบ orElseGet กับ fallback ที่มีต้นทุนหรือ side effect พร้อม Java 17 assertions ตรวจ lazy evaluation

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

Java Map.replaceAll: normalize ค่าใน map โดยรักษาชุด key เดิม

ใช้ Map.replaceAll ปรับค่าทุก entry แบบ in-place อธิบาย null, mutability และ atomicity พร้อม Java 17 assertions

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

Java removeIf: ล้างสมาชิกใน collection โดยไม่แก้ระหว่าง for-each

ใช้ Collection.removeIf ลบ record หมดอายุแบบ in-place อธิบาย mutability และ side effect พร้อม Java 17 assertions

พี่โชว์
งูต้นฉบับต่อรางเส้นทางเข้ากับสถานีสีเขียวเดิม ขณะที่รางอำพันซึ่งเลี้ยวออกนอกกำแพงถูกสกัดไว้
pythonurlliburl

Python urljoin: ต่อ URL โดยไม่เปิดทางให้ input เปลี่ยน host

ใช้ urllib.parse.urljoin พร้อมตรวจ same-origin กัน absolute URL และ scheme-relative redirect พร้อม unittest

พี่โชว์
งูต้นฉบับเทเมล็ดจากถาดหลายสีลงตาชั่งเดียว โดยมีถาดอำพันหนึ่งใบแสดงยอดที่ต้องหักคืน
pythoncollectionscounter

Python Counter.total: รวมจำนวนคงเหลือโดยยังเห็นค่าติดลบ

ใช้ collections.Counter.total คำนวณผลรวมสุทธิ อธิบายค่าศูนย์/ติดลบและการ normalize พร้อม unittest

พี่โชว์
งูต้นฉบับอ่านบัตรชนิดข้อมูลผ่านแผ่นกระจก โดยกลไกเฟืองด้านหลังยังถูกล็อกไม่ให้ทำงาน
pythonannotationlibtyping

Python annotationlib: อ่าน type hint เป็นข้อความโดยไม่ resolve ชื่อทันที

ใช้ annotationlib.get_annotations กับ Format.STRING สำหรับ tooling ที่ต้องอ่าน type hint โดยไม่ import dependency เพิ่ม พร้อม unittest

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

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

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

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

Zig tokenizeSequence: แยกข้อมูลด้วย delimiter หลายไบต์แบบไม่ตัดกลาง

ใช้ std.mem.tokenizeSequence แยก record ด้วย delimiter ทั้งชุด ข้ามช่องว่างซ้ำ และทดสอบ edge case ด้วย zig test

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

Rust Iterator::is_sorted_by_key: ตรวจลำดับโดยไม่สร้าง Vec สำรอง

ตรวจ stream ว่าเรียงตาม priority หรือไม่ด้วย is_sorted_by_key พร้อม Cargo test และข้อควรระวังเรื่อง key

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

Go maps.EqualFunc: เทียบ config คนละชนิดด้วยกติกาเดียว

ใช้ maps.EqualFunc เทียบค่าจาก config กับ API response โดยกำหนด equality ชัดเจน พร้อม Go test

พี่โชว์
นากต้นฉบับขยับแผ่นไม้หลายแถวเข้าด้านในด้วยระยะเท่ากันบนแท่นจัดแนว
javastringtext

Java String.indent: จัดย่อหน้าข้อความหลายบรรทัดโดยรู้เรื่อง line ending

ใช้ indent เพิ่มและลดช่องนำหน้าอย่างสม่ำเสมอ พร้อมอธิบาย newline normalization และ Java 17 tests

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

Java YearMonth.atEndOfMonth: ปิดรอบบิลโดยรู้ leap year

ใช้ YearMonth แทนการเดาจำนวนวัน แยกวันที่ธุรกิจจาก timezone และทดสอบ Java 17

พี่โชว์
นากต้นฉบับวางลูกบอลสิทธิ์สองถาดไม่ให้มีสีเดียวกันข้ามถาด
javacollectionspermissions

Java Collections.disjoint: ตรวจสิทธิ์สองชุดว่าไม่ทับกัน

ใช้ disjoint แสดง intent ของ overlap check พร้อม normalize input และ Java 17 assertions

พี่โชว์
งูต้นฉบับหยิบแฟ้มจากกล่องแพ็กเกจผ่านช่องทางที่กำหนด แทนการเดาตำแหน่งบนชั้น
pythonimportlibresources

Python importlib.resources.files: อ่านไฟล์ใน package โดยไม่เดา path

ใช้ Traversable API อ่าน resource ที่มากับ package รองรับ wheel/zip และทดสอบผ่าน temporary package

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

Python inspect.signature: ตรวจรูปแบบ callable โดยไม่เรียกโค้ดจริง

อ่าน parameter kind และ default เพื่อเช็ก capability ของ plugin แบบไม่ execute พร้อม unittest

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

Python calendar.monthrange: หาวันสุดท้ายของเดือนโดยไม่บวก 31 วัน

ใช้ monthrange คืน weekday และจำนวนวัน พร้อม validate timezone boundary และ leap year ด้วย unittest

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

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

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

พี่โชว์
อิกัวนาต้นฉบับวัดรางชิ้นงานก่อนเปลี่ยนก้อนสั้นเป็นก้อนยาวในถาดขนาดพอดี
zigmemorystrings

Zig std.mem.replace: คำนวณขนาดก่อนแทนข้อความโดยไม่เดา buffer

ใช้ replacementSize คู่กับ replace เพื่อจองปลายทางพอดี ตรวจจำนวนครั้ง และกัน output โตเกินเพดาน

พี่โชว์
ปูต้นฉบับหนีบตั๋วสองใบให้เดินทางเป็นคู่ ขณะที่ตั๋วเดี่ยวถูกพักไว้
rustoptionvalidation

Rust Option::zip: รวมค่าที่ต้องมาคู่กันโดยไม่ซ่อนสถานะขาดครึ่ง

ใช้ Option::zip รวม start/end ที่ต้องมีพร้อมกัน แยก missing ออกจาก invalid และทดสอบด้วย Cargo offline

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

Go strings.FieldsFuncSeq: แยก token แบบ iterator ไม่ต้องสร้าง slice ทั้งก้อน

ใช้ FieldsFuncSeq เดิน token ทีละค่า หยุดได้เร็ว และคัดลอกเฉพาะข้อมูลที่ต้องเก็บ พร้อม Go test

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

Java String.formatted: ให้ template อยู่หน้าค่าที่นำมาเติม

ใช้ String.formatted สร้างข้อความที่อ่านจากซ้ายไปขวา พร้อม Locale, validation, logging และข้อห้ามนำ user input มาเป็น format string

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

Java Arrays.mismatch: หา index แรกที่ข้อมูลสองชุดต่างกัน

ใช้ Arrays.mismatch ทำ diff checkpoint และ binary payload พร้อมตีความ -1, ความยาวต่าง และช่วงย่อยให้ถูก

พี่โชว์
นากต้นฉบับใช้แผ่นวัดสีอำพันตรวจลิ้นชักบนรางก่อนดึงออกจากขอบเขต
javabounds-checkstdlib

Java Objects.checkIndex: ตรวจ index ก่อนแตะ array และ ByteBuffer

ใช้ Objects.checkIndex รวม boundary check แบบ fail-fast พร้อมแยก index จาก from-to range และแปลง exception ที่ API boundary

พี่โชว์
งูสีเขียวต้นฉบับวางริบบิ้นปิดผนึกยาวเท่ากันบนตาชั่งสองแขนใต้โคมเดียวกัน
pythonsecurityhmac

Python secrets.compare_digest: เทียบลายเซ็นโดยลด timing leak

ตรวจ webhook MAC ด้วย compare_digest หลัง decode และ validate format พร้อมแยก constant-time comparison ออกจากการคำนวณ HMAC และ replay protection

พี่โชว์
งูสีเขียวต้นฉบับถือการ์ดสีอำพันไว้เหนือช่องว่างของชั้นการ์ดที่เรียงตามระดับสี
pythonbisectalgorithms

Python bisect กับ key: แทรก record ลงลิสต์เรียงโดยไม่สร้าง key list ใหม่

ใช้ bisect_left และ insort_right กับ key function ให้ถูก โดยแยกค่าที่ค้นจาก record ที่แทรก พร้อม trade-off ของ O(log n) search กับ O(n) insertion

พี่โชว์
งูสีเขียวต้นฉบับเลื้อยเชื่อมแผ่นปฏิทินไร้ตัวเลขกับนาฬิกาและป้ายเขตเวลาอย่างเป็นระเบียบ
pythondatetimetimezone

Python datetime.fromisoformat: รับเวลา ISO 8601 โดยไม่ลืม timezone

parse timestamp ด้วย fromisoformat พร้อมบังคับ timezone, normalize เป็น UTC และทดสอบ Z, offset, naive datetime กับเวลาที่ไม่ถูกต้อง

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

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

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

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

Zig std.mem.tokenizeAny: แยกคำเมื่อ delimiter มีหลายตัว

ใช้ tokenizeAny แยกข้อความด้วยช่องว่าง comma slash หรือ pipe โดยไม่คืน token ว่าง พร้อมเทียบ tokenizeScalar และ splitAny

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

Rust slice::split_off: หยิบช่วงออกจากมุมมองโดยไม่ allocate

ใช้ split_off กับ &mut &[T] เพื่อเลื่อน cursor ของ slice อย่างปลอดภัย พร้อมแยกจาก Vec::split_off และจัดการ out-of-bounds

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

Go maps.DeleteFunc: ล้างสมาชิกที่ไม่ผ่านเงื่อนไขใน map เดิม

ใช้ maps.DeleteFunc ลบ cache ที่หมดอายุหรือค่าที่ไม่ผ่าน policy พร้อมระวัง nil map, side effect และการแก้ map ระหว่าง callback

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

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

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

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

พี่โชว์
งูต้นฉบับผูกเชือกสำรองจากกล่องทรัพยากรไปยังคันปล่อยอัตโนมัติบนโต๊ะสว่าง
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

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

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

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

พี่โชว์
นากมิ้นต์ต้นฉบับป้อนริบบิ้นครีมผ่านกล่องแปลงสีเขียวสองขั้นจนออกมาเรียบร้อย
javastringtransform

Java String.transform: ตั้งชื่อ pipeline แปลงข้อความแทนการซ้อนเมธอด

ใช้ String.transform ส่งข้อความเข้า Function ที่ตั้งชื่อได้ พร้อมทดสอบการ normalize และ validation บน Java 17

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

Python dataclasses.astuple: แปลงเป็น tuple พร้อมรู้ต้นทุน deep copy

ใช้ dataclasses.astuple ที่ boundary และทดสอบว่าข้อมูลซ้อนถูกคัดลอก ไม่แชร์ list กับต้นฉบับ

พี่โชว์
งูต้นฉบับดึงเชือกเส้นเดียวให้ฝาครอบ ประตู และวาล์วปิดย้อนลำดับ
pythonasynciocontextlib

Python AsyncExitStack: รวม cleanup แบบ sync และ async ไว้ในจุดเดียว

จัดการ resource ที่เปิดตามเงื่อนไขด้วย contextlib.AsyncExitStack และยืนยันลำดับปิดย้อนกลับด้วย unittest

พี่โชว์
งูต้นฉบับจับคู่ตุ้มน้ำหนักสองแถวแล้วส่งผลคูณไปสะสมในชามเดียว
pythonmathsumprod

Python math.sumprod: คูณเป็นคู่แล้วรวมอย่างอ่านตรงโจทย์

ใช้ math.sumprod ทำ dot product และ weighted total พร้อมตรวจความยาว input และชนิดตัวเลข

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

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

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

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

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

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

น้องกาย
นากมิ้นต์ต้นฉบับแปะป้ายชื่อบนกล่องไม้เล็กๆ บนโต๊ะมิ้นต์ แทนการสร้างชั้นวางทั้งหลัง
pythontypessimplenamespace

Python SimpleNamespace: ทำวัตถุ attribute เร็วๆ โดยไม่ต้องเขียนคลาส

ใช้ types.SimpleNamespace เก็บค่าแบบจุดเข้าถึงด้วยชื่อ พร้อมเทียบกับ dict และทดสอบการอัปเดต attribute

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

Python atexit: จองคิวเก็บกวาดก่อนโปรเซสจบ

ลงทะเบียนฟังก์ชันด้วย atexit.register ให้รันตอน interpreter ปกติจะจบ พร้อมทดสอบลำดับ LIFO และกรณีที่ handler ไม่ถูกเรียก

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

Python enum.auto: ให้เลขสมาชิกเอง ไม่ต้องไล่พิมพ์เอง

ใช้ enum.auto() ไล่ค่าอัตโนมัติใน IntEnum/Enum พร้อมทดสอบว่าลำดับประกาศคือลำดับตัวเลข และกันสับสนตอนแทรกสมาชิกใหม่

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

Jev Workshop #2: คัดแยกแชทลูกค้าด้วยความน่าจะเป็น และรู้ว่าเมื่อไหร่ต้องส่งให้คน

เอาข้อความลูกค้าภาษาไทย 16 ข้อความที่ติดป้ายเองมาวัดว่า Jev คัดแยกถูกแค่ไหน ตั้งเกณฑ์ความน่าจะเป็นต่อ action เขียนเทสแบบไม่ต้องต่อเน็ตด้วย mock evaluation model และเทียบกับ LLM classifier ตัวเดิม

น้องกาย
งูขดตัวต้นฉบับกำลังจัดลูกปัดหน้าตาคล้ายกันจากคนละชุดให้เข้ารางมาตรฐานเดียวบนโต๊ะสีมิ้นต์
pythonunicodenormalization

Python unicodedata.normalize: เทียบข้อความให้ตรงโลก Unicode

เลือก NFC/NFKC ก่อนเทียบ identifier พร้อมอธิบายว่าการ normalize ไม่ใช่ระบบป้องกันชื่อหลอกทั้งหมด

พี่โชว์
งูขดตัวต้นฉบับกำลังเบนกรวยเสียงจากลำโพงเก่าเข้าสมุดบันทึกบนโต๊ะสว่าง
pythoncontextlibtesting

Python redirect_stdout: จับ output ของโค้ดเก่าไว้ทดสอบ

ใช้ contextlib.redirect_stdout ครอบฟังก์ชันที่ print โดยไม่แก้ global state นานเกิน scope

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

Python memoryview.cast: เปลี่ยนมุมมอง bytes โดยไม่ copy

อ่านบัฟเฟอร์เดิมเป็นสมาชิกชนิดใหม่ด้วย memoryview.cast พร้อมตรวจ alignment เชิงรูปแบบและ byte order

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

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

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

พี่โชว์
อิกัวนาต้นฉบับกำลังวางชิ้นส่วนคนละรูปทรงบนตาชั่งที่ชี้ค่าน้ำหนักเท่ากัน
zigreleasetypes

Zig 0.16 เทียบ packed union ตาม backing integer: สะดวกแต่ต้องอ่าน representation

ทดลอง equality ของ packed union และอธิบายว่าทำไม field คนละชื่ออาจเท่ากันได้

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

Java RandomGenerator: เปลี่ยนอัลกอริทึมสุ่มโดยไม่ผูก Business Logic กับ Random

ใช้ RandomGenerator และ RandomGeneratorFactory บน Java 17 เลือกกลยุทธ์ สร้าง seed ทำซ้ำได้ และไม่เผลอใช้ PRNG กับ secret

พี่โชว์
งูต้นฉบับชั่งเหรียญบนตาชั่งภายในกรอบทดลองชั่วคราว โดยกฎด้านนอกยังอยู่ที่เดิม
pythondecimalmoney

Python decimal.localcontext: ล็อกกฎปัดเศษเฉพาะงาน ไม่ทำ Context รั่วทั้งโปรแกรม

ใช้ decimal.localcontext จำกัด precision และ ROUND_HALF_UP ในขอบเขตสั้น พร้อม unittest ตรวจว่า global context ไม่ถูกเปลี่ยน

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

Python itertools.compress: ให้ boolean mask กับข้อมูลเดินพร้อมกันแบบ lazy

คัดสมาชิกด้วย itertools.compress พร้อมรับมือ selector สั้นยาวไม่เท่ากัน และแยกกรณีที่ควร validate ก่อน

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

Python partialmethod: สร้างเมธอดเฉพาะทางโดยยังผูก self ถูกตำแหน่ง

ใช้ functools.partialmethod ลด wrapper ซ้ำใน class พร้อม unittest และข้อควรระวังเรื่อง signature กับ descriptor

พี่โชว์
อีกัวน่าต้นฉบับคัดริบบิ้นข้อมูลตรงหมุดคู่สีส้ม โดยเก็บถาดว่างไว้เมื่อหมุดสองคู่ติดกัน
zigparsingstandard-library

Zig splitSequence: แยก delimiter หลายไบต์โดยยังเห็นช่องว่างระหว่างคู่ติดกัน

ใช้ std.mem.splitSequence ทำ parser รูปแบบเล็ก ๆ พร้อมเข้าใจ empty field, lifetime และความต่างจาก splitAny

พี่โชว์
นากกายต้นฉบับกำลังเปิดบานแยกรางให้ลูกแก้วบางลูกผ่านออกมาหลายลูกและบางช่องไม่ปล่อยอะไร
javastreamsjava-17

Java Stream.mapMulti: คืนศูนย์หรือหลายผลลัพธ์โดยไม่สร้าง Stream ย่อยทุกครั้ง

ใช้ mapMulti แทน flatMap เมื่อแต่ละ input อาจไม่คืนค่า หรือคืนหลายค่า พร้อมตัวอย่าง Java 17 ที่รัน assertions จริง

พี่โชว์
งูสีเขียวต้นฉบับกำลังเสียบชิ้นไม้สองชิ้นลงช่องว่างกลางแม่แบบสีครีม
pythonfunctoolspython-3.14

Python 3.14 functools.Placeholder: partial ช่องกลางได้โดยไม่เขียน lambda ห่อ

ใช้ Placeholder จอง positional argument ตรงกลางของ partial พร้อมข้อจำกัดเรื่องจำนวนช่องและ keyword arguments

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

Python itertools.accumulate: เก็บสถานะสะสมโดยไม่สร้างลูปข้างเคียง

ใช้ accumulate ทำ running total และ state transition พร้อม initial value ที่ช่วยให้ขอบเขตข้อมูลอ่านง่าย

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

Python nullcontext: ทำให้เส้นทางมีและไม่มี context manager ใช้โครงเดียวกัน

ใช้ contextlib.nullcontext ลด if ซ้ำรอบ with สำหรับ resource ที่ผู้เรียกอาจส่งมาให้แล้ว พร้อม unittest

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

Go context.AfterFunc: ผูก cleanup กับการยกเลิกโดยไม่ทิ้ง goroutine รอ

ใช้ context.AfterFunc ปลุกงาน cleanup เมื่อ context ถูกยกเลิก พร้อมเข้าใจ race ของ stop และการรอ callback ให้จบ

พี่โชว์
นากกายต้นฉบับรวมถั่วจากบัตร key ซ้ำสองใบลงในช่องเดียวบนกระดานมิ้นต์
javastreamscollectors

Java Collectors.toMap: กำหนดชะตา key ซ้ำก่อน pipeline พังกลางทาง

ใช้ merge function ของ Collectors.toMap รวมข้อมูล key ซ้ำอย่างตั้งใจ พร้อมแยกกรณี sum, keep-first และข้อมูลผิด schema

พี่โชว์
งูต้นฉบับครอบหยดน้ำเล็กหนึ่งหยดด้วยถ้วยแก้ว ขณะที่สัญญาณผิดปกติสีอำพันยังผ่านออกด้านข้าง
pythoncontextlibexceptions

Python contextlib.suppress: กลืนเฉพาะ error ที่ขั้นตอนนั้นยอมรับได้

ใช้ contextlib.suppress กับ cleanup แบบ best effort โดยจำกัด exception ให้แคบและทดสอบว่า error อื่นยังหลุดออกมา

พี่โชว์
ปูต้นฉบับคัดเมล็ดสีเขียวจากสายพานจนถึงเมล็ดอำพันที่เป็นเส้นหยุด
rustiteratorparsing

Rust map_while: แปลงข้อมูลจนเจอเส้นแบ่ง แล้วหยุดอย่างมีขอบเขต

ใช้ Iterator::map_while อ่าน prefix ที่แปลงได้ พร้อมอธิบายว่า item ที่ทำให้หยุดถูก consume และ iterator ไม่ fused

พี่โชว์
กระรอกดินต้นฉบับหมุนกุญแจอำพันเพียงครั้งเดียวเพื่อเปิดลิ้นชักค่าคอนฟิกให้รางงานหลายราง
goconcurrencysync

Go sync.OnceValue: โหลดค่าครั้งเดียวโดยไม่เปิดช่องให้ cache แข่งกัน

ใช้ sync.OnceValue ทำ lazy initialization ที่ปลอดภัยระหว่าง goroutine พร้อมข้อจำกัดเรื่อง panic และค่าที่ต้อง refresh

พี่โชว์
ห้องทดสอบมืดมีเครื่องจักรเก่าและใหม่ต่อกับเกจค่าคู่กัน โดยเข็มหนึ่งคลาดออกจากแนวสีอำพันเล็กน้อย
aiagentslegacy-code

Mistral ย้าย Fortran 77 สู่ C++ 40,000 บรรทัด: Parity Harness มาก่อน Agent

บทเรียนจากงาน modernization จริงที่เริ่มด้วย numerical checkpoints, caller-callee tree และ human review แทนการปล่อย agent แปลทีละฟังก์ชัน

พี่โชว์
กระรอกดินต้นฉบับจัดกล่องแฟ้มสีมิ้นต์บนแผนผังต้นไม้ไฟล์จำลอง
gotestingfilesystem

Go testing/fstest.MapFS: เทสต์สัญญาไฟล์โดยไม่ต้องสร้าง temp directory

ใช้ MapFS จำลองต้นไม้ไฟล์แบบเล็กและ deterministic พร้อมข้อจำกัดที่ต้องรู้ก่อนแชร์ข้าม goroutine

พี่โชว์
มาสคอตแก้วกาแฟต้นฉบับกำกับนักวิ่งหลายคนผ่านประตูเป็นช่วง โดยมีคนหนึ่งออกและอีกคนเข้าร่วมกลางทาง
javaconcurrencyphaser

Java Phaser: Barrier ที่เพิ่ม–ลด Worker ระหว่างทางได้

ใช้ Phaser ประสานงานหลายช่วงเมื่อจำนวน participant เปลี่ยนได้ พร้อมทดสอบ phase advance และ deregistration ด้วย Java 17

พี่โชว์
งูสีเขียวต้นฉบับกำลังปิดประตูรับกล่องเข้าราง แต่ปล่อยกล่องที่ค้างอยู่ไหลถึงปลายสายพาน
pythonasyncioconcurrency

asyncio.Queue.shutdown: ปิดสายพานงานโดยไม่ส่ง Sentinel

ใช้ shutdown และ QueueShutDown แยกการปิดรับงานออกจากการประมวลผลงานค้าง พร้อมทดสอบ graceful shutdown จริง

พี่โชว์
ปูสีส้มต้นฉบับยกตะกร้าข้อมูลเต็มออกจากช่องยืม แล้ววางตะกร้าเปล่าแทนบนโต๊ะสีมิ้นต์
rustownershipstate-machine

Rust std::mem::take: ย้ายค่าออกจาก Borrow โดยไม่ Clone

ใช้ mem::take เปลี่ยน field เป็นค่า Default แล้วรับ ownership ของค่าเดิม เหมาะกับ state machine และ batch drain ที่ไม่อยากคัดลอก

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

Java Files.mismatch: หาตำแหน่งต่างแรกก่อนเปิด diff ใหญ่

เปรียบเทียบไฟล์แบบคืน byte offset แรกที่ต่าง พร้อมจัดการไฟล์เท่ากัน prefix และ TOCTOU ในระบบจริง

พี่โชว์
นากสีมิ้นต์ต้นฉบับกำลังใส่กล่องใบใหม่ลงช่องว่างในตู้ลิ้นชักสีเขียวอ่อน
javacollectionsmap

Java computeIfAbsent: สร้างค่าตอนจำเป็นโดยไม่ซ่อน side effect

ใช้ Map.computeIfAbsent สำหรับ grouping และ lazy cache พร้อมข้อควรระวัง null การแก้ map ซ้อน และ concurrency

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

Java Collectors.teeing: สรุปสองค่าใน stream pass เดียว

ใช้ teeing จับคู่ collector สองตัวโดยไม่ traverse stream ซ้ำ พร้อม trade-off ด้าน readability และ parallel reduction

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

Python ChainMap: ซ้อน config หลายชั้นโดยไม่รีบ copy

จัดลำดับ CLI environment และ defaults ด้วย ChainMap พร้อมทดสอบ precedence การเขียน และผลจาก mapping ต้นทาง

พี่โชว์
นากกายถือคลิปบอร์ดนาฬิกาทรายข้างกล่องของขวัญรุ่นทดลอง Python บนโต๊ะมิ้นต์
pythoncpythontesting

Python 3.15: โอกาสสุดท้ายช่วยเทสต์ก่อนไฟนอล 1 ต.ค.

สรุปคำเรียกจาก Hugo van Kemenade ให้เมนเทนเนอร์เทสต์ 3.15.0rc2 และเตรียมล้อรถก่อน GA วันที่ 1 ตุลาคม 2026

น้องกาย
นาฬิกาทรายบนโต๊ะมิ้นต์มีลูกศรยกเลิกงาน async ที่ยาวเกินและนากกายกดปุ่มหยุด
pythonasynciotimeout

asyncio.timeout: ใส่กรอบเวลาให้งาน async โดยไม่กลืน CancelledError

ใช้ asyncio.timeout เป็น context manager จำกัดเวลารอ พร้อม unittest.IsolatedAsyncioTestCase ที่พิสูจน์ทั้งสำเร็จและ TimeoutError

น้องกาย
ล้อแพ็กเกจและปฏิทินบนโต๊ะมิ้นต์มีนากกายยืนดูจุดทดสอบก่อนวันปล่อย
pythonreleasepackaging

Python 3.15.0rc2: ทดสอบ wheel ก่อน GA 1 ต.ค. ตาม PEP 790

RC2 เป็นตัวสมัครสุดท้ายก่อน 3.15.0 วันที่ 1 ตุลาคม 2026 พร้อมเช็กลิสต์ผู้ดูแลแพ็กเกจจาก blog.python.org

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

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

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

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

Python singledispatch: แยกพฤติกรรมตามชนิดโดยไม่สร้าง if ยาว

ใช้ functools.singledispatch ทำจุดเข้าเดียวที่ขยาย handler ตามชนิด พร้อม unittest ของ fallback และ subclass

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

Python itertools.batched แบบ strict: จับข้อมูลชุดสุดท้ายที่มาไม่ครบ

แบ่ง iterable เป็นก้อนแบบ lazy และใช้ strict=True เมื่อต้องการให้จำนวนข้อมูลหารขนาด batch ลงตัว พร้อม unittest

พี่โชว์
งูสีมิ้นต์ต้นฉบับกำลังเปลี่ยนชิ้นส่วนเดียวบนการ์ดวัตถุ ขณะที่การ์ดต้นฉบับยังสมบูรณ์
pythondataclassesimmutability

Python copy.replace: อัปเดต Value Object โดยไม่แก้ของเดิม

ใช้ copy.replace กับ dataclass แบบ frozen เพื่อสร้างสถานะใหม่เฉพาะฟิลด์ พร้อมตรวจ invariant ด้วย unittest

พี่โชว์
นากกายต้นฉบับกำลังปิดวาล์วทรัพยากรสามตัวจากขวาไปซ้ายบนโต๊ะทำงานสว่าง
javaopenjdkresource-management

Java Try-with-resources: ปิด Resource ย้อนลำดับแม้กลางทางมี Exception

ใช้ AutoCloseable และ try-with-resources ใน Java 17 เพื่อรับประกัน cleanup พร้อม assertions ของลำดับปิด

พี่โชว์
นากกายต้นฉบับกำลังโยกคันสับรางให้ลูกบอลหนึ่งลูกไปยังถาดผลลัพธ์ที่ถูกต้อง
javaopenjdklanguage

Java Switch Expressions: ให้ทุกเส้นทางคืนค่าและหยุด Fall-through โดยไม่ตั้งใจ

ใช้ switch expression และ yield ใน Java 17 เพื่อทำ mapping ให้ครบทุกกรณี พร้อม self-contained assertions

พี่โชว์
นากกายต้นฉบับกำลังส่องโคมไปที่ข้อโซ่ที่ว่างกลางสายวัตถุบนโต๊ะสว่าง
javaopenjdkdebugging

Java Helpful NullPointerExceptions: อ่าน Chain ที่ขาดให้เจอจุด null เร็วขึ้น

ใช้ข้อความ NPE ที่ละเอียดขึ้นใน Java 17 ควบคู่กับการลด method chain และเพิ่ม boundary checks

พี่โชว์
กระรอกดินสีฟ้าอมเขียวต้นฉบับกำลังใช้ไม้บรรทัดวัดชั้นบล็อกไลบรารีบนโต๊ะสว่าง
gogolangtesting

Go 1.27 ให้ go test จับ API ใหม่เกิน go.mod ด้วย stdversion

ใช้ stdversion vet check ที่มากับ go test เพื่อกันการเผลอเรียก standard library ใหม่กว่าสัญญาเวอร์ชันของโมดูล

พี่โชว์
งูสีมิ้นต์ต้นฉบับโอบงานสามชิ้นไว้ใต้ร่มเดียวกันบนโต๊ะสว่าง
pythonasyncioconcurrency

Python asyncio.TaskGroup: ให้งานพี่น้องล้มและยกเลิกเป็นกลุ่ม

ใช้ structured concurrency ใน Python เพื่อไม่ทิ้ง background task ค้าง พร้อม unittest ที่ทดสอบทั้งสำเร็จและ fail-fast

น้องกาย
งูสีมิ้นต์ต้นฉบับเดินตามทางสีครีมผ่านต้นไม้แตกแขนง โดยตัดกิ่งสีอำพันที่ไม่ต้องสำรวจ
pythonpathlibfilesystem

Python Path.walk: เดินโฟลเดอร์แบบ prune ได้และไม่ตาม symlink โดยปริยาย

ใช้ pathlib.Path.walk ค้นไฟล์อย่างอ่านง่าย พร้อมตัด subtree และทดสอบด้วย temporary directory

น้องกาย
งูสีมิ้นต์ต้นฉบับเลื้ออมระหว่างประตูทรัพยากรสองบานและลูกศรปิดย้อนลำดับ
pythoncontextlibresource-management

Python ExitStack: จัดการ resource จำนวนไม่แน่นอนให้ปิดย้อนลำดับ

รวม context manager และ callback แบบ dynamic ด้วย ExitStack พร้อม unittest ที่พิสูจน์ลำดับ cleanup

น้องกาย
ภาพวาดกระรอกดินสีฟ้าอมเขียวต้นฉบับหมุนนาฬิกาทรายข้างเครือข่ายจำลองที่ปิดอยู่ในขวดแก้วบนโต๊ะสว่าง
gogolangtesting

Workshop Go 1.27: ทดสอบ HTTP ช้าในเวลาจำลอง ไม่ต้องรอจริง

ใช้ httptest.NewTestServer ร่วมกับ testing/synctest สร้างเครือข่ายใน memory และข้ามเวลา 10 วินาทีใน test ที่รันจริง

น้องกาย
ภาพวาดกระรอกดินสีเขียวอมฟ้ากำลังย้ายกล่องข้อมูลข้ามสะพานสามช่วงจากประตูเก่าไปสู่ด่านตรวจใหม่
gogolangjson

Workshop: ย้าย API จาก encoding/json v1 ไป v2 โดยไม่เปลี่ยนสัญญาแบบไม่รู้ตัว

เวิร์กช็อป Go 1.27 แบบลงมือจริง สร้าง characterization tests เปิดโหมดเข้ากันได้ แล้วค่อยเพิ่ม strict contract พร้อมคำสั่ง go test ที่ตรวจแล้ว

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

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

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

พี่โชว์