iT邦幫忙

鐵人檔案

第 12 屆 iThome 鐵人賽
回列表
Modern Web

以 Kotlin 為主要語言建構基本的 Online Judge 系統 系列

自高中時期開始,就常以程式解題的方式在撰寫程式,不時也在思考「究竟一個 Online Judge 系統到底是如何建構起來的呢?」藉著這次鐵人賽的機會,希望能夠使用我最近喜歡上的程式語言–Kotlin,來建構出一個簡單的 Online Judge 系統。

雖然我目前有先大概查找一下這中間會需要用到哪些技術,但很多技術也都是趁著這個機會第一次去接觸的,難免會有很多實作上不安全、不實用或是描述不清楚的地方,還請大家多多包涵。如果願意在文章下給予意見的話,我會很開心的,非常感謝!

鐵人鍊成 | 共 30 篇文章 | 26 人訂閱 訂閱系列文 RSS系列文
DAY 11

Day 11:資料管理伺服器 (9) - 遞送程式碼系統

昨日我們已經建立了一個完整具有會員系統,且可以操作資料庫內關於題目資料的 API。接下來,我們要來設計讓使用者能夠針對題目去傳送程式碼的 API。 傳送程式碼...

DAY 12

Day 12:建立可用指令編譯與執行 Kotlin 程式碼的環境

昨天建立了可以將程式碼送進資料庫的系統後,接著我們就要能夠將這個程式碼編譯成可執行的程式,並將編譯出來的程式拿去執行,輸入我們預先設計好的內容,再看看該程式的...

DAY 13

Day 13:程式執行與審核系統 (1) - 實作編譯程式碼並執行程式的程式

昨天我們建立了可以利用指令去編譯並執行 Kotlin 所寫的程式碼,今天我們就來寫一個 Kotlin/JVM 專案,利用這些指令將一份 Kotlin 程式碼檔...

DAY 14

Day 14:程式執行與審核系統 (2) - 將資料庫作為批改程式碼的資料來源

在我們建立了一個基本的審核程式之後,接著就要來讓審核程式從資料管理系統所更新的資料庫進行抓取資料的動作,並將審核結果更新回資料庫內,就讓我們開始吧! 使用 E...

DAY 15

Day 15:程式執行與審核系統 (3) - 嘗試分辨程式執行結果

昨天的最後我們提到了一個問題:「如果使用者提交了會導致程式陷入無窮迴圈的程式碼,該怎麼解決審核系統會卡住的問題?」但其實不只有這個問題需要被解決,還有很多問題...

DAY 16

Day 16:程式執行與審核系統 (4) - 利用 Docker 編譯程式碼與執行程式

昨天我們成功地讓審核系統能夠審核出使用者遞交的程式碼的各種結果,但直接把使用者提交的程式碼編譯起來放在主機上執行似乎有點危險,例如以現在的專案為例,假設我們送...

DAY 17

Day 17:程式執行與審核系統 (5) - 利用 Redis 讓批改程式碼工作能被平行處理

以截至昨天為止審核程式所完成的部份,我們大概已經算完成了整個審核系統應該要做的事情,那接下來還要做些什麼呢?首先,我們先讓每次執行時所使用的 Docker 容...

DAY 18

Day 18:程式執行與審核系統 (6) - 支援更多語言的審核程式

截至昨天,我們解決了許多審核程式會碰到的各種問題,今天就來讓我們的審核程式支援更多的程式語言吧!基本上實作流程就是從 Docker 拉下具有該語言的編譯器和執...

DAY 19

Day 19:批改系統網頁 (1) - 建立基本 Kotlin/JS 網頁專案

在完成了審核程式後,接著就要讓我們將實作完成的資料管理系統以及審核程式能夠有個可以讓使用者方便使用的介面,因此就讓我們開始來實作批改系統的前端網頁吧! 網頁架...

DAY 20

Day 20:批改系統網頁 (2) - 使用 Kotlin-React 進行專案開發

昨天我們成功地建立了一個基本的 Kotlin/JS 專案,今天就讓我們開始來安裝前端常使用的套件 React 的 Kotlin 包裝版吧! React 介紹與...