A girl working on python package. --ar 16:9 - Image #4
https://www.midjourney.com/app/jobs/518224de-9d1c-4275-ac0b-df6311a0c94b/
你好,歡迎閱讀《紫式書摘》。
我是王啟樺,目前在加州大學洛杉磯分校(UCLA)擔任統計機器學習方向的博士後研究員。
之所以想讀《Publishing Python Package》,是因為
- Reason 1:學習自動化能力,是經營個人副業的基礎
- Reason 2:工作上的勞動成果,要能更容易為他人所用
- Reason 3:了解open source community的文化,取用大量優質免費資源
而閱讀完《Publishing Python Package》的Chapter 1,我學到了3個要點
- Lesson 1:Packaging = Software + Metadata 套件=軟體+元數據.
- Lesson 2:套件管理系統(Package management systems)是用來解決各種版本衝突.
- Lesson 3:發布套件時,會放入4種檔案:Source code, makefile, Metadata, Instructions.
對「什麼是套件(Package)?」感興趣嗎?繼續往下閱讀吧:)
Lesson 1:套件=軟體+元數據 (Packaging = Software + Metadata)
一直覺得「套件」這個概念很抽象。但在這本書中,我讀到套件的定義為:
Packaging is the act of archiving software along with metadata that describes those files. 套件化本身,就是將「軟體」與「描述軟體檔案的元數據」建檔的過程。
這個定義解答了我很多疑惑。當只有程式碼而沒有解說,我們很難知道程式碼有什麼用。當只有解說而沒有程式碼,我們又會覺得在畫大餅,不實際。
同時有程式碼(code)與解說(nocode),讓東西真的能用起來,這就是套件(Packaging)的藝術。
的確,當使用他人的github儲存庫,如果解說不清楚就很難用。在我的學術工作中,常常需要搭配paper來讀懂作者寫的code的用法。好的paper相當於非常詳細的code使用手冊。因此,練習寫好軟體的解說,是重要的任務。
把軟體的解說寫好,有哪些習慣需要立即開始培養呢?
Lesson 2:套件管理系統(Package management systems)是用來解決各種版本衝突
我學到的第二件事,就是理解到套件管理系統(Package management systems),就是用來解決各種版本衝突的。
在安裝軟體的時候,我也用過如 pip 安裝Python package, 用conda安裝Pytorch,用Homebrew安裝Mac軟體。這些「安裝方式」或多或少有經驗,但是讀了這本書後知道,他們提供了
- 安裝(install)
- 解安裝(uninstall)
- 更新(update)
套件,一個標準化的流程,讓大家的軟體使用更加順暢。
有了套件管理系統,開發者就可以指定好用戶的使用設定(Configuration)。
Lesson 3:發布套件時,會放入4種檔案:Source code, makefile, Metadata, Instructions.
我學到的第3件事,就是原來發布套件的時候,會需要放入4種檔案:
- 原始程式碼(Source code)
- 編譯程式碼的makefile
- 程式碼的元數據 (Metadata)
- 用戶指南 (Instructions for the consumer).
能夠設計套件真的是一個體力活。首先,能夠寫source code就已經很考驗硬技能。而寫用戶指南又很考驗軟技能。這些東西都不顯然,但是在現代卻很流行,就一定有它的用途。開始投資IT技能,就可以享用各種免費的資源。
不知道makefile與Metadata有什麼好用的寫作原則?
你是否也對「」開始感興趣了呢?謝謝你閱讀《紫式書摘》。如果覺得這個文章對你有幫助,歡迎
- 免費追蹤《紫式書摘》寫作專題
- 追蹤我的方格子
- 免費訂閱《紫式書齋》電子報
- 透過臉書與我隨意聊聊
- 追蹤我的Twitter看看英語世界