go doc เพื่อแสดง source ทั้งหมดของ package
JavaScript/TypeScript Sync an Async with Promise
เราใช้ Promise และ async/await syntax ช่วยจัดการร้อยเรียงโค้ดที่จะทำงานหลังจากมีการเรียกใช้ asynchronous function ต่างๆ แต่ส่วนใหญ่เรามักจะ await หรือ then กันทันทีตรงจุดที่เราเรียกใช้งาน async function แต่จริงๆแล้วเราสามารถเรียกแบบ ไม่มี await แล้วเอา Promise object ไป await หรือ then ทีหลังได้
Go: วิธีเขียน http handler ให้รู้ว่า request ถูก cancel ไปแล้ว
net/http (หรือ gin) handler จะมีจะรับ request type เข้ามาคือ type *http.Request ซึ่งในนี้จะมีตัวแปร context ของ request ที่เราสามารถใช้เช็คได้ว่า request ถูก cancel ไปแล้วหรือยัง
Go: ใช้ method เป็นค่าของ function
ใน Go function เป็น value แบบนึง ที่เราสามารถส่งไปให้ function อื่นๆ ได้ และเราสามารถเก็บ function ไว้ในตัวแปรได้ เช่น ที่เราใช้กันบ่อยๆก็คือตอนที่เราเขียน HTTP handler
สรุป นิยามของ Software Engineering จาก Titus Winters และ Russ Cox
นิยามของ Software Engineering โดย Titus Winters บอกไว้ว่า
“Software Engineering is Programming integrated over time”
ส่วนบทความของ Russ cox “What is Software Engineering?” ซึ่งก็ยกนิยามของ Software Engineering ของ Titus Winters มาขยายความต่อไปอีกว่า
“Software engineering is what happens to programming when you add time and other programmers”
สรุป How to build simple systems จากการพูดของ Rich Hickey เรื่อง Simple Made Easy
ได้กลับไปฟังและอ่าน Notes จากการพูดของ Rich Hickey เรื่อง Simple Made Easy อีกครั้ง ชอบในส่วนของท้ายๆที่พูดถึงวิธีการสร้างระบบที่ simple ขอสรุปตามที่ตัวเองเข้าใจไว้สักหน่อยดังนี้
สรุปจากเรื่อง Livable Code ของ Sarah Mei จากงาน RailsConf 2018
เคยเขียนสรุปสิ่งที่เข้าใจและได้จากการฟังคลิปเรื่อง Livable Code เอาไว้แล้วรอบนึงที่เพจ DevDose ขอยกมาเก็บไว้ใน blog ด้วยจะได้อีกที เป็น session ที่ชอบมากๆหนึ่ง session
[CMake] config Cmake เพื่อ build C/C++ เบื้องต้น
CMake เป็น build tool นึงเพื่อช่วยให้เราเซตโปรเจ็ค C/C++ ให้ build binary ออกมาได้ง่ายๆ เพราะ C/C++ เวลาจะ build มีทั้งต้องกำหนด include ตอน compile ทั้งต้องกำหนด library อื่นๆที่เกี่ยวข้องก่อน linking ดังนั้นใช้ CMake ก็จะช่วยจัดการพวกนี้ได้ง่ายขึ้น
[Go] ใช้ bytes.Buffer เป็น io.Writer เพื่อเก็บ output ใน memory ก่อนแปลงเป็น string หรือ []byte
มีฟังก์ชันการทำงานหลายตัวที่รับค่าเป็น interface io.Writer
เพื่อเขียน output ออกไป ซึ่งช่วยให้คนใช้งานเลือกได้ว่าจะเขียน output การทำงานออกไปทางไหนก็ได้ตามต้องการขอแค่การทำงานนั้นถูก implements ด้วย interface io.Writter
ที่มี method Write([]byte) (int, error)
อยู่ และ bytes.Buffer
ก็เป็นหนึ่งใน io.Writer
ที่ช่วยให้เราเอาผลลัพธ์การทำงานมาเก็บไว้ใน memory ก่อนแล้วค่อยเอาค่าไปใช้ต่อได้เช่นแปลงเป็น string
แปลงเป็น []byte
หรือแม้แต่ส่งไปให้ฟังก์ชันที่ต้องการ io.Reader
เพราะ bytes.Buffer
ก็ implement interface io.Reader
ไว้เช่นกัน