เกม Kerbal Space Program: ตอนที่ 4 การบินและขึ้นสู่วงโคจร

การพาจรวดขึ้นสู่อวกาศไม่ใช่เรื่องยาก แค่พาจรวดให้ลอยสูงพ้นขีด 70km (สำหรับดาว Kerbin) ก็ประกาศได้ว่าขึ้นสู่อวกาศแล้ว แต่ถ้าจรวดลอยขึ้นไปแล้ว พอหมดแรงเครื่องยนต์ก็ตกลงพื้นโลก แบบนี้ถือว่ายังไม่สามารถเข้าวงโคจรได้ เป็นเพียงการขึ้นอวกาศใต้วงโคจรหรือเรียกว่าวงโคจรย่อย (Sub-Orbit) เราจะถือว่าเข้าสู่วงโคจรหลัก (Orbit) ได้ก็ต่อเมื่อจรวดของเราสามารถที่จะลอยอยู่ในอวกาศ บินรอบดาวได้ตลอดรอดฝั่งโดยไม่ต้องเดินเครื่องยนต์ใดๆ อีก
Read the rest of this entry »

SQL สำหรับกรณี … ถ้าไม่มีให้ Insert ถ้ามีให้ Update ถ้าเกินให้ Delete

บางครั้งเรามีข้อมูลอยู่ชุดหนึ่ง อยากจะ insert เข้าตาราง แต่จะสั่ง insert เลยเราก็ไม่แน่ใจว่าจะมี key ของบางเรคคอร์ดอยู่ในตารางปลายทางอยู่แล้วหรือเปล่า เพราะถ้ามีข้อมูลซ้ำกันแม้แต่เรคคอร์ดเดียวก็จะเกิด primary key violation และทำให้ insert ไม่สำเร็จ เราอยากให้มันดูเป็นรายบรรทัดได้ว่าปลายทางมี key นั้นๆ หรือยัง หากยังไม่มีจึงจะให้ insert หากมีอยู่แล้วก็ให้ update การดำเนินการลักษณะนี้เราเรียกว่าการ upsert (มาจากคำว่า update + insert) คือสามารถที่จะเลือก insert หรือ update ได้ตามแต่ว่าตารางปลายทางมี key นั้นอยู่แล้วหรือไม่
Read the rest of this entry »

เกม Kerbal Space Program: ตอนที่ 3 รู้จักกับเครื่องมือวัด

เพื่อที่จะควบคุมจรวด เราต้องเรียนรู้ที่จะอ่านค่าจากเครื่องมือวัดหลายชนิด โพสนี้จะมาทำความรู้จักกับเครื่องมือวัดชนิดต่างๆ ให้มากขึ้น อีกทั้งวิทยาศาสตร์เบื้องหลังเครื่องมือวัดชนิดต่างๆ ก็ยังมีความน่าสนใจไม่แพ้กัน
Read the rest of this entry »

เกม Kerbal Space Program: ตอนที่ 2 การทรงตัวของจรวด

ในโพสที่แล้วได้แนะวิธีดูกำลังเครื่องยนต์ให้มากพอที่จะยกจรวดขึ้น โพสนี้มาต่อกันด้วยเรื่องการทรงตัวของจรวดซึ่งมีส่วนสำคัญไม่แพ้กัน เพราะหากเครื่องยนต์มีกำลังมากก็จริง แต่ไม่ได้ติดอุปกรณ์ช่วยการทรงตัวอย่างเหมาะสม อาจจะทำให้จรวดควบคุมได้ยากลำบากหรือคุมไม่อยู่จนจรวดคว่ำหรือพังไปเลยก็ได้
Read the rest of this entry »

เกม Kerbal Space Program: ตอนที่ 1 รู้จักกับเครื่องยนต์

พอดีช่วงนี้เกิดติดเกม Kerbal Space Program ขึ้นมา จริงๆ ผมก็เพิ่งเล่นเป็นไม่นานนี้เอง แต่ด้วยความที่เกมนี้มีทฤษฎีและเนื้อหาที่ลึกมาก พอได้เรียนรู้แล้วมันอึ้งทึ่งเสียจนยากที่จะเก็บเอาไว้อยู่คนเดียวได้ ต้องเอามาเขียนเป็นบล็อกให้คนที่อยากจะหัดเล่นได้อ่าน เพราะผมไม่ค่อยเห็นคนเขียนบทความเกี่ยวกับเกมนี้เป็นภาษาไทยเท่าไหร่เลย นี่ก็นับเป็นบทความแรกในบล็อกของผมที่ไม่เกี่ยวกับการเขียนโปรแกรมเลยด้วย ผมคงจะไม่เน้นสอนเล่นประมาณว่ากดตรงไหนยังไง แต่จะเน้นเขียนถึงทฤษฎีทางวิทยาศาสตร์จริงๆ ที่มีให้เห็นในเกมมากกว่า เพราะคุณต้องเข้าใจทฤษฎีเหล่านี้จริงๆ คุณถึงจะเล่นเกมได้ดี ไม่มั่ว และมันก็จะสนุกตรงนี้แหละ
Read the rest of this entry »

SQL Query ในการดึงข้อมูลที่มีโครงสร้างเป็นแบบ hierarchy

สำหรับข้อมูลที่มีโครงสร้างเป็นแบบ hierarchy หรือโครงสร้างต้นไม้ เช่นผังองค์กร, สายบังคับบัญชา มักจะมีการตั้งคำถามว่า หน่วยงานนี้อยู่ในสังกัดหน่วยงานอะไรบ้าง หรือมีพนักงานคนใดอยู่ภายใต้การบังคับบัญชาของผู้จัดการคนนี้บ้าง เทคนิคการ query เพื่อหาคำตอบสำหรับข้อมูลแบบนี้ต้องใช้การเวียนเกิดหรือ recursion
Read the rest of this entry »

วิธีเขียน Query เพื่อ Select Top N ของ Group

สมมติว่าเรามีข้อมูลเป็นตาราง Customer ซึ่งมีฟิลด์ credit เป็นข้อมูลเครดิตลูกค้า และฟิลด์ province ซึ่งบอกจังหวัดของลูกค้า
เราอาจจะรู้วิธีเขียน query เพื่อดึงคนที่มีเครดิตสูงสุด N ลำดับแรกออกมา (Top N)
เราอาจจะรู้วิธีทำ aggregation บางอย่าง เช่นหาค่า Min, Max หรือ Average ของแต่ละกลุ่ม(ในที่นี้คือจังหวัด) ออกมา
แต่ถ้าโจทย์ของเราคือ หา Top N ของแต่ละกลุ่มออกมาล่ะ?
Read the rest of this entry »