# Week 0x01 - GradioDay1 (2025/03/08) > [color=#8805bc][time=Sat Mar 08 2025 21:00:00] > 簡報/講義:[Gradio Note](/geoHTeJpRdSoBLtMcuIRkA) [TOC] ## 共筆 - 課程與講義製作 (花生) - 大概 4 小時構思講什麼 - 整個時間約 10 hr (講義 + demo code) - 預計第一次可以製作出一個初步的成品供後續接續的使用(?) - 第二輪預計講 Git - [為什麼學 python?](https://ithelp.ithome.com.tw/articles/10352210) - 不一定完全正確,但是 「學習」 一定是對的 - 寫 python 分成: - notebook - 多為 `.ipynb` 檔案 - 可以一格一格的執行看結果 - 容易觀察程式碼變化 - 適合報告 or 教學 - 要注意程式執行的順序 - 工作坊預計以這個為主 - script - `.py` - 比較嚴謹的檔案架構 - 不好 debug 與細節測試 - 開發環境 - [colab](https://colab.google/) - notebook - [replit](https://replit.com/) - notebook 分成 - 程式碼區塊 - 寫程式的地方 - 文字區塊 - 文件/註解/etc - 輸出區塊 - kernel - 執行階段 - 執行很久會很混亂,可以重新啟動來清除既存的變數等等 - 彩蛋 (?) - power mode - 打字震動 - hackmd 也有 - how do i turn this on - ![image](https://hackmd.io/_uploads/rJ5l_pKs1e.png) - 每次開起來都要重新安裝套件 (發呆太久會斷線也要重來) - MAC 如果要分享畫面需要注意權限問題 - 沒想到我們稍微卡在mac的螢幕分享問題 - FYI: https://www.click-ap.com/meet/faq/macscreenshare ### 正式 Session - pip: 其中一個最常見的python的套件管理工具 - 聽說 [`uv`](https://github.com/astral-sh/uv) 很厲害 - `%pip` 是 notebook 專用語法 - gradio - 在 launch 加上 `debug=True` - 用簡單的 python 程式快速開發搭建一個網站 - demo 給主管看 (?) - qt 跟 tkinter 等套件學習成本很高 - 網頁可以跨平臺 - (程式請看[這裡](https://colab.research.google.com/drive/18kQcVKZRlnAMa4956wYljmUdW_R-NbU8)) - 酷酷的圖形化/視覺化程式 - ![圖片](https://hackmd.io/_uploads/rkD0tTtsJe.png) - 支援多種圖形化輸入 (?) - CheckBox 元件 - 可以當做布林值 (boolean) 的輸入 - ![圖片](https://hackmd.io/_uploads/Sysa9aFo1g.png) - 以下可以對照圖片看 ```python! def proc_str(query, is_lower): if is_lower: return query.lower() return query.upper() gr.Interface( fn=proc_str, inputs=["text", "checkbox"], # <- 我是左邊的輸入框以及打勾勾的框框 outputs="text" # <- 我是右邊的文字輸入框 ).launch() ``` - 圖片元件 (輸入圖片) - 文字可以用 `markdown` 或 `html` - 輸入框都有文字標籤 (label) - 是參數名稱來的 - 因為 python 可以吃中文參數(?),可以放中文 - 也可以給個 `label` 參數 - 上傳檔案 - 會真的傳到你架這個服務的 server 上面 - 如果你用 *COLAB* 的話,時間到就關掉沒了唷 - 能結合 AI 自動生成程式範例 (Google Gemini) - 缺點 && 解法 - interface 僅對應到單一 $\rightarrow$ function - 無法自定排版、要複雜功能 -> 用 `gr.Blocks()` - 可以用 row 或 column 來製作不同排版 - 畫面太小它會自動 rwd (自動排版 for newbie) - 之後會講管理多個使用者同時操作的問題 - ![image](https://hackmd.io/_uploads/BkKGGCtoyl.png) --- **Colab debug 好用資訊 可以更清楚知道發生什麼事** - 剛剛花生說在 colab 中 gradio 不會顯示 traceback 其實可以在 launch 的參數中加入 `debug=True` 就會顯示了 - 在Colab或iPython環境中,因為程式執行問題,如果加了`debug=True`,那一格codeblock會一直處於執行狀態,因此debug完成以後記得把`debug=True`拿掉並重新run 一次code - ![圖片](https://hackmd.io/_uploads/Bk6SERFskg.png) E.g. ```python! def proc_str(query, is_lower): if is_lower: return query.lower() return query.upper() gr.Interface( fn=proc_str, inputs=["text", "checkbox"], outputs="text" ).launch(debug=True) # 在這裡加!!! ``` ## Feedback - 全螢幕 字放大 - 子母畫面 講解code的時候可以瀏覽器全螢幕 ## 下回預告 如何管理 Gradio 多使用者下的狀況 ## 個人心得 & 聊天室 + 臭臭同事擺薰香ww 擺空氣清淨機 是我的錯覺還是剛才飛董的音量大小長得像是正弦波圖形 ↑度 笑了 有點像 “現在你會python了 現在開始開發大規模分散演算法吧”www 還在混亂中ww 是說有工作環境是在使用 ipynb 的嗎 > 窩不知道,我沒有在用 python,我都在寫 js/ts > [name=stanley2058] > 我沒有在公司看過人用 ipynb 還是我都待在舒適圈 [name=david02653] > 我朋友是用ipynb 當開發工具。 我不會寫程式不太清楚 [name=d.f.] 這就是 MAC 的不合理之處嗎 What Happend now? Need a simple brief $\rightarrow$ k ↑看共筆阿 剛好看到網路上筆記有說明 ::-1 補在這邊(?) ```python! list = [1,2,3,4,5,6] list2 = list[:] #起始、結束、改變量都不指定,複製全部 [1, 2, 3, 4, 5, 6] list2 = list[::2] #第一項開始,間隔一個 [1, 3, 5] list2 = list[::-2] #最後一項開始,間隔一個 [6, 4, 2] list2 = list[:2] #前兩項資料 [1, 2] list2 = list[-2:] #後兩項資料 [5, 6] list2 = list[2:-2] #按照索引值取 [3, 4] ```