李雪連
(河北省滄州中西醫結合醫院,河北 滄州 061000)
提供一個功能強大的基礎編程平臺對于學生信息素養養成的意義重大,而從技術發展現狀來看,java語言充分吸收了C++語言的技術優點,具有功能強大、操作簡單等諸多優點,支持學生以更便捷的方式完成復雜編程,具有技術先進性。因此,在基礎編程平臺設計中,應進一步發揮java 語言的技術優勢,這也是本文研究的主要目的。
本次研究的目的是利用java 語言技術,在編程教學與測試的基礎上構建基礎編程平臺,用以滿足不同條件下的編程管理與遠程監控等。該編程平臺的核心功能解釋如表1 所示。

表1 基礎編程平臺的功能解釋
在線代碼編輯器是政工基礎編程平臺的核心功能模塊,該模塊可根據用戶不同職能設定提供權限。其中當用戶的權限為“教師”時,編輯器可提供關于教師編程的所有權限,包括實驗錄入信息、在線編輯等。例如教師可以在編程平臺上添加已經編寫結束的代碼文件,或者對已經上傳的文件做修改等;也可以選擇添加不同的代碼文件,將片段分文件夾存儲等[1]。而當用戶的權限為“學生”時,編輯器可以提供與權限匹配的功能,如圖實驗代碼編輯等、恢復初始代碼等。同時本次研究中為解決常規OJ 系統中難以充分采集學生編程過程數據的問題,選擇將在線代碼器作為用戶輸入編碼的重要功能入口,通過在入口上采集用戶的行為信息,可以抓取用戶編程時的關鍵行為數據,如編程期間有無錯誤操作或者堆棧信息等,在每次編程操作結束后都可提供錯誤信息統計情況。本次最終設計的在線代碼編輯器結構如圖1 所示。

圖1 在線代碼編輯器的結構圖
在基礎編程平臺管理端設計中可以提供管理操作與平臺設置等功能,主要內容包括:
(1)課程列表管理模塊中可以展示基礎編程設計中所涉及的課程首頁,教師或者管理員可以查閱編程操作數據,也可以選擇添加新的課程以及編程任務。(2)在實驗庫管理模塊設計中,教師或管理員可以查看自己創建的在線編程任務以及其他成員創建的數據庫信息資料,形成實驗庫詳情頁并對實驗庫的實驗做遠程編輯。(3)登錄鑒權模塊設計中可使用微信賬號或者其他賬號做二維碼掃描,登錄成功后即可直接跳轉至課程首頁,并在網絡請求上添加唯一的token 標識[2]。
用戶端設計中,考慮到基礎編程平臺的用戶多為學生,因此功能設計中可以根據學生的操作需求進行設定。例如在點選“實驗”選項后,系統可自動跳轉至對應的在線編程頁面,該頁面可以為學生等用戶提供實驗編輯操作區域。整個用戶端操作區域頁面分為左右兩個分區,其中右側區域為在線編程區域,可以提供在線編程的各項基礎操作;而左側則可以提供實驗內容或者參考答案等。用戶也可以選擇在編輯區內恢復初始代碼、設置編輯區字體等。
本次基于java 語言的基礎編程平臺主要是面向Web 瀏覽器使用的,其中瀏覽器端可以提供用戶交互操作、數據展示等功能;而在服務器端,則可以提供接口調用、數據存儲處理等功能。其核心代碼編輯器為核心可面向不同用戶提供操作平臺,該系統運用java語言前端開發技術,其組件化框架模式為React,該結構的性能優勢是可為教師、學生等用戶提供復用組件,保證業務邏輯得以實現。平臺利用NginX 服務器實現靜態資源分發,該服務器也可通過自身業務邏輯方案提供關于數據交換結構、登錄鑒權等設定[3]。同時上述結構支持中間件功能拓展要求,上述方法可增強基礎編程平臺的業務邏輯拓展范圍。
最后,本次基礎編程平臺設計中選用了具有穩定功能的MySQL 數據庫,大型文件采用了阿里云的OSS對象存儲服務模式。并且為提升平臺穩定性,在本次設計中通過Docker 技術創建了在線編譯運行環節,其目的是順利分割不同用戶提交的代碼數據,并將用戶運行代碼進行反饋后,方便及時調整。
由于Code 編輯器本身不支持React 常用組件化引入的方式,而需要引入腳本的方法解決問題,同時考慮到Code 編輯器的使用量大,若單純采用全局引入腳本的方法會顯著增加代碼維護難度,造成不必要的程序錯誤。為解決上述問題,在本次編程平臺設計中決定采用編輯器封裝方法實現編輯器初始化。
首先應創建React 組件,在編輯器區域內返回一個“textarea”區域,將組件中的“rf”屬性可將DOM元素掛載到“textarea”區域上即可。在生成Code 實例后采用事件處理映射方法將事件處理函數直接映射到實例上。最后按照外部傳入編輯器的內容、高度等設置編輯器代碼以及初始化內容,上述過程即可實現Code 編碼器的組件化封裝[4]。
最后在引入組件時應先確定組件所需要的屬性選項而不需要專門設置COM 操作內容。并且參照React更新機制,在頁面加載中應先形成Code 實例,再根據上級組件傳入屬性調整編輯器內容,其目的是減少因為反復創建過程而引發的消耗。
在系統平臺實現后,應在規定條件下評估編程平臺內容,判斷其功能是否滿足設計需求,最終平穩地投入使用。所以可先將系統代碼部署在阿里云端服務器上,通過不同配置方案以及軟硬件支持方法,可將系統域名映射至可訪問的IP 上,啟動服務器后使系統可實現對外使用[5]。本次實驗中的系統測試環境如表2 所示。

