先抄一下題目:
CP W15 分組報告:
請以組為單位, 利用 http://2015fallhw.github.io/2015fallcpb/ 上的 pelican 文章, 回答下列問題:
-
Python3 的近端程式開發系統如何建立? 如何啟動?
-
目前已經熟悉的 Python3 指令及語法有哪些? 請舉例說明.
-
請利用流程圖, 簡要說明近端猜數字遊戲與猜顏色遊戲程式碼如何設計與運作.
-
請各組員利用 Brython, 分別在各分組的 pelican 網頁文章中, 繪製一個歡慶耶誕的 2D 圖形.
要提交推送之前, 先檢查 md 檔案有無唯一性, 因為若無唯一性, 怕會與其他組的 md 檔案彼此覆蓋.
-
因為 md 檔名為 g66_w15.md, 有冠上組別與週次, 所以不會與他組的 md 檔案衝突, 所有應該 ok
-
slug 設為 g66_w15, 所以 pelican 轉檔後, 會位於班上網誌根目錄, 而且檔案名稱為 g66_w15.html, 所以也沒有問題
-
檢查 Date, 確定為今天的日期與製作時間, 且 Category 為 g66
-
開始利用 @button admin pelican 轉檔, 然後在近端先檢查, 若沒有問題, 推送到遠端
-
另外, 在近端檢查內容時, 採用 Firefox 開啟, 顯示的速度會比 Chrome 快, 切記!!!
提交與推送步驟:
- git add -A
- git commit -m "w15 report from g66"
- git push origin gh-pages
- 輸入帳號與密碼後, 推送到遠端
這裡進行 W15 第一次提交推送
推送過程, 因為距離上次 git clone 到推送期間, 已經有其他組推送新的資料, 此時 g66 近端並沒有遠端上其他組已經完成推送的資料, 因此要透過 git pull, 取回這些新的版本資料, 然後再利用 @button admin pelican 重新要求 pelican 再轉一次檔案 (why? 有誰知道?) 並且在近端, 利用 Firefox 確定一切資料都正確無誤後, 再次提交推送.
接下來, g66 想要利用 Jupyter, 讓處於同一區域網路的組員可以同步編寫報告, 所以就必須確認以下幾件準備工作:
- 我們該如何啟動 Jupyter?, 在哪裡啟動 , 各組的 ipython notebook 才不會彼此覆蓋?
- 啟動後, 各組員要如何編寫?
- 各組員在正確的位置建立 ipython notebook 後, 組長又該如何將這些資料引入報告中?
首先看一下 start.bat 中, 我們如何啟動 Jupyter :
1 2 3 | cd tmp
start %Disk%:\Anaconda3\python.exe "%Disk%:\Anaconda3\Scripts\ipython-script.py" \
notebook --ip=%thisip% --certfile=%Disk%:\home\ssl_cert.pem --profile=nbserver
|
很顯然, 根據第 1 行, 我們是在 tmp 目錄下啟動 Jupyter, 而且我們也把全班倉儲放在 tmp 目錄下, 所以一旦各組員透過瀏覽器, 連線到組長所開啟的 Jupyter, 就可以在全班倉儲下的 ipython notebook 對應目錄下建立檔案, 但是所謂 pelican 內建的所謂 ipython notebook 對應目錄在哪???
就在 2015fallcpb/content/notebook 目錄下!!!
所以現在假設 g66 共有三位組員, 希望透過 Jupyter 來同步編寫報告, 所以就必須到 2015fallcpa/content/notebook 目錄下, 建立g66 目錄, 然後兩位組員再將 ipython notebook 存在這個目錄, 那麼, 組員就可以利用 pelican liquid_tags 的語法, 將這些組員所建立的 ipython notebook 給整合到分組報告中.
所以, 要使用 Jupyter 建立分組報告的步驟:
- 在組長的 y:\tmp\2015fallcpa/content/notebook 目錄下, 建立 g66 子目錄 (必須在操作系統執行)
- 各組員設法在 g66 目錄下編寫 ipython notebook, 然後用下列語法將這些 notebook 內容導進分組報告
以下導入位於組長電腦 y:\tmp\2015fallcpa\content\notebook\g66 目錄下的 6601_w15.ipynb 檔案:
%%%%% 這裡是學號 6601 組員針對 W15 所寫的分組報告內容 %%%%% 可以請組長在 .md 檔案中引入這個檔案的內容 ###################################################### 目前已經熟悉的 Python3 指令及語法有哪些? 請舉例說明. 此地, 將直接利用 Jupyter 的 Python3 Notebook cell 說明
# print() 的用法
print("hello world!")
# print() 的用法, 可以設定分隔符號
print("hello", "world", sep="---")
# print() 的用法, 可以設定分隔符號
print("hello", "world")
當然是測試看看, 能否正確導入 6601 組員所編寫的 6601_w15 ipython notebook 內容.
經過測試無誤後, 再次提交推送
提交推送過程, 有發現遠端有新的版本 ,所以又執行 git pull, 拉回遠端的新資料後, 再 @button admin pelican 後, 檢查近端資料, 正確無誤後再行提交推送.
接下來由 6602 組員利用 notebook 貢獻一張圖
測試看看, 上面有沒有顯示一面國旗???
答案是有, 那麼各組員就可以利用相同的架構, 把耶誕卡繪圖整合進分組報告了
接下來要整合 6603 的報告內容:
在以下的 Brython 繪圖, 我們首次運用函式, 也就是 def 的用法, 當某一個程是需要多次重複執行某一段程式, 就可以利用函式定義與呼叫來提升效率. 有關函式的使用說明, 可以參考: http://pydoing.blogspot.tw/2011/01/python-function.html 特別注意到, 9903 的 Brython 繪圖, 是畫在 9903_plotarea 的獨特畫布上 (600x600 大小), 而非 9902 組員的 plotarea 畫布, 假如要協同繪圖, 則由某一位組員啟動 canvas 標註定義, 然後多人選擇在同一塊畫布上繪圖.