2 คะแนน โดย GN⁺ 2025-02-14 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • SQLNoir คือ เกมเรียนรู้ SQL แบบขับเคลื่อนด้วยเรื่องราว ที่ให้เปิดแฟ้มคดีและค้นหาฐานข้อมูลเพื่อหาเบาะแส
  • แต่ละคดีมีสรุปคดี สคีมาฐานข้อมูล และตัวแก้ไข SQL ในตัว เพื่อให้ตรวจสอบ ผู้ต้องสงสัยและเบาะแส ผ่านการเขียนคิวรี
  • สามารถฝึก รูปแบบ SQL ที่ใช้จริง ซ้ำๆ ระหว่างการไขคดี เช่น การกรอง การ join การ aggregate และ subquery
  • เริ่มใช้งานได้โดยไม่ต้องติดตั้งหรือตั้งค่าสภาพแวดล้อมเพิ่มเติม และติดตามความคืบหน้าได้จาก XP กับจำนวนคดีที่ไขได้
  • คดีระดับเริ่มต้นเน้นพื้นฐาน ส่วนคดีระดับสูงต้องใช้ hierarchical join และเงื่อนไขที่ซับซ้อนกว่า จึงเหมาะกับนักพัฒนา นักวิเคราะห์ข้อมูล นักเรียน และผู้สอน

เรียนรู้ SQL ไปพร้อมกับการไขคดี

  • SQLNoir พาผู้ใช้เข้าสู่ การสืบสวนที่ขับเคลื่อนด้วยเรื่องราว พร้อมให้ทั้งสรุปคดีและสคีมาฐานข้อมูล
  • ผู้ใช้สามารถรันคิวรี SQL ในตัวแก้ไขที่มีมาให้ เพื่อเชื่อมตาราง ตัดผู้ต้องสงสัยออก และตรวจสอบข้อแก้ตัว
  • รูปแบบ SQL ที่ได้ฝึกในกระบวนการของคดีมีดังนี้
    • การกรอง
    • การ join
    • การ aggregate
    • subquery
  • เปิดแฟ้มคดีแล้วเริ่มสำรวจข้อมูลได้ทันที โดยไม่ต้องติดตั้งหรือตั้งค่าเพิ่มเติม

ความคืบหน้าและกลุ่มผู้เรียนเป้าหมาย

  • XP และจำนวนคดีที่ไขสำเร็จจะแสดง ความคืบหน้า
  • คดีระดับเริ่มต้นถูกออกแบบมาเพื่อให้เรียนรู้พื้นฐานของ SQL ส่วนคดีระดับสูงต้องใช้ hierarchical join และเงื่อนไขที่ซับซ้อนยิ่งขึ้น
  • เหมาะสำหรับผู้ใช้ต่อไปนี้
    • นักพัฒนาที่อยากฝึกพื้นฐาน SQL และการ join ด้วยการลงมือทำ
    • นักวิเคราะห์ข้อมูลที่เตรียมสัมภาษณ์ด้วยสถานการณ์การเขียนคิวรีที่สมจริง
    • นักเรียนที่เรียนได้เร็วขึ้นด้วยเรื่องราวและฟีดแบ็กทันที มากกว่าจากตำราแห้งๆ
    • ผู้สอนที่กำลังมองหาแบบฝึก SQL ที่ไม่ต้องให้ผู้เรียนตั้งค่าสภาพแวดล้อม

