筆電不能帶著跑,但是常常值班時或白天無聊時,在值班室用北榮爛電腦上網。有沒有辦法能夠把看到的文章成果立刻跑跑看呢?答案是:YES!底下要介紹一下好工具 Cloud9。那麼,對資料科學家來說,最好用的交互式工具是甚麼呢?我個人認為 Jupyter 是一個非常好的選擇。(Jupyter 的其他討論之後再說)

完整安裝腳本

註冊帳號與虛擬機選擇

使用 github 帳號登入即可。進去之後選擇空的(blank)主機。

安裝 R 與 Python 環境

sudo apt-get update && sudo apt-get install libcurl4-openssl-dev libgfortran3
wget https://mran.microsoft.com/install/mro/3.2.5/MRO-3.2.5-Ubuntu-14.4.x86_64.deb
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
sudo dpkg -i MRO-3.2.5-Ubuntu-14.4.x86_64.deb
bash Miniconda3-latest-Linux-x86_64.sh
rm *
  1. 之後會依賴到的 lib 有兩個 libgfortran3libcurl-openssh-dev,先裝好。
  2. 下載 Miniconda 與 Microsoft R Open,執行對應指令並在安裝完後刪除安裝檔(空間不夠也)。
  3. 在執行安裝程序中,會不定時有問題需要 interactive 處理。
  4. 這裡使用 Miniconda 精簡包取代 Anaconda。因為空間不夠大。如果要處理更多 Python 的問題,可考慮追裝 scipy numpy matplotlib 等科學包。jupyter 也要用 conda 額外裝。
~/miniconda3/bin/conda install jupyter

安裝 IRkernel

# install IRkernel
echo "install.packages(c('pbdZMQ', 'devtools'))
devtools::install_git('git://github.com/IRkernel/repr.git')
devtools::install_git('git://github.com/IRkernel/IRdisplay.git')
devtools::install_git('git://github.com/IRkernel/IRkernel.git')" >> install.R

sudo Rscript install.R
  1. 發現 repr 這個包要從 github 裝材好,CRAN 一直載不下來,下午還為此 debug 了一陣。
  2. Cloud9 的 Ubuntu 14.04 已經裝好 dev-essential 了所以不必再另外裝上 gcc / make 等編譯工具組。
  3. 接著以一般用戶身分執行 install.sh

建置核心

開啟 R 使用一般用戶身分執行 IRkernel::installspec()。如果我們在腳本執行 IRkernel::installspec(),會導致 jupyter 文件僅有 ROOT 能修改!

執行

在後台 terminal 執行。port 的部分是按照 cloud9 允許的端口做設定。之後會彈出網址。

$ jupyter notebook --ip=0.0.0.0 --port=8080 --no-browser

密碼保護

設定完成的 jupyter 主機是裸露的。通過設定密碼來保護。整個過程參考 Running a notebook server。密碼設定檔存放於 ~/.jupyter 內,名稱為 jupyter-notebook-config.py。如果沒有,通過執行下列指令創造一個。

$ jupyter notebook --generate-config

接著,需要產生密碼的 hash。這裡使用 sha1 作為生成方式。

In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'

完畢後,將產生的字串填入到 jupyter-notebook-config.py 內的 c.NotebookApp.password 這個變數後面。之後登入,便是輸入該串密碼。

執行畫面

notebook 這是執行於網頁上的畫面。按下執行後,該 cell 即可展示成果!(如果要安裝甚麼東西也是通過在這裡執行)

github 這是另外一個,github 支持 ipynb 格式文件的渲染,所以可以用很精美的方式分享 ipynb 即 jupyter 的檔案格式。