使用 binder 將公開的 github repository 轉換為可互動、可執行程式碼並能在瀏覽器上一鍵啟動的 jupyterhub 伺服器,讓我們可以快速地建造出方便分享的教學環境。
最近將原本教學大量使用的 google colab 轉移到了 binder 上,起心動念的原因在於雖然 google colab 已經提供乙個可以即時互動的筆記本環境,但是在檔案、環境與終端機的支援上還是略有不足,譬如檔案必須在每一次 session 啟動後重新上傳、套件模組也同樣要在 session 啟動後重新更新與安裝,而終端機的指令要透過筆記本儲存格的魔術指令(magic command!
)送出;所有這些跟筆記本環境設定(configuration)相關的部分,都是想要改用 binder 與 github 的動機。
具體說來,我希望能夠不要在第一堂課花時間作「環境設定」,因為多數來修習將程式語言應用在資料分析領域的學員,對於終端機指令、虛擬環境或系統路徑的認識都不多,更別說每個人電腦五花八門的安裝現況(以 python 來說就有 idle、pycharm、anaconda、vscode 等);使用 binder 與 github 不但能夠跳過「環境設定」,還可以確保每個學員都在同樣的設定下執行課堂中的範例程式和隨堂練習。
我目前使用的是部署於 mybinder.org、免費的 binder,只要輸入公開的 github repository 網址,就可以即時啟動乙個能夠分享給多人的雲計算環境,將本來只能靜態展現的 jupyter 筆記本轉換成為能夠在瀏覽器上執行、編寫的內容,運作原理大致有三個步驟:
輸入乙個公開 github repository 網址
binder 會搜尋 repository 中的環境設定檔案,例如 runtime.txt、requirements.txt、environment.yml 等,然後根據這些檔案的內容建立 docker 映像檔
binder 會依據建立完成的 docker 映像檔啟動乙個 jupyterhub 伺服器
首先前往 github 建立乙個新的公開 repository。
建立乙個新的公開 repository
接著將可以印出 python 版本資訊的程式碼寫入hello.py
並儲存在 repository 之中。
# hello.py將import sysmajor_version = sys.version_info.major
minor_version = sys.version_info.minor
print("hello from binder python {}.{}!".format(major_version, minor_version))
hello.py
儲存在 repository 之中
前往 mybinder.org 將 repository 的網址輸入並點選 launch 等待 jupyterhub 啟動。
將 repository 的網址輸入並點選 launch
在啟動的 jupyterhub 伺服器中新增終端機(new > terminal)後執行python hello.py
,觀察沒有 runtime.txt 時預設的 python 版本為何。
觀察沒有指定 runtime.txt 時候的預設 python 版本為何
接下來的操作會用到 git 的分支概念,不熟悉的讀者可以放心地跳過,我們只是想透過同乙個 github repository 設定不同 python 版本的 binder。
新增乙個檔案 runtime.txt 在 repository 之中,不過這次並不是在既有的 master 分支建立,而是儲存在取名為3.6
的分支中。
# runtime.txt新增檔案 runtime.txt 在取名為python-3.6
3.6
的分支中
前往 mybinder.org,這次除了將 repository 的網址輸入以外,還要在 git branch 的字段輸入 3.6,才點選 launch 等待 jupyterhub 啟動。
將 repository 的網址與分支名稱 3.6 輸入才點選 launch
在啟動的 jupyterhub 伺服器中新增終端機(new > terminal)後執行python hello.py
,觀察指定版本為 3.6 的 runtime.txt 是否有發揮作用。
觀察指定版本為 3.6 的 runtime.txt 是否有發揮作用
如果是習慣 jupyterlab 作為開發介面的使用者,可以將網址複製後加上查詢字串引數?urlpath=lab
就會啟動 jupyterlab。截至於此,我們簡單示範了如何使用 github 分支與 binder 建立了能在瀏覽器上一鍵啟動的 python jupyter 環境。
首先前往 github 建立乙個新的公開 repository。
建立乙個新的公開 repository
接著將可以印出 r 版本資訊的程式碼寫入hello.r
並儲存在 repository 之中。
# hello.r將r_version
r_version_str
sprintf("hello from binder %s!", r_version_str)
hello.r
儲存在 repository 之中
binderhub 預設的程式語言是 python,因此必須先建立 runtime.txt 指定 r 語言的版本資訊,我們設定為 3.6 版本。
# runtime.txt建立 runtime.txt 指定 r 語言的版本資訊r-3.6-2020-08-01
前往 mybinder.org 將 repository 的網址輸入並點選 launch 等待 jupyterhub 啟動。
將 repository 的網址輸入並點選 launch
在啟動的 jupyterhub 伺服器中新增終端機(new > terminal)後執行rscript hello.r
。
觀察 r 語言版本為何
多數的 r 語言使用者習慣使用 rstudio 而非 jupyternotebook 作為開發介面,只要將網址複製後加上查詢字串引數?urlpath=rstudio
就會直接啟動 rstudio;或者可以在 jupyterhub 首頁新增檔案時選擇 rstudio。
新增檔案時選擇 rstudio
截至於此,我們簡單示範了如何使用 github 與 binder 建立了能在瀏覽器上一鍵啟動的 r jupyter 環境。
CppUnit使用簡介
c 單元測試工具cppunit使用簡介 準備工作 1.到 2.解壓檔案,進入src資料夾,開啟cppunitlibraries.dsw。分別編譯這兩個project,輸出位置均為lib資料夾。3.在vc的tools options directories include files和library ...
libpcap使用簡介
li bpcap是unix linux平台下的網路資料報捕獲函式包,大多數網路監控軟體都以它為基礎。這個庫的位置在 usr local lib下.在 usr local include下是他的標頭檔案pcap.h。要寫乙個使用libpcap庫函式的程式只需要在 中加上 i nclude 然後在編譯時...
ulimit使用簡介
1,說明 ulimit用於shell啟動程序所占用的資源.2,類別 shell內建命令 3,語法格式 ulimit acdfhlmnpsstvw size 4,引數介紹 h 設定硬體資源限制.s 設定軟體資源限制.a 顯示當前所有的資源限制.c size 設定core檔案的最大值.單位 blocks...