1 ความคิดเห็น

 
GN⁺ 2025-02-14
ความคิดเห็นจาก Hacker News
  • สนุกและชอบมาก
    ถ้าจะเสริมอีกนิด ช่อง submit ในคดีแรกยังไม่ชัดว่าต้องใส่ชื่อหรือใส่ ID ของผู้ต้องสงสัย
    ถ้ามีปุ่ม “คัดลอกไปยังโน้ต” ในผลลัพธ์ก็น่าจะดี และถ้ามีเอกสารบอกว่ามีฟังก์ชันอะไรให้ใช้บ้าง หรือเป็น SQL dialect แบบไหนก็น่าจะดี
    การเรียนรู้ด้วยการลองแก้โปรเจกต์เล็ก ๆ จริง ๆ ง่ายกว่ามาก เลยดูเป็นแนวทางที่มีคุณค่าทีเดียว

    • ดูเหมือนจะทำไว้แบบทั่วไป และสิ่งที่ต้องส่งระบุอยู่ใน Objectives section แล้ว
      ในมุมผู้ใช้ เพราะเป็นเกมนักสืบ เลยอนุมานโดยธรรมชาติว่าต้องการชื่อ “ผู้ต้องสงสัย”
  • สนุกจริง ๆ
    จุดปรับปรุงเล็ก ๆ คืออยากให้ ดาวน์โหลดฐานข้อมูล SQLite โดยตรง ได้ เพื่อเอาไป query ด้วยแอปที่ชอบ แล้วใช้เว็บไซต์แค่สำหรับ briefing, notes และ submit
    อีกอย่าง ถ้าจะบอกว่าเป็นเครื่องมือสำหรับ “เรียน SQL” น่าจะต้องมีคำแนะนำเพิ่มอีกหน่อย หรือมี query ตัวอย่าง
    ในสภาพตอนนี้ ถ้าไม่รู้ SQL ก็อาจหลงทางไปเลยว่าควรทำอะไร แม้จะเป็นเครื่องมือที่เจ๋ง แต่ในฐานะเครื่องมือเรียนรู้ยังดูไม่ค่อยตรงนัก

  • เป็นของเสริมที่ดีในด้านที่ตัวเลือกยังมีไม่มาก
    ที่นึกออกคือ SQL Island(https://sql-island.informatik.uni-kl.de) และ SQL Murder Mystery(https://mystery.knightlab.com) โดยแนวทางของ SQL Noir ใกล้กับอย่างหลังมากกว่า คือเป็น การผจญภัยเดี่ยวแบบไม่ชี้นำ
    ผมกำลังทำ SQL game engine ชื่อ SQLab ที่สามารถเอาแบบฝึกหัดไปต่อเข้ากับฐานข้อมูลพื้นฐานใด ๆ เพื่อสร้างการผจญภัยเดี่ยวแบบมีคำชี้นำได้: https://github.com/laowantong/sqlab
    ดาวน์โหลด database dump แล้วเล่นผ่านอินเทอร์เฟซจัดการใด ๆ ได้ ปัจจุบันรองรับ MySQL, SQLite, Postgres
    ในหน้าเดียวกันยังมีลิงก์คดีสืบสวนตำรวจขนาดยาวที่ออกแบบมาสำหรับนักศึกษาฝรั่งเศสด้วย และถ้าคุณเป็นครูหรือนักวิจัย หลักการของ SQLab อธิบายไว้ที่นี่: https://arxiv.org/abs/2410.16120

    • เป็นโปรเจกต์ที่ยอดเยี่ยม และเห็นด้วยเต็มที่
      โปรเจกต์อื่น ๆ ที่โพสต์ไว้ที่นี่ก็ดีเช่นกัน
      ผมขอเสริมโปรเจกต์ SQL Game Console และ SQL Game Editor ของผม ที่ให้นักเรียนสร้างเกม escape SQL ของตัวเองในเบราว์เซอร์ได้: https://eskuel.de
      สนุกดีที่ได้ทดลองในห้องเรียน และตอนนี้รองรับเฉพาะภาษาเยอรมัน
      เกมตัวอย่าง: https://eskuel.de/zoo/
    • https://sqlbolt.com, https://regexone.com, https://pgexercises.com
  • ทำให้นึกถึง MathNet ที่เคยดูตอนเด็ก
    เป็นซีรีส์สืบสวนตำรวจเพื่อการศึกษาแนว Dragnet โดยนักสืบสองคนพกเครื่องคิดเลขไว้เหมือนซองปืน
    https://en.m.wikipedia.org/wiki/Mathnet

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

    • เป็นข้อสังเกตที่ดี
      เมื่อกี้เพิ่งทำ มุมมองแบบวางข้างกัน ให้ดู 2 แท็บพร้อมกันได้แล้ว หวังว่าจะช่วยได้
      อย่างที่ผู้ใช้คนอื่นเสนอไว้ คุณสามารถบันทึก query ไว้ใน notes หรือคอมเมนต์ทิ้งไว้ใน editor ก็ได้
    • ทุกครั้งที่คัดลอก query และผลลัพธ์ไปยังส่วน notes ผมนึกภาพตัวเองจดโน้ตบนสมุดพกแบบพลิกเปิดในที่เกิดเหตุ
      ขอแค่มีหมวก แล้วพูดว่า “เอาแต่ข้อเท็จจริงนะครับ คุณผู้หญิง” สักสองสามครั้งก็ครบแล้ว
  • ไอเดียดี แต่ ความดื่มด่ำของ UI แทบไม่มี
    ถ้าจะเพิ่มความดื่มด่ำ ต้องมี autocomplete, ฟีเจอร์ดู schema กับ query พร้อมกันบนจอกว้าง และฟีเจอร์คัดลอกชื่อตารางกับชื่อคอลัมน์ได้ง่าย ๆ ด้วยการคลิกครั้งเดียว
    โดยเฉพาะชื่อตารางนี่แม้แต่เลือกก็ยังเลือกไม่ได้
    อยากให้ไม่ใช่แค่เขียนทับ query ที่รันไปแล้วได้เท่านั้น แต่สามารถเพิ่ม query ใหม่ไว้เหนือหรือใต้ query ที่รันแล้วต่อไปเรื่อย ๆ ได้

    • เห็นด้วยเกือบทั้งหมด แต่คิดว่า autocomplete ควรเป็นฟีเจอร์ซ่อนอยู่หรือปิดเป็นค่าเริ่มต้น
      เพราะมันลดความดื่มด่ำ และลดส่วนที่ต้องนึกเองด้วย
      ถ้าเปิดให้ใน new game plus อาจจะโอเค
    • ขอบคุณสำหรับข้อเสนอแนะ
      เมื่อกี้เพิ่งทำ Side by Side view ที่เปิดแท็บต่างกันสองแท็บพร้อมกันได้ และปุ่มสำหรับคัดลอกชื่อตารางแล้ว
    • ถ้าใช้ command-/ เพื่อคอมเมนต์ code block ได้จะมีประโยชน์มาก
  • เป็นไอเดียที่ดีจริง ๆ และการไขคดีก็สนุก
    สำหรับโปรแกรมเมอร์ระดับจูเนียร์ เวอร์ชันการ์ตูน อาจช่วยได้
    SQL editor บางครั้งทำงานแปลก ๆ จนเขียนให้ถูกต้องไม่ได้

  • เวลาพยายามเพิ่มคอมเมนต์ใน editor มันทำงานแปลก ๆ
    วิธีทำซ้ำคือเขียนหลายบรรทัด แล้วใส่ -- หน้าทีละบรรทัดเพื่อคอมเมนต์แต่ละบรรทัด
    เช่น หลังจากเขียน select i.*, s.*, from interviews i, join suspects s, on s.id = i.suspect_id แล้วทันทีที่ใส่ -- หน้า from interviews i บรรทัดนั้นจะย้ายขึ้นไปบรรทัดก่อนหน้า และ syntax highlighting ก็พัง

    • ใช่เลย
      เมื่อกี้เหมือนจะแก้บั๊กนี้ได้แล้ว
  • สมัยมหาวิทยาลัยจำได้ว่าอาจารย์เคยให้ลิงก์ มินิเกมไขคดี คล้าย ๆ แบบนี้สำหรับฝึก SQL
    ตอนนั้นอินมาก จนถึงขั้นพยายามหาคำตอบแบบหนึ่งบรรทัดที่มีประสิทธิภาพที่สุด
    ขอบคุณที่ทำขึ้นมา และคงจะส่งต่อสิ่งนี้ให้คนที่อยากเรียน SQL

  • ค่อนข้างสนุก ผมลองเล่น mystery ฟรีสองอันแล้ว รู้สึกได้ฟีลของการแก้ปริศนา
    ข้อติเล็ก ๆ คืออยากให้ SQL editor รองรับ คอมเมนต์
    ถ้าคอมเมนต์ query เก่าไว้ก่อนรัน query ใหม่เพื่อเก็บ history ได้ น่าจะสะดวก โดยเฉพาะเวลาต้องรัน query เดิมอีกครั้ง

    • ควรจะคอมเมนต์บรรทัด query ได้ด้วยการใส่ --
      ถ้าไม่ได้ แปลว่าเป็นบั๊ก เดี๋ยวจะตรวจดู
      จะใช้แท็บ Notes เพื่อบันทึก query เก่าและสิ่งที่ค้นพบก็ได้