Hướng dẫn làm trình biên dịch online

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 ạ?

theo stack này bạn cần:
chuẩn bị:

  1. server cài sẵn compiler
    

workflow:

  1. client tải tệp lên server
    
  2. chạy compiler
    
  3. thông báo cho client khi biên dịch xong hoặc lỗi
    
  4. client tải về tệp đã bên dịch
5 Likes

Ý em là làm sao để xử lý đoạn server chạy compile tự động ấy anh?

  1. Server save source code ra file.
  2. 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ữ>”
  3. 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.

5 Likes

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.

6 Likes

bạn ấy chỉ cần tải file lên và compile thôi mà bạn.

5 Likes

@qloved mình cũng mới tính nói cho @hungaya việc đó haha

3 Likes

Phải có sandbox :smiley: không là toang ngay.

6 Likes

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

3 Likes

Bạn tham khảo bên Viblo đã từng làm với Viblo Code:

5 Likes

chuẩn nhất là dùng docker container :crazy_face::crazy_face::crazy_face::crazy_face::crazy_face:

1 Like

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

:slight_smile: 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

1 Like

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 :wink: https://microsoft.github.io/monaco-editor/

2 Likes

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:

  1. Tạo ra docker container mới từ image từ code NodeJS
  2. Gọi lệnh shell để docker biên dịch code
  3. Trả về kết quả cho client
1 Like
4 Likes

Giờ năm 2019 rồi bác, đâu đâu cũng cloud native mà ko secure thì chết à

1 Like

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.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?