2015FALL CPB 協同作業主頁面 (課程已經結束)

第十五週報告示範

先抄一下題目:

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 說明

In [1]:
# print() 的用法
print("hello world!")
hello world!
In [2]:
# print() 的用法, 可以設定分隔符號
print("hello", "world", sep="---")
hello---world
In [3]:
# print() 的用法, 可以設定分隔符號
print("hello", "world")
hello world
In [ ]:
 

當然是測試看看, 能否正確導入 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 標註定義, 然後多人選擇在同一塊畫布上繪圖.

在推送 6603 資料時, 又碰到必須 pull, regenerage pelican

g66 w15

Comments