Nomkhonwaan

Trust me I'm Petdo

Advent of Code 2018 Day 5 - Alchemical Reduction

#advent-of-code#rust

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

Read More

Advent of Code 2022 Day 1 - Calorie Counting

#advent-of-code#rust

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

Read More

Advent of Code 2018 Day 4 - Repose Record

#advent-of-code#rust

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

Read More

Generics ใน Go

#go

Generics เป็นหนึ่งในฟีเจอร์ที่นักพัฒนาเรียกร้องกันมา ตั้งแต่เปิดตัวภาษา และ เริ่มพัฒนาจริง ๆ ตอนปี 2019 ในที่สุดก็ปล่อยออกมาให้ใช้งานกันแล้วที่เวอร์ชัน 1.18 มาลองดูกันว่าสามารถทำอะไรได้บ้าง

Read More

Coin Change และ Dynamic Programming

#leetcode#dynamic-programming

เรื่องมีอยู่ว่าได้ลองทำโจทย์ Coin Change ทีแรกคิดว่าไม่น่ายากแต่พอส่งคำตอบกลับติดอยู่ที่ [186, 419, 83, 408] จะทำอย่างไรให้ใช้เหรียญที่น้อยที่สุดเพื่อแทนค่า 6249?

Read More

Advent of Code 2018 Day 3 - No Matter How You Slice it

#advent-of-code#rust

ในที่สุดบรรดาเอลฟ์ก็สามารถสร้างตัวอย่างชุดซานต้าต่อได้ (ต้องขอบคุณใครบางคนที่เขียนหมายเลขกล่องที่ถูกต้องไว้บนกำแพงเมื่อคืน) แต่เรื่องราวยังคงไม่จบพวกเขาเถียงกันว่าจะตัดผ้าอย่างไรดี

Read More

Advent of Code 2018 Day 2 - Inventory Management System

#advent-of-code#rust

ในวันที่สองตัวเราหยุดการเดินทางผ่านกาลเวลาแล้ว หลังจากพักหายใจสักครู่ก็ก้มมองดูเจ้าอุปกรณ์ที่อยู่บนข้อมือที่ได้รับมา ที่หน้าจอแสดงข้อความว่าถึงที่หมายปลายทางแล้วพร้อมกับแจ้งปี ค.ศ. 1518 และสถานที่ปัจจุบันคือ​ ตู้เอนกประสงค์แห่งสำนักงานขั้วโลกเหนือหมายเลข 83N10

Read More

คั้งค่าคีย์ลัด iTerm2

#iterm2

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

Read More

Advent of Code 2018 Day 1 - Chronal Calibration

#advent-of-code#rust

เห็นบล็อก Advent of Code 2018 ณ ตอนปี 2022 อาจจะเผลอคิดในใจกันว่าช้าไปหรือเปล่า (ฮา) บังเอิญได้มีโอกาสอ่านบล็อก Learning Rust in 2020 และมีการพูดถึง Advent of Code 2018 ว่าเป็นจุดเริ่มต้นที่ดีสำหรับใช้เรียนรู้ภาษา Rust

Read More

Go SOLID - Interface Segregation Principle

#go#solid

บล็อกนี้เล่าถึงหลักการ Interface Segreagation Principle (ISP) หนึ่งในหลักการของ SOLID ที่กล่าวไว้โดย Robert C. Martin หรือ Uncle Bob ในบทความที่ตอบจดหมายเอาไว้ดังนี้

Read More

Go SOLID - Single Responsiblity Principle

#go#solid

บล็อกนี้เล่าถึงหลักการ Single Responsibility Principle (SRP) หนึ่งในหลักการของ SOLID ที่กล่าวไว้โดย Robert C. Martin หรือ Uncle Bob ในหนังสือเรื่อง Agile Software Development, Principles, Patterns, and Practices สรุปใจความสั้น ๆ ได้ว่า "คลาสควรจะมีเพียงเหตุผลเดียวที่ทำให้ต้องแก้ไข"

Read More

Go SOLID - Open-closed Principle

#go#solid

บล็อกนี้เล่าถึงหลักการ Open-closed หนึ่งในหลักการของ SOLID ที่กล่าวไว้โดย Bertrand Meyer ในหนังสือเรื่อง Object Oriented Sofrware Construction แปลได้ใจความว่า "เอนทิตี้ใด ๆ ในซอฟต์แวร์เช่นคลาส, โมดูล, ฟังก์ชัน ควรเปิดเพื่อให้ต่อยอดได้ (extension) แต่ปิดเพื่อป้องกันไม่ให้แก้ไข (modification)"

Read More

Repository Pattern ใน Go

#go

ภาษากลุ่มที่เป็น Object-oriented Programming (OOP) จะพบรูปแบบการใช้งาน Repository Pattern เป็นปกติ ข้อดีของรูปแบบนี้คือการแยกส่วนของประมวลผล (Business Logic Layer: BLL) ออกจากส่วนของการติดต่อกับข้อมูล (Data Access Lager: DAL) ซึ่งสอดคล้องกับหลักการเขียนโปรแกรมที่ดีคือ Low Coupling, High Cohesion

Read More

Channel กับการสื่อสารระหว่าง Goroutines

#go#goroutines

Go มี built-in concurrency ที่เรียกว่า Goroutines การทำงานคล้ายกับ Thread ที่อยู่ใน Java แต่มีขนาดเล็กและเบากว่า ซึ่ง Go เคลมว่าสามารถรันได้ถึงหนึ่งแสน Goroutines

Read More

TDD Kata 2 - The Bowling Game

#tdd#kata#go

กลับมาพบกันอีกครั้งกับ TDD Kata โจทย์ในวันนี้คือ The Bowling Game Kata รายละเอียดของโจทย์จะอยู่ในสไลด์ที่อยู่ในบทความอีกที ถ้าพร้อมแล้วไปลุยกันดีกว่า

Read More

TDD Kata 1 - String Calculator

#tdd#kata#go

ในการเขียนโปรแกรมมีแนวคิดนึงที่ยึดหลักการเขียนเทสก่อนลงมืออิมพลิเมนต์ฟังก์ชันจริงหรือที่เรียกว่า Test-driven development (TDD) หลักการคือเริ่มต้นด้วยการเขียนเทส, รันแล้วพัง, แก้ไขโปรแกรม, รันแล้วผ่าน วนอยู่แบบนี้

Read More