signal.Notify vs singal.NotifyContext
ใน package signal จะมี 2 ฟังก์ชันที่ใช้ในการรับค่า interrupt จาก OS คือ Notify และ NotifyContext สองฟังก์ชันนี้ต่างกันยังไงบ้าง สรุปได้ดังนี้
ใน package signal จะมี 2 ฟังก์ชันที่ใช้ในการรับค่า interrupt จาก OS คือ Notify และ NotifyContext สองฟังก์ชันนี้ต่างกันยังไงบ้าง สรุปได้ดังนี้
ทีมปัจจุบันที่ผมดูแล ถ้าดูแค่ทักษะที่รับเข้ามา แต่ละคนก็ถนัดต่างกันไป มีคนที่ถนัด frontend มีคนที่ถนัด mobile คนที่ถนัด backend และมีคนที่ถนัด testing เราเป็นทีมเล็ก ๆ รวมผมด้วยมีสมาชิกเป็น 7 คน
เราทำงานแบบ remote (WFH, WFA) โดยใช้เครื่องมืออย่าง MS Team, Discord เป็นเครื่องมือในการสื่อสารกัน โดยใช้ทั้งการ chat, voice และ video call
การจัดการงานในทีม เราไม่มีการบังคับว่าคนถนัด frontend ต้องทำแค่ front หรือคนถนัด mobile ต้องทำแค่ mobile หรือแม้แต่การทำงาน เราไม่ได้ยึดติดว่าเมื่อแยก task งานออกไปแล้ว แต่ละคนก็แยกย้ายกันไปทำงานของตัวเองคนเดียว เราสนับสนุนให้คิดร่วมกัน และทำงานร่วมกัน
รูปแบบการทำงานร่วมกันตลอดจนจบ sprint มีแบบ pair กัน 2 คน หรือมากกว่านั้นเป็น mob ซึ่งเราจะเห็นว่าเรียกว่า mob programming
แต่สำหรับการทำงานของทีมที่ผมสังเกตุ เราไม่ได้มาทำร่วมกันแค่ programming แต่เวลาทีมช่วยกันใน 1 sprint จะรวมถึงการช่วยกันคิดว่าจะแก้ปัญหายังไง ช่วยกันคิดว่าจะทดสอบยังไง ช่วยกันคิดว่าในภาพรวมของทั้งระบบขาดตกอะไรไปบ้าง ไม่ใช่แค่การคิด 1 task ของตัวเองให้จบเท่านั้น
go doc --all --src -u
ใช้คำสั่งนี้เพื่อ generate go doc และทำให้มันรวมโค้ดของทั้ง package ทุกไฟล์ ทั้ง exported / unexported ออกไปสู่ standard out ให้เราเห็นทีเดียวได้เลย
เช่นใน package เรามีไฟล์ a.go, b.go, c.go
สั่ง go doc --all --src -u
ใน folder ของ package มันจะรวมโค้ดของ a.go, b.go, c.go ให้เราเห็นทีเดียวได้เลย
เราใช้ Promise และ async/await syntax ช่วยจัดการร้อยเรียงโค้ดที่จะทำงานหลังจากมีการเรียกใช้ asynchronous function ต่างๆ แต่ส่วนใหญ่เรามักจะ await หรือ then กันทันทีตรงจุดที่เราเรียกใช้งาน async function แต่จริงๆแล้วเราสามารถเรียกแบบ ไม่มี await แล้วเอา Promise object ไป await หรือ then ทีหลังได้
net/http (หรือ gin) handler จะมีจะรับ request type เข้ามาคือ type *http.Request ซึ่งในนี้จะมีตัวแปร context ของ request ที่เราสามารถใช้เช็คได้ว่า request ถูก cancel ไปแล้วหรือยัง
ใน Go function เป็น value แบบนึง ที่เราสามารถส่งไปให้ function อื่นๆ ได้ และเราสามารถเก็บ function ไว้ในตัวแปรได้ เช่น ที่เราใช้กันบ่อยๆก็คือตอนที่เราเขียน HTTP handler
นิยามของ 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”
ได้กลับไปฟังและอ่าน Notes จากการพูดของ Rich Hickey เรื่อง Simple Made Easy อีกครั้ง ชอบในส่วนของท้ายๆที่พูดถึงวิธีการสร้างระบบที่ simple ขอสรุปตามที่ตัวเองเข้าใจไว้สักหน่อยดังนี้
เคยเขียนสรุปสิ่งที่เข้าใจและได้จากการฟังคลิปเรื่อง Livable Code เอาไว้แล้วรอบนึงที่เพจ DevDose ขอยกมาเก็บไว้ใน blog ด้วยจะได้อีกที เป็น session ที่ชอบมากๆหนึ่ง session
CMake เป็น build tool นึงเพื่อช่วยให้เราเซตโปรเจ็ค C/C++ ให้ build binary ออกมาได้ง่ายๆ เพราะ C/C++ เวลาจะ build มีทั้งต้องกำหนด include ตอน compile ทั้งต้องกำหนด library อื่นๆที่เกี่ยวข้องก่อน linking ดังนั้นใช้ CMake ก็จะช่วยจัดการพวกนี้ได้ง่ายขึ้น