em muốn người dùng tải file code lên (có thể theo 1 template bắt buộc) của ngôn ngữ C và Java lên server. Và server sẽ biên dịch code đó thì làm thế nào ạ?
Hướng dẫn làm trình biên dịch online
theo stack này bạn cần:
chuẩn bị:
-
server cài sẵn compiler
workflow:
-
client tải tệp lên server
-
chạy compiler
-
thông báo cho client khi biên dịch xong hoặc lỗi
-
client tải về tệp đã bên dịch
Ý em là làm sao để xử lý đoạn server chạy compile tự động ấy anh?
- Server save source code ra file.
- Dùng API của ngôn ngữ gọi trình compiler. Từ khóa cho bạn là “exec shell command from <ngôn ngữ>”
- Thông báo cho user khi compiler chạy xong
Bonus: compiler có thể chạy rất lâu và tốn CPU đó đó nên cho job vào queue để xử lí lần lượt.
Thiếu syntax highlighting và auto indentation kìa, cái này “siêu” quan trọng. Code mà không có thì khác gì đang đánh văn bản Word.
bạn ấy chỉ cần tải file lên và compile thôi mà bạn.
Phải có sandbox không là toang ngay.
Nghe có vẻ lắm vấn đề phát sinh quá mấy anh nhỉ!
Giờ em muốn làm kiểu mấy trang chấm điểm code chạy đúng không ấy thì có dịch vụ nào đơn giản hóa không ạ?
Muốn tạo sandbox thì sài docker, thực ra ko khó lắm, tương tự trang này
https://repl.it/languages/java10
Bạn tham khảo bên Viblo đã từng làm với Viblo Code:
chuẩn nhất là dùng docker container
Vậy là em nên tìm hiểu về docker trước phải không anh?
Chắc cũng phải thành thạo docker mới làm đc
uk bạn học docker 2,3 ngày là làm đc thôi. Web lớn chắc phải sài thêm message broker, kubernetes để tự động scale
Phần front-end chắc kiếm cái highlight.js lắp vào chứ nghĩ code lại cái này cũng khá khoai.
p/s: kiếm đc hàng của ms khá ngon https://microsoft.github.io/monaco-editor/
Sau 1 hồi tiếp thu ý kiến của các anh em xin được tóm lại ý hiểu của em.
Mong các anh nắn lại nếu có sai xót ạ.
Ngôn ngữ backend: NodeJS.
Các bước thực hiện:
- Tạo ra docker container mới từ image từ code NodeJS
- Gọi lệnh shell để docker biên dịch code
- Trả về kết quả cho client
Giờ năm 2019 rồi bác, đâu đâu cũng cloud native mà ko secure thì chết à
Xin hỏi mấy anh thêm là em muốn chương trình của em cụ thể java có thể sử lý cho user nhập dữ liệu từ bàn phím thông qua scanner thì làm như thế nào ạ?
Pipe file input có sẵn vào stdin.