表2 系統測試環境
3.2.1 在線代碼編輯器功能測試
本次項目中測試的內容較多,主要測試內容包括:
(1)檢測編輯器初始化情況,現場測試內容是判斷編程平臺是否可以實現編輯器參數設置初始化,或者平臺是否可以限制編輯器的主題。測試結果顯示為通過。(2)檢查代碼文件加載情況,測試中檢查系統是否可實現代碼文件的正常鏈接以及下載代碼文件、在編輯器上顯示代碼文件情況等。測試結果顯示為通過。(3)實驗文件與主文件檢測情況評估中,測試內容是評估編程平臺是否可以指定實驗文件,即是否可以用于本次實驗的文件;同時測試中通過指定一個實驗主文件后,評估該文件是否可以用于運行與編譯等。現場測試結果顯示為通過。(4)檢查代碼高亮情況,包括對應文件類型中正確高亮代碼的變量名詞、函數以及關鍵詞等,測試結果顯示為通過。(5)不可編輯區域設置,通過在管理(教師)端做設置鎖定指令后,學生端無法對編程平臺做編輯,測試結果顯示為通過。
3.2.2 管理(教師)端功能測試
本環節測試的內容包括用戶操作交互以及頁面展示情況,主要測試內容包括:
(1)創建實驗庫。測試項目為該平臺是否可以順利創建新的實驗庫,其測試結果顯示為通過。(2)實驗庫列表頁顯示情況檢測中,判斷是否可以正常顯示實驗庫列表情況,測試結果顯示為通過。(3)編輯課程信息檢測中,評估編程平臺是否支持課程名稱、封面、課堂教學資料編輯等工作,測試結果顯示為通過。(4)鎖定課程檢測中,判斷教師在將課程鎖定之后,學生報名時顯示為鎖定狀態并無法加入,測試結果顯示為通過。
3.2.3 用戶(學生)端功能測試
本環節測試的內容包括用戶交互、頁面顯示等,具體如下:
(1)檢查平臺是否可以顯示用戶的個人信息情況,即系統可正常顯示學生個人資料,測試結果顯示通過。(2)實驗篩選測試中,測試內容要評估學生點擊不同課程名稱后,可按照名稱篩選課程;也可以在輸入框中搜索關鍵詞,按照關鍵詞篩選顯示課程。上述內容的測試結果顯示為通過。(3)在線運行與提交測試中,測試內容主要是檢查編輯代碼在線運行和提交正常,測試結果顯示為通過。
3.2.4 服務器請求響應測試
本次實驗中連續對基礎編程平臺做連續3000 次的請求,整個系統的請求處理時長約為2.873~4.012,請求成功率為98.07%(2942/3000),整體性能良好。
本文基于java 語言開發的基礎編程平臺在技術上具有可行性,根據本文的測試結果顯示該系統的功能強大,運行穩定性良好,不同方向的結果顯示該系統通過率高,具有技術先進性,值得做進一步推廣。