<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 智能計算 > 設(shè)計應(yīng)用 > 基于私有云的在線學(xué)習(xí)交流平臺的設(shè)計與實現(xiàn)*

          基于私有云的在線學(xué)習(xí)交流平臺的設(shè)計與實現(xiàn)*

          作者:劉波(南京工業(yè)職業(yè)技術(shù)大學(xué)計算機(jī)與軟件學(xué)院,南京 210023) 時間:2023-02-27 來源:電子產(chǎn)品世界 收藏
          編者按:針對當(dāng)前在線教學(xué)過程中缺乏交流互動的問題,本文設(shè)計了一套基于私有云的高校在線學(xué)習(xí)交流平臺。系統(tǒng)通過OpenStack搭建私有云服務(wù),使用SpringBoot和Vue框架實現(xiàn)前后端分離并開發(fā)了在線學(xué)習(xí)交流平臺系統(tǒng)。通過用戶自主上傳學(xué)習(xí)資源、自由標(biāo)記知識點問題和自由加入討論組,實現(xiàn)學(xué)習(xí)過程中的實時交流。通過本平臺,一方面解決了部分高校信息化建設(shè)基礎(chǔ)條件受限的問題;另一方面解決了在線教學(xué)過程中無人交流和無法實時解惑的問題。

          *基金項目:江蘇省現(xiàn)代教育技術(shù)研究課題(2022-R-100280)

          本文引用地址:http://www.ex-cimer.com/article/202302/443759.htm

          自新冠疫情爆發(fā)以來,全國高校逐漸進(jìn)入停課不停學(xué)的狀態(tài),高校的授課方式也由線下教學(xué)轉(zhuǎn)變?yōu)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/在線教學(xué)">在線教學(xué)。在線學(xué)習(xí)最早由《美國教育白皮書》提出,是指通過計算機(jī)和互聯(lián)網(wǎng)等新技術(shù)形式進(jìn)行知識內(nèi)容傳播和便捷學(xué)習(xí)的新型教育方法[1]。在國內(nèi),慕課網(wǎng)[2]、職教云等各類在線學(xué)習(xí)平臺的出現(xiàn),也為高校實現(xiàn)提供了技術(shù)支撐。在線學(xué)習(xí)為學(xué)生提供了豐富的學(xué)習(xí)資料和多樣化的學(xué)習(xí)方式,逐漸成為學(xué)生獲取知識的有效手段之一。為了研究在線學(xué)習(xí)是否能夠普及使用,有學(xué)者開始組織學(xué)生對在線學(xué)習(xí)、和模塊化教學(xué)進(jìn)行評價[3]。結(jié)果顯示,有部分學(xué)生對在線學(xué)習(xí)體驗不滿意。其主要原因包括:1)環(huán)境與技術(shù)因素。例如基礎(chǔ)條件不足, 同時缺乏互聯(lián)網(wǎng)使用經(jīng)驗以及必要培訓(xùn)[4];2)在線教學(xué)過程中僅能夠在線留言和回復(fù),無法對學(xué)習(xí)內(nèi)容進(jìn)行實時。

          為了解決這些問題,學(xué)者們也進(jìn)行了探索。劉小英[5]等提出通過WebSocket 通訊技術(shù),實現(xiàn)實時,提高了師生互動性;安磊[6]等開發(fā)了一個基ThinkPHP框架的遠(yuǎn)程學(xué)習(xí)平臺, 實現(xiàn)了網(wǎng)上交流和資料下載;張國平[7]開發(fā)了適用于軟件工程專業(yè)的學(xué)習(xí)交流平臺,實現(xiàn)了學(xué)生從被動聽講到主動參與的轉(zhuǎn)化。學(xué)者們的這些工作,在一定程度上解決了在線學(xué)習(xí)過程中的交流問題,在經(jīng)濟(jì)發(fā)展較好的地區(qū)及高校能夠快速地推廣使用。然而,這些信息化系統(tǒng)通常需要一定的硬件條件支撐,有些還需要較高的系統(tǒng)配置才能夠使用,同時還需要一定的后期維護(hù)。在一些基礎(chǔ)條件不足的高校,可能無法進(jìn)行此類學(xué)習(xí)交流平臺系統(tǒng)的建設(shè)。

          隨著云計算平臺的不斷發(fā)展,對于基礎(chǔ)設(shè)施的要求逐漸降低。因其具備虛擬性、可靠性、通用性、可伸縮性、按需使用等特點,使其在數(shù)據(jù)安全、計算效率、經(jīng)濟(jì)成本等方面都有巨大的優(yōu)勢。因此,使用云平臺構(gòu)建定制化的數(shù)字系統(tǒng)也逐漸被各企事業(yè)單位所接受。私有云作為一種單獨為企事業(yè)單位創(chuàng)建的云服務(wù),只為企事業(yè)單位內(nèi)部用戶使用,最大程度地增加了數(shù)據(jù)的安全性。本文主要將私有云技術(shù)應(yīng)用到在線學(xué)習(xí)交流平臺中,以期用比公有云更低的經(jīng)濟(jì)成本,滿足高校學(xué)生在學(xué)習(xí)過程中的實時交流需求,同時為高校的信息化建設(shè)提供參考。

          1   需求分析

          本系統(tǒng)主要目標(biāo)為構(gòu)建學(xué)習(xí)問題交流、分享發(fā)布學(xué)習(xí)資源、學(xué)習(xí)資源管理的在線交流平臺。根據(jù)用戶需要,系統(tǒng)主要涉及三種角色: 學(xué)生、教師和管理員。

          1)學(xué)生用戶具有維護(hù)個人基本信息;查看各類通知公告;瀏覽課程資料、教師資料;瀏覽課程進(jìn)度;針對課程信息的交流、留言;針對課程或某一問題創(chuàng)建、編輯、加入和退出;課程相關(guān)資源的上傳下載等功能。

          2)教師用戶除學(xué)生用戶的功能外,還具有通知公告的編輯;課程資料編輯;課程大綱、教案、先導(dǎo)和后續(xù)課程的編輯等功能。

          3)管理員用戶可以使用平臺的所有功能,除學(xué)生和教師用戶的功能外,還具有基礎(chǔ)信息維護(hù)[8](包含院系、專業(yè)、班級、課程、學(xué)生、教師等基礎(chǔ)信息的初始化及導(dǎo)入導(dǎo)出);系統(tǒng)的基礎(chǔ)管理;數(shù)據(jù)字典的設(shè)置;學(xué)習(xí)資源的審核管理等功能。

          2   系統(tǒng)設(shè)計

          2.1 系統(tǒng)架構(gòu)

          本系統(tǒng)包含基礎(chǔ)設(shè)施層、服務(wù)管理層和用戶層,其平臺架構(gòu)圖如圖1 所示?;A(chǔ)設(shè)施層將多臺服務(wù)器資源進(jìn)行整合和存儲,由服務(wù)管理層對用戶數(shù)據(jù)進(jìn)行管理,在用戶層進(jìn)行結(jié)果展示。

          1677480957788218.png

          1)基礎(chǔ)設(shè)施層:基礎(chǔ)設(shè)施層位于云平臺的最底層,包括構(gòu)成云計算平臺的基礎(chǔ)硬件設(shè)施、系統(tǒng)虛擬鏡像、數(shù)據(jù)管理服務(wù)及網(wǎng)絡(luò)服務(wù)等模塊。該層負(fù)責(zé)采集物理節(jié)點的存儲、網(wǎng)絡(luò)、內(nèi)存等資源,通過虛擬化技術(shù)將資源進(jìn)行處理并整合為統(tǒng)一資源池。資源池內(nèi)部根據(jù)用戶的需要進(jìn)行動態(tài)調(diào)整,為系統(tǒng)運行提供了基礎(chǔ)保障。

          2)服務(wù)管理層:服務(wù)管理層為系統(tǒng)的核心層,采用模塊化設(shè)計,為平臺提供支撐,其數(shù)據(jù)資源來源于基礎(chǔ)設(shè)施層。具有元數(shù)據(jù)服務(wù)、資源庫服務(wù)、數(shù)據(jù)計算服務(wù)、在線交流平臺系統(tǒng)門戶服務(wù)等模塊。通過服務(wù)管理層實現(xiàn)在線學(xué)習(xí)交流系統(tǒng)的開發(fā)、配置、維護(hù)等。學(xué)習(xí)交流資源存儲在云端,學(xué)生可以便捷的上傳和下載。

          3)用戶層:用戶層一般由瀏覽器構(gòu)成,包含PC 端瀏覽器和移動端瀏覽器。用戶根據(jù)請求地址對數(shù)據(jù)資源進(jìn)行請求操作,數(shù)據(jù)經(jīng)由基礎(chǔ)設(shè)施層和服務(wù)管理層的處理,最終以友好的方式向用戶展現(xiàn)。

          2.2 私有云設(shè)計

          云平臺構(gòu)建采用基于 的IaaS 架構(gòu), 云計算平臺的優(yōu)勢在于模塊耦合度低、組件靈活配置等[9]。云平臺構(gòu)建時使用 中的核心組件及其功能如表1 所示。

          1677481059488766.png

          云平臺用戶經(jīng)由Keystone 認(rèn)證,使用Horizon 的UI界面創(chuàng)建虛擬機(jī),鏡像服務(wù)由Glance 提供。由Neutron進(jìn)行IP 地址的配置,再由Cinder 為虛擬機(jī)實例提供塊存儲。本系統(tǒng)使用五臺物理機(jī),具有網(wǎng)絡(luò)節(jié)點、控制節(jié)點和計算節(jié)點,網(wǎng)絡(luò)節(jié)點配置如表2,組網(wǎng)結(jié)構(gòu)如圖2。

          1677481168151605.png

          1677481226286278.png

          2.3 系統(tǒng)功能設(shè)計

          在線學(xué)習(xí)交流平臺具有在線論壇和系統(tǒng)管理兩個模塊。在線論壇主要包括:在線學(xué)習(xí)、論壇板塊列表、論壇帖子列表、帖子交互(包括回復(fù)、引用、點贊、收藏等)、熱門內(nèi)容(時間段內(nèi)討論最多的問題)、關(guān)鍵字搜索等功能;系統(tǒng)管理主要包括[10]:論壇板塊管理、論壇帖子管理、管理、學(xué)習(xí)資源管理(審核資源合法性)、初始化管理、通知公告和系統(tǒng)管理等模塊。具體系統(tǒng)功能結(jié)構(gòu)如圖3 所示。

          1677481276728262.png

          1)課程資源管理

          課程資源由授課教師進(jìn)行編輯維護(hù)。教師負(fù)責(zé)維護(hù)課程的課程標(biāo)準(zhǔn)、教學(xué)大綱、教學(xué)設(shè)計、課程知識點、教學(xué)課件、課后習(xí)題等必要資源。對于多個教師同時教授一門課程時,可以同步維護(hù)課程資源。

          2)資源上傳下載

          用戶可以按照課程維度和知識點維度,自由上傳和下載相關(guān)學(xué)習(xí)資源。上傳資源類型支持Word、PPT、Excel、PDF、MP4、AVI、MOV、WMV 和RMVB 等。對于上傳的學(xué)習(xí)資源,可以選擇公開或獨有,但公開的學(xué)習(xí)資源,需要經(jīng)過管理員審核后才會被其他用戶所見。

          3)資源在線學(xué)習(xí)

          用戶可以自由查看課程相關(guān)資源,資源支持在線瀏覽學(xué)習(xí),同時開始記錄學(xué)習(xí)時長。對于用戶瀏覽的非視頻資源,系統(tǒng)每隔15 min 檢測一次客戶端是否活躍。當(dāng)發(fā)現(xiàn)用戶無任何交互動作后,暫時計時,直到用戶重新激活學(xué)習(xí)狀態(tài)。學(xué)習(xí)資源也支持下載到本地觀看,線下學(xué)習(xí)時間不被系統(tǒng)記錄。

          4)知識點標(biāo)記

          學(xué)生對于任意知識點問題,可以進(jìn)行手動標(biāo)記,可以看到已在該知識點下進(jìn)行標(biāo)記的學(xué)生列表。

          5)

          當(dāng)知識點被標(biāo)記后,平臺自動以“專業(yè)- 學(xué)科- 知識點名稱”創(chuàng)建一個關(guān)于該知識點的討論組,學(xué)生可以自由選擇加入、邀請列表內(nèi)學(xué)生加入和退出該討論組。討論組內(nèi)可以進(jìn)行實時交流,交流的消息記錄可以在云端永久保存。學(xué)生可以自由討論關(guān)于該知識點的見解或疑問,也可以針對該知識點選擇某一有授課記錄的教師來進(jìn)行回復(fù)。受邀教師將收到平臺短消息推送,教師可以直接回復(fù)該問題,而不會自動加入該討論組。同一教師每日最多可以被選擇5 次來進(jìn)行答疑。

          6)學(xué)生學(xué)習(xí)統(tǒng)計

          學(xué)生可以查看當(dāng)前已學(xué)習(xí)的課程信息,包括已學(xué)課程列表、在學(xué)課程列表、在學(xué)課程已完成進(jìn)度、單科和全科學(xué)習(xí)時長,同時可以選擇是否公開個人學(xué)習(xí)狀態(tài)及信息。系統(tǒng)可以統(tǒng)計排名全站用戶的公開信息。

          7)學(xué)習(xí)資源管理

          用戶上傳的各類學(xué)習(xí)資源,都處于待審核狀態(tài),管理員負(fù)責(zé)管理審核該類資源。對于Word、PPT、Excel等文件內(nèi)容,首先由系統(tǒng)平臺掃描文件內(nèi)是否存在違禁詞字典表中的內(nèi)容,然后由管理員手動審核正文內(nèi)容是否存在意識形態(tài)等問題,審核無誤后該資源才能被其他用戶所查看。對于視頻資源,系統(tǒng)平臺不支持視頻直接上傳,必須先上傳至第三方站點,再將該外鏈地址保存至系統(tǒng)平臺,合法的第三方站點由管理員在字典表中進(jìn)行設(shè)置。

          8)初始化管理

          管理員可以上傳導(dǎo)入學(xué)校基本資料,如院系信息、專業(yè)信息、課程信息、班級信息、學(xué)生信息、教師信息等,同時自動檢測是否存在對應(yīng)的課程論壇板塊。若該板塊不存在,則自動按照學(xué)院—專業(yè)—課程的目錄結(jié)構(gòu)創(chuàng)建該板塊。課程板塊創(chuàng)建完畢后,自動將有授課任務(wù)的教師列入該板塊的管理者。

          3   私有云的構(gòu)建

          3.1 基礎(chǔ)環(huán)境配置

          物理機(jī)硬件采用8 核心CPU、64 Gb 內(nèi)存×4、16Tb企業(yè)盤×4,操作系統(tǒng)使用Centos7.7。配置好網(wǎng)絡(luò)節(jié)點、防火墻,數(shù)據(jù)庫使用MySQL。

          3.2 Keystone 服務(wù)安裝

          Keystone 為OpenStack 提供認(rèn)證服務(wù),其安裝過程如下:

          1)基礎(chǔ)環(huán)境安裝后,登錄MySQL 并創(chuàng)建Keystone數(shù)據(jù)庫,創(chuàng)新系統(tǒng)用戶并賦予操作權(quán)限;

          2)獲取對應(yīng)的管理口令,安裝軟件服務(wù)和配置文件;

          3)執(zhí)行身份引導(dǎo)服務(wù);

          4)配置管理員用戶,創(chuàng)建項目、域、用戶、角色。創(chuàng)建項目作為OpenStack 的系統(tǒng)項目,所有系統(tǒng)服務(wù)加入該目。

          3.3 Glance 服務(wù)安裝

          Glance 為OpenStack 提供鏡像服務(wù),為用戶的上傳、修改、導(dǎo)出、刪除虛擬機(jī)鏡像提供服務(wù)支撐,其安裝過程如下:

          1)登錄MySQL 并創(chuàng)建 Glance 數(shù)據(jù)庫。

          2)創(chuàng)建用戶、角色和API 服務(wù)端點

          3)安裝和配置Glance 服務(wù)。

          4)同步Glance 數(shù)據(jù)庫,啟動并測試Glance 服務(wù)。

          5)測試獨有鏡像并上傳。

          3.4 Nova服務(wù)安裝

          Nova 為OpenStack 提供計算服務(wù),可以用來管理虛擬機(jī)實例,其安裝過程與Glance 服務(wù)的安裝基本一致:

          1) 登錄MySQL 并創(chuàng)建Nova 數(shù)據(jù)庫。

          2)創(chuàng)建用戶、角色和API 服務(wù)端點。

          3)安裝配置Nova。

          4)同步Nova 數(shù)據(jù)庫,啟動并測試Nova 服務(wù)。

          3.5 Neutron服務(wù)安裝

          Neutron 為OpenStack 提供網(wǎng)絡(luò)服務(wù),其對防火墻、交換機(jī)、負(fù)載均衡器等都有較好的支持。其安裝過程如下:

          1) 登錄MySQL 并創(chuàng)建Neutron 數(shù)據(jù)庫。

          2)創(chuàng)建用戶、角色和API 服務(wù)端點。

          3)安裝配置Neutron,修改內(nèi)核配置文件。

          4)初始化創(chuàng)建網(wǎng)絡(luò)。

          3.6 Horizon服務(wù)安裝

          Horizon 為OpenStack 提供友好的交互界面,用戶可以使用控制臺完成項目管理。軟件安裝后,修改用戶域和角色并重啟服務(wù),即可登錄OpenStack 控制臺。

          3.7 Cinder服務(wù)安裝

          Cinder 為OpenStack 提供塊存儲服務(wù),同時提供實例對象的虛擬磁盤。其安裝過程如下:

          1)登錄MySQL 并Cinder 數(shù)據(jù)庫。

          2)創(chuàng)建用戶、角色和API 服務(wù)端點。

          3)安裝配置Cinder。

          4)同步Cinder 數(shù)據(jù)庫,啟動并測試Cinder 服務(wù)。

          4   系統(tǒng)實現(xiàn)

          本系統(tǒng)基于開源軟件若依進(jìn)行開發(fā)。若依采用技術(shù),后端核心采用SpringBoot 集成MyBatis、Spring Security、Redis 等框架,前端集成ES6、Vue、Axios、Element-UI 等框架, 數(shù)據(jù)庫使用MySQL。

          4.1 知識點標(biāo)記

          用戶可以選中知識點內(nèi)容,當(dāng)監(jiān)聽到鼠標(biāo)松開事件后,通過window.getSelection 方法獲取選中的文本。將選中的文本內(nèi)容和當(dāng)前行數(shù)的文本做配對,從而獲取選中文本的索引值,若未有用戶標(biāo)記過則定義新的索引值,標(biāo)記的內(nèi)容使用span 標(biāo)簽包裹并隨機(jī)設(shè)置背景色。然后通過標(biāo)簽彈窗的方式,列出已標(biāo)記該知識點的其他用戶,用戶間可以進(jìn)行交互操作。其中,知識點添加點擊事件的關(guān)鍵代碼如下:

          1678084287303976.png

          4.2 討論組實時交流

          討論組的實時交流基于WebSocket 通訊協(xié)議實現(xiàn)。用戶通過WebSocket 的onOpen 事件進(jìn)入討論組,輸入交流內(nèi)容后通過WebSocket 的send 方法發(fā)送給服務(wù)端。服務(wù)端收到交流內(nèi)容后,經(jīng)過解析處理再轉(zhuǎn)發(fā)給討論組內(nèi)其他用戶,用戶通過WebSocket 的onMessage 方法接收交流內(nèi)容。其中,用戶接收交流內(nèi)容的方法如下:

          public void onMessage(String message,Session

          session){

          ObjectMapper mapper =new ObjectMapper();

          Message mess = mapper.readValue(message,

          Message.class);

          String toName = mess.getToName();

          String data = mess.getMessage();

          String username = (String) httpSession.getAttribute

          (“user”);

          String resultMessage = MessageUtils.getMessage

          (false, username, data);

          onlineUsers.get(toName).session.getBasicRemote().

          sendText(resultMessage);

          }

          4.3 學(xué)習(xí)時長統(tǒng)計

          將學(xué)習(xí)頁面的生命周期劃分為“初始”、“切換”、“終止”3 個狀態(tài),3 個狀態(tài)的認(rèn)定形式如表3 所示。

          1677481545437642.png

          當(dāng)用戶在線學(xué)習(xí)時,發(fā)生以上任意動作,則累加動作間的時長。使用window.onload 和 window.onbeforeunload 方法監(jiān)聽頁面加載和頁面關(guān)閉;使用pageshow 和pagehide 監(jiān)聽瀏覽器前進(jìn)或后退; 使用visibilitychange 監(jiān)聽Tab 切換、桌面切換和電腦睡眠。

          4.4 熱門內(nèi)容

          用戶可以按時間維度查看高頻關(guān)鍵詞,關(guān)鍵詞統(tǒng)計源包括論壇帖子內(nèi)容、知識點活躍度和討論組內(nèi)關(guān)鍵詞等。關(guān)鍵詞以詞云的方式進(jìn)行顯示,鼠標(biāo)滑動到詞云時,顯示其詞頻數(shù)量及占比,如圖4 所示。

          1677481589112887.png

          圖4 高頻關(guān)鍵詞

          5   結(jié)束語

          本文系統(tǒng)分析了當(dāng)前高?!巴Un不停學(xué)”狀態(tài)下學(xué)生所遇到的問題,并基于OpenStack 構(gòu)建了一個高校在線學(xué)習(xí)交流的私有云平臺。私有云通過硬件虛擬化、存儲虛擬化和網(wǎng)絡(luò)虛擬化等技術(shù),能夠最大程度地保證用戶數(shù)據(jù)的安全性和可靠性;在線學(xué)習(xí)交流平臺為學(xué)生在學(xué)習(xí)過程遇到的問題,提供了良好的解決途徑。本文對高校進(jìn)一步完善在線教學(xué)的能力提供了參考。

          參考文獻(xiàn):

          [1] 孫金鑫.面向?qū)W習(xí)效能提升的智能在線學(xué)習(xí)平臺設(shè)計與實現(xiàn)[D].沈陽:中國科學(xué)院大學(xué)(中國科學(xué)院沈陽計算技術(shù)研究所),2021.

          [2] 習(xí)軍.MOOC趨勢下高校網(wǎng)絡(luò)公選課在線學(xué)習(xí)平臺的設(shè)計與實現(xiàn)[J].科技風(fēng),2018(16):62.

          [3] TAJA-ON E, MIRAS R, JUROLAN C. E-Learning: teaching effectiveness to conventional teaching in undergraduates amid COVID-19 Pandemic[J]. Open Access Library Journal, 2021, 8(11): 1-10.

          [4] MEKKY S T. On-line learning assessment: Egyptian universities as a case study[J].International Journal of Information and Education Technology, 2021, 11(10): 471-478.

          [5] 劉小英,劉強(qiáng).在線學(xué)習(xí)交流平臺的設(shè)計與實現(xiàn)[J].攀枝花學(xué)院學(xué)報,2021,38(2):62-67.

          [6] 安磊,張波.在線學(xué)習(xí)平臺設(shè)計與實現(xiàn)[J].電腦編程技巧與維護(hù),2020(3):17-19.

          [7] 張國平,李亞麗,劉申申.基于SSH的軟件工程學(xué)習(xí)交流平臺的設(shè)計[J].科技資訊,2017,15(36):13-16.

          [8] 謝兵,趙小梅.基于B/S架構(gòu)的高校教學(xué)管理平臺設(shè)計與實現(xiàn)[J].電腦編程技巧與維護(hù),2011(18):57-67.

          [9] 裴棟,張巧燕,蒙曉燕.“雙高”建設(shè)任務(wù)背景下的云計算基礎(chǔ)實訓(xùn)平臺的設(shè)計與實現(xiàn)[J].信息與電腦(理論版),2021,33(13):107-110.

          [10] 鄭占,馬才學(xué).土地開發(fā)整理項目預(yù)算系統(tǒng)設(shè)計研究[J].國土資源科技管理,2010,27(1):108-112.

          (本文來源于《電子產(chǎn)品世界》雜志年2月期)

          image.png




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();