← cd ../blog
·1 min read

ประสบการณ์พัฒนา Grader Computer Programming ในการเรียนการสอนของมหาวิทยาลัย

  • #grader
  • #computerscience
  • #php
  • #c

Thnawat Gulati

Software Engineer

ตัวอย่างส่วนของการออกแบบ ( Design )

การออกแบบของระบบตรวจสอบภาษา C และ C++ ตอนแรกออกแบบไว้ได้ประมาณนึงแต่เนื่องจากสุดท้ายเวลาค่อนข้างกระชั้นชิด และ เอาเวลาไปพัฒนาระบบ Backend ค่อนข้างเยอะ เลยเปลี่ยนจากเขียน Code Design เองไปเป็นการใช้ AdminLTE Theme

ส่วนของฝั่งผู้ใช้ หรือ ฝั่งนักเรียน

Login Page ส่วนของหน้าเขาสู่ระบบ

ส่วนของหน้าส่ง Source Code

ส่วนของ Backend ที่ใช้ในการพัฒนาระบบ คือ PHP สำหรับส่วนของการตรวจสอบ Source Code ใช้ shell_exec ในส่วนที่ภาษา PHP มีให้ เพื่อใช้ในการ Compile โดย Compiler ที่เลือกใช้ในภาษา C คือ GCC

ตัวอย่างคำสั่ง Compile

gcc -std=gnu99 -w -O2 -fomit-frame-pointer -lm

และส่วนของฐานข้อมูลที่เลือกใช้ในการพัฒนาคือ MySQL

Source Code ทั้งหมด -> GitHub : Thanawatgulati/compro2grader

thanawatgulati/compro2grader

ประสบการณ์หลังเริ่มใช้งานไปได้ 1 ภาคการเรียน

พบปัญหาหลักๆ คือ การที่มหาลัยใช้ Windows และการเขียนโปรแกรมของรุ่นน้องบ้างครั้งเขียน Compile บน Windows แต่ละเครื่องคำตอบไม่เหมือนกันบ้าง หรือ เอามา Compile บน Grader [Linux] ผลลัพธ์ออกไม่เหมือนบน Windows

และอีกปัญยหา คือ การจัดการ Memory คิดว่ายังไม่ไดัพอใน การ Compile

และส่วนอื่นๆของฝั่ง Admin ที่อาจจะออกแบบให้ใช้ยากเกินไป จึงได้เริ่มพัฒนาระบบใหม่ในชื่อของ sigma-Grader ซึ่งครั้งนี้ใช้ Frontend เป็น NextJS และ Backend เป็น NodeJS ส่วนของ ฐานข้อมูลเปลี่ยนไปทดลองใช้ MongoDB ที่เป็นแบบ NoSQL เพื่อเพิ่มความเร็วในการอ่านเขียนข้อมูล และลดปัญหาGraderตัวนี้คิดว่าจะช่วยลดปัญหา คอขวด ในการรอตรวจโดยใช้ STRUCTURE แบบ Queue ในการจัดการคิวในการตรวจ

ทั้งนี้ระบบนี้อยู่ในขั้นตอนการพัฒนา สามารถตรวจสอบได้ที่

SigmaGrader

ฝากผลงานเพิ่มเติมที่

thanawatgulati - Overview

ยังมีระบบ ลงทะเบียนกิจกรรมชุมนุม และ ระบบ Grader v.beta ที่เป็นภาษา python อีกด้วย

Originally published on dev.to.

Want to work together? Get in touch