Web API สำหรับการส่งข้อมูลจากตัวแก้ไขซอร์สโค้ด ไปยังบริการที่ทำหน้าที่คอมไพล์ (Compile) โค้ดต้นฉบับ และสอบทวนการทำงานของซอร์สโค้ดเทียบกับชุดของกรณีทดสอบ
-
ส่วนแก้ไขซอร์สโค้ด (Editor) จะรับค่า หมายเลขรหัสแบบทดสอบ (Assessment Identification) และหมายเลขรหัสคำถาม (Question Identification) ใช้สำหรับค้นหาคำถามและแบบทดสอบที่ผู้เรียนต้องใช้ มาจากส่วนจัดการ ข้อสอบ แล้วจึงส่งข้อมูลของซอร์สโค้ดไปยังคอมไพล์เลอร์ผ่าน
ส่วนเชื่อมต่อกับคอมไพล์เลอร์
เพื่อดูผลลัพธ์ การทำงานเทียบกับกรณีทดสอบ หรือดูผลการทำงานเพื่อหาข้อผิดพลาด -
ส่วนเชื่อมต่อกับคอมไพล์เลอร์ (Compiler Interface) ใช้สำหรับเป็นตัวกลางในการเชื่อมต่อกับคอมไพล์เลอร์ มีหน้าที่จัดการข้อมูลที่ต้องส่งไปให้กับคอมไพล์เลอร์ เช่น กรณีทดสอบ และนำผลลัพธ์ที่ได้คืนมาส่งกลับไปให้ยัง
ส่วนแก้ไขซอร์สโค้ด
-
คอมไพล์เลอร์ (Compiler) ทำหน้าที่ตรวจสอบความถูกต้องของซอร์สโค้ดด้านไวยากรณ์ของภาษาและการทำงานเมื่อเทียบเคียงกับ กรณีทดสอบ โดยรับค่าจาก
ส่วนเชื่อมต่อกับคอมไพลเลอร์
เพื่อใช้ในการทำงานการ
-
ส่วนแก้ไขซอร์สโค้ด (Editor) จะใช้งาน SDD-editor ตามขึ้นตอนที่อธิบายไว้ด้านใน
-
ส่วนเชื่อมต่อกับคอมไพล์เลอร์ (Compiler Interface) ใช้งาน editr โดยมีขั้นตอนการปรับแต่งค่าต่างๆ ดังนี้
-
ภายในไฟล์ที่ชื่อว่า
bootstrap/app.php
บรรทัดที่ 100 จะพบกับฟังก์ชันconfig
ที่กำหนดค่า ต่างๆ ที่ใช้ในการเชื่อมแต่ไว้ เช่นservice.course.testcase
สำหรับดึงข้อมูลของแบบทดสอบพร้อม ทั้งรายการคำถาม ซึ่งด้านในจะมีเครื่องหมาย%s
ในตำแหน่งของหมายเลขแบบทดสอบและคำถาม ตามลำดับ ซึ่งจะต้องแก้ไขในบรรทัดที่ 103testcase
, บรรทัดที่ 106compile
และ บรรทัดที่ 107test
เพื่อชี้ไปยังตำแหน่งของระบบที่ให้ให้ข้อมูล กรณีทดสอบ ตรวจสอบซอร์สโค้ด และ ทดสอบซอร์สโค้ด ตามลำดับ -
เริ่มต้นการทำงานด้วยคำสั่ง
php -S localhost:8090 -t public/
ณ ตำแหน่งบนสุด ในลำดับขั้นโฟลเดอร์ของโปรเจค
-
-
คอมไพล์เลอร์ (Compiler) จะใช้งาน SECU-API ในการทำงานเป็นหลัก โดยมีค่าที่ ต้องกำหนดดังนี้
-
แก้ไขไฟล์
.env
ด้วยการระบุตำแหน่งและข้อมูลการเข้าใช้งานฐานข้อมูลที่เหมาะสมกับเครื่อง ที่ทดสอบ เช่น ชื่อฐานข้อมูล ชื่อผู้ใช้งาน รหัสผ่าน -
ใช้คำสั่ง
php artisan make:migration
ณ ตำแหน่งบนสุดของโครงสร้างโฟลเดอร์ของโครงการ -
ใช้คำสั่ง
php artisan db:seed
ณ ตำแหน่งเดียวกัน -
ใช้คำสั่ง
php -S localhost:80
คำสั่งนี้อาจจะจำเป็นที่จะต้องใช้สิทธิของผู้ดูแลระบบของเครื่อง ทดสอบ
-
ดังที่ได้กล่าวมาแล้วว่าการเชื่อมต่อของทั้ง 2 ส่วนนี้จะเชื่อมต่อผ่าน ส่วนเชื่อมต่อกับคอมไพล์เลอร์
ซึ่งคอยทำหน้าที่กันหน้าที่การเชื่อมต่อไม่ให้ปะปนกับส่วนแก้ไขซอร์สโค้ด ซึ่งจะมีการเชื่อมต่ออยู่ทั้งหมด 3
รายการ ที่ต้องใช้ ดังนี้
ตำแหน่ง: api/question/{assessment_id}-{question_id}
วิธีการเรียกใช้งาน: GET
ค่าที่ต้องการ: qid
รหัสคำถาม ประเภทตัวเลข, aid
รหัสแบบทดสอบ
คำอธิบาย: ข้อมูลแบบทดสอบและคำถาม โดยที่ assessment_id
และ question_id
คือรหัส
ของแบบทดสอบและคำถามตามลำดับ
รูปแบบผลลัพธ์: ตัวอย่างข้อความ
ตัวอย่างการใช้งาน: http://localhost:8090/api/question/1-2
ตำแหน่ง: api/question/compile
วิธีการเรียกใช้งาน: POST
คำอธิบาย: เป็นการตรวจสอบซอร์สโค้ดที่ได้พัฒนานาขึ้นว่ามีข้อผิดพลาดใดเกิดขึ้นหรือไม่ ทั้งนี้จำเป็นต้อง
ส่งซอร์สโค้ดที่พัฒนาขึ้นมานี้มาในตัวแปร script
รูปแบบผลลัพธ์: { 'compiled': { 'results': true } }
results
: ผลลัพธ์การทำงาน จริง/เท็จ
ตัวอย่างการใช้งาน: curl -X POST -d "script=print "hello, world"' http://localhost:8090/api/question/compile
ตำแหน่ง: api/question/test/{assessment_id}-{question_id}
วิธีการเรียกใช้งาน: POST
ค่าที่ต้องการ: qid
รหัสคำถาม ประเภทตัวเลข, aid
รหัสแบบทดสอบ
คำอธิบาย: เป็นการตรวจสอบซอร์สโค้ดที่ได้พัฒนานาขึ้นว่ามีข้อผิดพลาดใดเกิดขึ้นหรือไม่ ทั้งนี้จำเป็นต้อง
ส่งซอร์สโค้ดที่พัฒนาขึ้นมานี้มาในตัวแปร script
และกำหนดรูปแบบของ URL ตามรหัสแบบทดสอบและ
คำถามตามลำดับ
รูปแบบผลลัพธ์: {"tested":{"results":[false,false,false,false]}}
results
: ผลลัพธ์การทำงาน จริง/เท็จ เมื่อเทียบกับกรณีทดสอบที่มี (จำนวนจะขึ้นอยู่กับรายการของกรณีที่สอบที่กำหนดไว้)
ตัวอย่างการใช้งาน: curl -X POST -d "script=print "hello, world"' http://localhost:8090/api/question/test/1-2