• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Linux的OnlineJudge在線(xiàn)提交環(huán)境的搭建

      2017-07-05 12:49:01盧云宏侯文涵趙前張麗穎
      電子技術(shù)與軟件工程 2017年12期
      關(guān)鍵詞:命令行平臺(tái)程序設(shè)計(jì)

      盧云宏++侯文涵++趙前++張麗穎++周世平

      摘 要OnlineJudge(OJ)是基于圖形化用戶(hù)界面的在線(xiàn)評(píng)測(cè)系統(tǒng),用于在線(xiàn)檢測(cè)代碼的正確性。本文利用python語(yǔ)言和Linux環(huán)境的命令行方式,為當(dāng)前OJ設(shè)計(jì)并搭建一個(gè)基于Linux的純命令行在線(xiàn)提交環(huán)境,使用該環(huán)境可以在純命令行下向OJ提交題目。該環(huán)境成本低,占用資源少,運(yùn)行速度快,服務(wù)端便于統(tǒng)一管理。

      【關(guān)鍵詞】程序設(shè)計(jì) 命令行 在線(xiàn)提交環(huán)境(平臺(tái))

      1 前言

      人機(jī)交互隨軟件技術(shù)的發(fā)展而進(jìn)步,一直在按照用戶(hù)的期望向著友好、方便、自然的方向發(fā)展。人機(jī)交互從原始的命令行(Command Line Interface,CLI)到圖形化用戶(hù)界面(Graphical User Interface, GUI),再發(fā)展到現(xiàn)在的自然用戶(hù)界面(NaturalUserInterface, NUI)。雖然當(dāng)前CUI已經(jīng)不是主流了,但命令行技術(shù)作為更接近底層的文本模式,永遠(yuǎn)不會(huì)過(guò)時(shí)。

      隨著程序設(shè)計(jì)基礎(chǔ)教學(xué)的發(fā)展,各個(gè)高校紛紛建立OJ,但當(dāng)前OJ平臺(tái)是基于圖形化用戶(hù)界面的,目前還沒(méi)有OJ平臺(tái)使用命令行界面。針對(duì)當(dāng)前的情況,本文使用純命令行界面,設(shè)計(jì)并搭建了純命令行的OJ在線(xiàn)提交環(huán)境。作為日常使用,圖形化界面是方便且易于操作的,但作為服務(wù)器,圖形模式會(huì)占用大量的系統(tǒng)資源,尤其是內(nèi)存?;诜?wù)器的考慮,該環(huán)境的搭建借用Linux環(huán)境的命令行方式。系統(tǒng)終端為純文本,不使用圖形化界面,占用資源少,運(yùn)行速度快,可以對(duì)資源有效利用。另外,該系統(tǒng)運(yùn)行環(huán)境相對(duì)簡(jiǎn)單,不需要太多的外部環(huán)境,客戶(hù)端不需要特殊環(huán)境搭建,可以通過(guò)終端方式(借用putty,ssh,Xshell等工具)實(shí)現(xiàn)登錄。

      2 實(shí)驗(yàn)平臺(tái)環(huán)境搭建

      本文基于遠(yuǎn)程登錄,ssh映射的原理,將OJ服務(wù)器與用戶(hù)之間增加一個(gè)Linux服務(wù)器和一個(gè)中轉(zhuǎn)服務(wù)器,搭建該環(huán)境。使用的搭建工具包括Linux服務(wù)器,OJ服務(wù)器,終端軟件。搭建提交環(huán)境步驟如下:

      (1)實(shí)現(xiàn)端口轉(zhuǎn)發(fā)。因?yàn)長(zhǎng)inux服務(wù)器使用的是局域網(wǎng),只能在特定(124)網(wǎng)段使用,需要將端口轉(zhuǎn)發(fā)到中轉(zhuǎn)服務(wù)器的特定(6666)端口上才能實(shí)現(xiàn)外網(wǎng)訪(fǎng)問(wèn)。

      (2)創(chuàng)建固定數(shù)目的學(xué)生賬戶(hù)和老師賬戶(hù)。

      (3)給賬戶(hù)設(shè)定權(quán)限。使學(xué)生之間不能互相訪(fǎng)問(wèn)進(jìn)入各自的目錄下,但教師用戶(hù)可以進(jìn)入學(xué)生的目錄。

      (4)將特定的功能分配到每個(gè)用戶(hù),如設(shè)定提交指令。

      這其中所有的操作通過(guò)shell腳本實(shí)現(xiàn),每一個(gè)操作都建了一個(gè)腳本。

      當(dāng)前OJ的結(jié)構(gòu)是用戶(hù)直接登錄到OJ服務(wù)器,本文將OJ服務(wù)器與用戶(hù)之間增加一個(gè)Linux服務(wù)器和一個(gè)中轉(zhuǎn)服務(wù)器,各個(gè)服務(wù)器與運(yùn)行在Linux服務(wù)器中的服務(wù)程序構(gòu)成了為本校OJ設(shè)計(jì)的命令行提交系統(tǒng)。用戶(hù)需要通過(guò)終端方式遠(yuǎn)程登錄到Linux服務(wù)器,再進(jìn)行相應(yīng)操作,Linux服務(wù)器將登錄請(qǐng)求和提交題目操作傳遞到OJ服務(wù)器,OJ服務(wù)器再對(duì)這些操作進(jìn)行相應(yīng)處理,再通過(guò)服務(wù)器之間的連接將結(jié)果依次返回。但是Linux服務(wù)器不能被用戶(hù)直接訪(fǎng)問(wèn),用戶(hù)需要通過(guò)一個(gè)能被直接訪(fǎng)問(wèn)到的服務(wù)器登錄到Linux服務(wù)器,所以我們將OJ平臺(tái)的服務(wù)器作為中轉(zhuǎn)服務(wù)器,靠ssh端口映射將中轉(zhuǎn)服務(wù)器與Linux服務(wù)器聯(lián)系起來(lái)。為了加以區(qū)別,本文將中轉(zhuǎn)服務(wù)器與OJ服務(wù)器分別表示。系統(tǒng)的數(shù)據(jù)交互體系結(jié)構(gòu)如圖1所示。

      3 系統(tǒng)實(shí)現(xiàn)

      該系統(tǒng)實(shí)現(xiàn)的功能主要包括用戶(hù)登錄、代碼編寫(xiě)及編譯、代碼運(yùn)行、代碼暫存、用戶(hù)提交、結(jié)果返回。用戶(hù)通過(guò)終端程序,遠(yuǎn)程登錄到Linux服務(wù)器,再登錄OJ賬號(hào),連接到OJ服務(wù)器,進(jìn)行想要進(jìn)行的操作。代碼的編寫(xiě)可以使用Linux系統(tǒng)中的編輯器(如vim等)。在終端中輸入“vimtest(文件名稱(chēng)).c”,回車(chē)進(jìn)入vim編輯器,進(jìn)入編輯狀態(tài)(按a鍵),輸入代碼語(yǔ)句。輸入完成后,退出編輯狀態(tài)(按esc鍵),輸入“:wq”,按回車(chē),可保存代碼文件且退出vim編輯器回到終端命令窗口。代碼的編譯可以依靠gcc命令,輸入“gcctest.c”編譯代碼,最后使用“./test.out”執(zhí)行,查看結(jié)果。因?yàn)榇a的編寫(xiě)、編譯、運(yùn)行和暫存功能是在Linux服務(wù)器內(nèi)部實(shí)現(xiàn)的,所以在這里重點(diǎn)介紹一下用戶(hù)登錄,用戶(hù)提交(包括結(jié)果返回)的過(guò)程。

      3.1 登錄

      通過(guò)終端程序遠(yuǎn)程登錄到Linux服務(wù)器后,用戶(hù)要進(jìn)行登錄賬號(hào)操作,通過(guò)命令行向Linux服務(wù)器提交登錄請(qǐng)求,Linux服務(wù)器接收到請(qǐng)求后,返回相應(yīng)結(jié)果,用戶(hù)輸入賬號(hào)密碼。登錄具體操作通過(guò)python語(yǔ)言中的提交表單實(shí)現(xiàn),服務(wù)程序?qū)⒂脩?hù)輸入的賬號(hào)密碼提交到OJ服務(wù)器,OJ服務(wù)器對(duì)賬號(hào)密碼進(jìn)行驗(yàn)證。若驗(yàn)證錯(cuò)誤,則登錄失敗,將結(jié)果依次返回;若驗(yàn)證正確,Linux服務(wù)器對(duì)登錄結(jié)果進(jìn)行處理,判斷用戶(hù)是否屬于學(xué)生組,若是,則需要判斷學(xué)生是否使用的自己的賬號(hào),檢測(cè)cookie是否有效,是則登錄成功,否則登錄失敗。不屬于學(xué)生組(屬于教師組)則只需檢測(cè)cookie是否有效。用戶(hù)登錄的流程如圖2所示。

      3.2 題目提交

      題目分為兩類(lèi),一類(lèi)是OJ系統(tǒng)上普通的題目,可以任意選擇提交,需要輸入的參數(shù)有四個(gè),格式如下:

      --problem

      其中第一個(gè)參數(shù)(problem)是題目的種類(lèi),第二個(gè)參數(shù)(Problemid)是題目序號(hào),第三個(gè)參數(shù)(Code file)是代碼所在的文件,第四個(gè)參數(shù)(Language)是編程語(yǔ)言的種類(lèi)。

      另一類(lèi)是作業(yè)題目,由學(xué)生將指定題目在規(guī)定時(shí)間內(nèi)提交,需要輸入的參數(shù)如下:

      --contest

      第二個(gè)參數(shù)(Contestcid)作業(yè)序號(hào),其他參數(shù)意義同上。

      用戶(hù)提交的參數(shù)傳遞到Linux服務(wù)器,Linux服務(wù)器獲取到參數(shù)數(shù)據(jù)且未檢測(cè)到無(wú)異常后,程序會(huì)利用參數(shù)構(gòu)造POST數(shù)據(jù),如果線(xiàn)程不出現(xiàn)異常,學(xué)生提交的代碼會(huì)通過(guò)該程序的POST數(shù)據(jù)傳輸?shù)絆J。OJ接收到數(shù)據(jù)后會(huì)進(jìn)行提交、判題、檢測(cè)相似度和返回結(jié)果等操作。程序通過(guò)抓取網(wǎng)頁(yè)數(shù)據(jù),返回抓取到的信息并顯示到命令行。學(xué)生提交題目流程如圖3所示。

      4 結(jié)果分析

      本文針對(duì)煙臺(tái)大學(xué)OJ(202.194.119.110)搭建了在線(xiàn)提交平臺(tái),測(cè)試得到如下結(jié)果:命令行界面資源消耗少,占用內(nèi)存少,運(yùn)行速度優(yōu)于圖形化用戶(hù)界面;對(duì)服務(wù)器配置要求低,成本低于圖形化界面;服務(wù)端實(shí)驗(yàn)環(huán)境便于統(tǒng)一維護(hù);暫存代碼功能相比u盤(pán)存儲(chǔ),更加方便安全。另外學(xué)生使用該提交環(huán)境的同時(shí)增加了對(duì)命令行的使用,減少了對(duì)鼠標(biāo)等外設(shè)的依賴(lài)。

      5 總結(jié)

      本文針對(duì)當(dāng)前程序設(shè)計(jì)基礎(chǔ)教學(xué)中的需求,設(shè)計(jì)并搭建了基于Linux的在線(xiàn)提交環(huán)境,該環(huán)境實(shí)現(xiàn)了通過(guò)命令行提交代碼的一系列功能。命令行不需要頻繁地使用鼠標(biāo)等其它交互手段,在熟練記憶命令的前提下,命令行的效率是所有的交互手段中最高的,通過(guò)使用該在線(xiàn)提交環(huán)境,可以快速便捷的進(jìn)行命令行操作,提高了效率,節(jié)省了用戶(hù)的時(shí)間。使用者在使用該在線(xiàn)提交環(huán)境的同時(shí),對(duì)命令行有了更深入的了解,也提高了自己操作計(jì)算機(jī)的效率。

      參考文獻(xiàn)

      [1]陳蒙,王鋒,鄧輝,季凱帆.基于Python的天文軟件命令行界面設(shè)計(jì)與實(shí)現(xiàn)[J].天文研究與技術(shù),2015(02):196-203.

      [2]李斌.怎樣在程序中與命令行程序交互[J].電腦編程技巧與維護(hù),2015(12):95.

      [3]房曉南,徐功文,孫云晨,張化祥,杜顏伶.基于.NET與在線(xiàn)評(píng)測(cè)的分布式程序設(shè)計(jì)教學(xué)實(shí)驗(yàn)平臺(tái)[J].實(shí)驗(yàn)室研究與探索,2013(11):351-354+380.

      作者簡(jiǎn)介

      盧云宏(1972-),男,山東省煙臺(tái)市人。博士學(xué)位?,F(xiàn)為煙臺(tái)大學(xué)計(jì)算機(jī)與控制工程學(xué)院講師。主要研究方向?yàn)槌绦蛟O(shè)計(jì)和編譯技術(shù)。

      作者單位

      煙臺(tái)大學(xué)計(jì)算機(jī)與控制工程學(xué)院 山東省煙臺(tái)市 264005

      猜你喜歡
      命令行平臺(tái)程序設(shè)計(jì)
      基于Visual Studio Code的C語(yǔ)言程序設(shè)計(jì)實(shí)踐教學(xué)探索
      Windows 10新版CMD更新
      從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
      電子制作(2019年9期)2019-05-30 09:42:04
      高職高專(zhuān)院校C語(yǔ)言程序設(shè)計(jì)教學(xué)改革探索
      網(wǎng)絡(luò)平臺(tái)支持《教育技術(shù)學(xué)》公共課實(shí)驗(yàn)教學(xué)模式構(gòu)建
      陜西科技大學(xué)鎬京學(xué)院應(yīng)用型人才培養(yǎng)模式探索
      以學(xué)霸講堂為依托的學(xué)生黨員學(xué)風(fēng)引領(lǐng)平臺(tái)建設(shè)研究
      Linux系統(tǒng)下GRIB2格式GFS資料轉(zhuǎn)為GRIB1格式的方法詳解
      中國(guó)二手書(shū)市場(chǎng)淺析
      PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
      濮阳县| 太白县| 延吉市| 个旧市| 瑞金市| 温泉县| 集安市| 福州市| 龙胜| 江北区| 百色市| 三明市| 永吉县| 广昌县| 容城县| 图片| 筠连县| 奉贤区| 石河子市| 新乡县| 白沙| 新巴尔虎右旗| 本溪市| 腾冲县| 如皋市| 靖西县| 京山县| 青龙| 呼伦贝尔市| 娱乐| 绥棱县| 韶山市| 双桥区| 泗洪县| 新密市| 奉节县| 静海县| 庐江县| 章丘市| 凤山市| 天津市|