李雪連
(河北省滄州中西醫(yī)結(jié)合醫(yī)院,河北 滄州 061000)
提供一個功能強(qiáng)大的基礎(chǔ)編程平臺對于學(xué)生信息素養(yǎng)養(yǎng)成的意義重大,而從技術(shù)發(fā)展現(xiàn)狀來看,java語言充分吸收了C++語言的技術(shù)優(yōu)點(diǎn),具有功能強(qiáng)大、操作簡單等諸多優(yōu)點(diǎn),支持學(xué)生以更便捷的方式完成復(fù)雜編程,具有技術(shù)先進(jìn)性。因此,在基礎(chǔ)編程平臺設(shè)計(jì)中,應(yīng)進(jìn)一步發(fā)揮java 語言的技術(shù)優(yōu)勢,這也是本文研究的主要目的。
本次研究的目的是利用java 語言技術(shù),在編程教學(xué)與測試的基礎(chǔ)上構(gòu)建基礎(chǔ)編程平臺,用以滿足不同條件下的編程管理與遠(yuǎn)程監(jiān)控等。該編程平臺的核心功能解釋如表1 所示。
表1 基礎(chǔ)編程平臺的功能解釋
在線代碼編輯器是政工基礎(chǔ)編程平臺的核心功能模塊,該模塊可根據(jù)用戶不同職能設(shè)定提供權(quán)限。其中當(dāng)用戶的權(quán)限為“教師”時(shí),編輯器可提供關(guān)于教師編程的所有權(quán)限,包括實(shí)驗(yàn)錄入信息、在線編輯等。例如教師可以在編程平臺上添加已經(jīng)編寫結(jié)束的代碼文件,或者對已經(jīng)上傳的文件做修改等;也可以選擇添加不同的代碼文件,將片段分文件夾存儲等[1]。而當(dāng)用戶的權(quán)限為“學(xué)生”時(shí),編輯器可以提供與權(quán)限匹配的功能,如圖實(shí)驗(yàn)代碼編輯等、恢復(fù)初始代碼等。同時(shí)本次研究中為解決常規(guī)OJ 系統(tǒng)中難以充分采集學(xué)生編程過程數(shù)據(jù)的問題,選擇將在線代碼器作為用戶輸入編碼的重要功能入口,通過在入口上采集用戶的行為信息,可以抓取用戶編程時(shí)的關(guān)鍵行為數(shù)據(jù),如編程期間有無錯誤操作或者堆棧信息等,在每次編程操作結(jié)束后都可提供錯誤信息統(tǒng)計(jì)情況。本次最終設(shè)計(jì)的在線代碼編輯器結(jié)構(gòu)如圖1 所示。
圖1 在線代碼編輯器的結(jié)構(gòu)圖
在基礎(chǔ)編程平臺管理端設(shè)計(jì)中可以提供管理操作與平臺設(shè)置等功能,主要內(nèi)容包括:
(1)課程列表管理模塊中可以展示基礎(chǔ)編程設(shè)計(jì)中所涉及的課程首頁,教師或者管理員可以查閱編程操作數(shù)據(jù),也可以選擇添加新的課程以及編程任務(wù)。(2)在實(shí)驗(yàn)庫管理模塊設(shè)計(jì)中,教師或管理員可以查看自己創(chuàng)建的在線編程任務(wù)以及其他成員創(chuàng)建的數(shù)據(jù)庫信息資料,形成實(shí)驗(yàn)庫詳情頁并對實(shí)驗(yàn)庫的實(shí)驗(yàn)做遠(yuǎn)程編輯。(3)登錄鑒權(quán)模塊設(shè)計(jì)中可使用微信賬號或者其他賬號做二維碼掃描,登錄成功后即可直接跳轉(zhuǎn)至課程首頁,并在網(wǎng)絡(luò)請求上添加唯一的token 標(biāo)識[2]。
用戶端設(shè)計(jì)中,考慮到基礎(chǔ)編程平臺的用戶多為學(xué)生,因此功能設(shè)計(jì)中可以根據(jù)學(xué)生的操作需求進(jìn)行設(shè)定。例如在點(diǎn)選“實(shí)驗(yàn)”選項(xiàng)后,系統(tǒng)可自動跳轉(zhuǎn)至對應(yīng)的在線編程頁面,該頁面可以為學(xué)生等用戶提供實(shí)驗(yàn)編輯操作區(qū)域。整個用戶端操作區(qū)域頁面分為左右兩個分區(qū),其中右側(cè)區(qū)域?yàn)樵诰€編程區(qū)域,可以提供在線編程的各項(xiàng)基礎(chǔ)操作;而左側(cè)則可以提供實(shí)驗(yàn)內(nèi)容或者參考答案等。用戶也可以選擇在編輯區(qū)內(nèi)恢復(fù)初始代碼、設(shè)置編輯區(qū)字體等。
本次基于java 語言的基礎(chǔ)編程平臺主要是面向Web 瀏覽器使用的,其中瀏覽器端可以提供用戶交互操作、數(shù)據(jù)展示等功能;而在服務(wù)器端,則可以提供接口調(diào)用、數(shù)據(jù)存儲處理等功能。其核心代碼編輯器為核心可面向不同用戶提供操作平臺,該系統(tǒng)運(yùn)用java語言前端開發(fā)技術(shù),其組件化框架模式為React,該結(jié)構(gòu)的性能優(yōu)勢是可為教師、學(xué)生等用戶提供復(fù)用組件,保證業(yè)務(wù)邏輯得以實(shí)現(xiàn)。平臺利用NginX 服務(wù)器實(shí)現(xiàn)靜態(tài)資源分發(fā),該服務(wù)器也可通過自身業(yè)務(wù)邏輯方案提供關(guān)于數(shù)據(jù)交換結(jié)構(gòu)、登錄鑒權(quán)等設(shè)定[3]。同時(shí)上述結(jié)構(gòu)支持中間件功能拓展要求,上述方法可增強(qiáng)基礎(chǔ)編程平臺的業(yè)務(wù)邏輯拓展范圍。
最后,本次基礎(chǔ)編程平臺設(shè)計(jì)中選用了具有穩(wěn)定功能的MySQL 數(shù)據(jù)庫,大型文件采用了阿里云的OSS對象存儲服務(wù)模式。并且為提升平臺穩(wěn)定性,在本次設(shè)計(jì)中通過Docker 技術(shù)創(chuàng)建了在線編譯運(yùn)行環(huán)節(jié),其目的是順利分割不同用戶提交的代碼數(shù)據(jù),并將用戶運(yùn)行代碼進(jìn)行反饋后,方便及時(shí)調(diào)整。
由于Code 編輯器本身不支持React 常用組件化引入的方式,而需要引入腳本的方法解決問題,同時(shí)考慮到Code 編輯器的使用量大,若單純采用全局引入腳本的方法會顯著增加代碼維護(hù)難度,造成不必要的程序錯誤。為解決上述問題,在本次編程平臺設(shè)計(jì)中決定采用編輯器封裝方法實(shí)現(xiàn)編輯器初始化。
首先應(yīng)創(chuàng)建React 組件,在編輯器區(qū)域內(nèi)返回一個“textarea”區(qū)域,將組件中的“rf”屬性可將DOM元素掛載到“textarea”區(qū)域上即可。在生成Code 實(shí)例后采用事件處理映射方法將事件處理函數(shù)直接映射到實(shí)例上。最后按照外部傳入編輯器的內(nèi)容、高度等設(shè)置編輯器代碼以及初始化內(nèi)容,上述過程即可實(shí)現(xiàn)Code 編碼器的組件化封裝[4]。
最后在引入組件時(shí)應(yīng)先確定組件所需要的屬性選項(xiàng)而不需要專門設(shè)置COM 操作內(nèi)容。并且參照React更新機(jī)制,在頁面加載中應(yīng)先形成Code 實(shí)例,再根據(jù)上級組件傳入屬性調(diào)整編輯器內(nèi)容,其目的是減少因?yàn)榉磸?fù)創(chuàng)建過程而引發(fā)的消耗。
在系統(tǒng)平臺實(shí)現(xiàn)后,應(yīng)在規(guī)定條件下評估編程平臺內(nèi)容,判斷其功能是否滿足設(shè)計(jì)需求,最終平穩(wěn)地投入使用。所以可先將系統(tǒng)代碼部署在阿里云端服務(wù)器上,通過不同配置方案以及軟硬件支持方法,可將系統(tǒng)域名映射至可訪問的IP 上,啟動服務(wù)器后使系統(tǒng)可實(shí)現(xiàn)對外使用[5]。本次實(shí)驗(yàn)中的系統(tǒng)測試環(huán)境如表2 所示。
表2 系統(tǒng)測試環(huán)境
3.2.1 在線代碼編輯器功能測試
本次項(xiàng)目中測試的內(nèi)容較多,主要測試內(nèi)容包括:
(1)檢測編輯器初始化情況,現(xiàn)場測試內(nèi)容是判斷編程平臺是否可以實(shí)現(xiàn)編輯器參數(shù)設(shè)置初始化,或者平臺是否可以限制編輯器的主題。測試結(jié)果顯示為通過。(2)檢查代碼文件加載情況,測試中檢查系統(tǒng)是否可實(shí)現(xiàn)代碼文件的正常鏈接以及下載代碼文件、在編輯器上顯示代碼文件情況等。測試結(jié)果顯示為通過。(3)實(shí)驗(yàn)文件與主文件檢測情況評估中,測試內(nèi)容是評估編程平臺是否可以指定實(shí)驗(yàn)文件,即是否可以用于本次實(shí)驗(yàn)的文件;同時(shí)測試中通過指定一個實(shí)驗(yàn)主文件后,評估該文件是否可以用于運(yùn)行與編譯等。現(xiàn)場測試結(jié)果顯示為通過。(4)檢查代碼高亮情況,包括對應(yīng)文件類型中正確高亮代碼的變量名詞、函數(shù)以及關(guān)鍵詞等,測試結(jié)果顯示為通過。(5)不可編輯區(qū)域設(shè)置,通過在管理(教師)端做設(shè)置鎖定指令后,學(xué)生端無法對編程平臺做編輯,測試結(jié)果顯示為通過。
3.2.2 管理(教師)端功能測試
本環(huán)節(jié)測試的內(nèi)容包括用戶操作交互以及頁面展示情況,主要測試內(nèi)容包括:
(1)創(chuàng)建實(shí)驗(yàn)庫。測試項(xiàng)目為該平臺是否可以順利創(chuàng)建新的實(shí)驗(yàn)庫,其測試結(jié)果顯示為通過。(2)實(shí)驗(yàn)庫列表頁顯示情況檢測中,判斷是否可以正常顯示實(shí)驗(yàn)庫列表情況,測試結(jié)果顯示為通過。(3)編輯課程信息檢測中,評估編程平臺是否支持課程名稱、封面、課堂教學(xué)資料編輯等工作,測試結(jié)果顯示為通過。(4)鎖定課程檢測中,判斷教師在將課程鎖定之后,學(xué)生報(bào)名時(shí)顯示為鎖定狀態(tài)并無法加入,測試結(jié)果顯示為通過。
3.2.3 用戶(學(xué)生)端功能測試
本環(huán)節(jié)測試的內(nèi)容包括用戶交互、頁面顯示等,具體如下:
(1)檢查平臺是否可以顯示用戶的個人信息情況,即系統(tǒng)可正常顯示學(xué)生個人資料,測試結(jié)果顯示通過。(2)實(shí)驗(yàn)篩選測試中,測試內(nèi)容要評估學(xué)生點(diǎn)擊不同課程名稱后,可按照名稱篩選課程;也可以在輸入框中搜索關(guān)鍵詞,按照關(guān)鍵詞篩選顯示課程。上述內(nèi)容的測試結(jié)果顯示為通過。(3)在線運(yùn)行與提交測試中,測試內(nèi)容主要是檢查編輯代碼在線運(yùn)行和提交正常,測試結(jié)果顯示為通過。
3.2.4 服務(wù)器請求響應(yīng)測試
本次實(shí)驗(yàn)中連續(xù)對基礎(chǔ)編程平臺做連續(xù)3000 次的請求,整個系統(tǒng)的請求處理時(shí)長約為2.873~4.012,請求成功率為98.07%(2942/3000),整體性能良好。
本文基于java 語言開發(fā)的基礎(chǔ)編程平臺在技術(shù)上具有可行性,根據(jù)本文的測試結(jié)果顯示該系統(tǒng)的功能強(qiáng)大,運(yùn)行穩(wěn)定性良好,不同方向的結(jié)果顯示該系統(tǒng)通過率高,具有技術(shù)先進(jìn)性,值得做進(jìn)一步推廣。