如何評估開源專案的價值與健康度,以及判斷是否適合導入與採用?

  1. 最優先要考慮的是需求
  2. 開源專案的參考指標
    1. 1. 功能性
    2. 2. 文件完整性
    3. 3. 維護活躍度
    4. 4. 社群支持度
    5. 5. 程式碼品質與穩定性
    6. 6. 安全性
    7. 7. 相依相容性
  3. 總結
  4. 參考資料

在資料工程師的工作中,很常需要使用到開源工具來解決問題,像是 Apache Airflow 或 FastAPI 都是可商用且已經被泛用的開源工具,但我們該如何評估一個新的開源專案值不值得使用或研究呢? 這篇文章我整理了網友和我自己的經驗,以 GitHub 為例,分享有哪些重點是我們在選擇 Open Source 時可以納入考慮的。

最優先要考慮的是需求

我認為所有的考量都要以需求出發,思考這個開源工具是否真的能解決目前遇到的問題,或是達成使用者提出的需求,並且這個工具的規範在公司內是合法合規的,都確認後才能繼續往下探討其他指標。

其他指標我目前把他們分成幾大類:

  1. 功能性
  2. 文件完整性
  3. 維護活躍度
  4. 社群支持度
  5. 程式碼品質與穩定性
  6. 安全性
  7. 相依相容性

開源專案的參考指標

1. 功能性

  • 功能完整性: 工具的功能是否完整且穩定?是否缺少關鍵功能?
  • 易用性:
    • 這個工具是否容易安裝、設定和使用?是否有清晰的 API 或介面?
    • 是否可用 pip install 安裝?
    • 是否提供 Dockerfile / Docker Compose 的方式來部署?
  • 效能:
    • 工具的效能是否能處理你的資料量和運算量?是否有相關的效能測試報告?
    • 這個工具在 ELT、分析、視覺化或建模方面的能力如何?
以 Apache Airflow 為例,GitHub 文件上清楚寫了可以使用 pip 或是 Docker Compose 的方式來安裝
閱讀更多»

解決 R 程式碼在 VS Code 中格式 Style Lint 的問題

  1. Step 1: 安裝 R extension
  2. Step 2: 新增 .lintr 檔案
    1. .lintr 檔案會出現在你的專案根目錄中
  3. Step 3: 修改 .lintr 檔案
  4. Step 4: 重新開啟 R code
    1. 最終完整 .lintr 檔範例
    2. 所有設定都可以參考官網
  5. 常見問題
    1. 顯示 Malformed config file, ensure it ends in a newline 的錯誤

此篇文章記錄如何解決 R 程式碼在 VS Code 上會顯示一大堆波浪底線的問題(如下圖)


Step 1: 安裝 R extension

第一步一定要先安裝 VS Code 的 R 擴充套件,才會有排版建議和自動 Format 的功能

預設的 R Linter 是一行只能 80 字,很多程式碼底下會出現警告的波浪線條

Step 2: 新增 .lintr 檔案

  1. cmd + p (或 ctrl + p for Windows) 叫出 VS Code 的指令列
  2. 輸入 > R 之後點擊「Create .lintr to the workspace」

(當然你也可選擇直接手動在根目錄新增檔案)

.lintr 檔案會出現在你的專案根目錄中

透過 R extension 預設內容如下,可以把全部先刪掉

Step 3: 修改 .lintr 檔案

閱讀更多»

優化 R Docker image 的建立與部署:套件安裝速度提升與節省空間技巧

  1. 前言
  2. 建立 Docker image 時遇到的瓶頸
  3. Step 1:優化安裝套件的速度
    1. 改用 Precompiled 版本的套件 -> 安裝速度提升 8.6 倍
  4. Step 2:優化 Docker image size
    1. 用 r-ver 取代 tidyverse -> 節省 image size 約 2.8 倍
    2. 使用 Multi-stage Builds:兩階段相同 image -> 沒有太大改變
    3. 使用 Multi-stage builds:第二階段改 ubuntu -> 成功縮減 2 倍 image size
  5. 總結
  6. 後記

前言

近期遇到有部分 R Script 執行時佔用太多 VM 記憶體,所以打算把 R 打包成一個 Docker image,讓他可以在 GCP Cloud Run 上面跑,解放 VM 的資源。

首先我建立了一個基於 tidyverse 的 Dockerfile,安裝常用的兩個套件,並讓這個 image 可以由外部提供一個 JOB_NAME 參數,來動態指定要執行的檔案。
(選擇 tidyverse 的原因是使用 r-base 時會遇到無法安裝 bigrquery 的問題)

FROM rocker/tidyverse:4.4.1

RUN R -e "install.packages(c('dplyr', 'bigrquery'), repos='<http://cran.rstudio.com/>')"

COPY r_jobs /r_jobs

CMD ["sh", "-c", "Rscript /r_jobs/$JOB_NAME"]

建立 Docker image 時遇到的瓶頸

雖然這個 image 是可以正常執行,但 docker build 後發現兩個大問題:

  • Docker image 太胖!
    • image 竟然有 2.5 GB 這麼大,這將會造成部署與存放上的問題。
  • R 套件安裝太慢!
    • 光是安裝兩個套件的步驟,就要花 5 分鐘,安裝 12 個套件需要 20 分鐘(如下圖 1,203 秒),時間成本太高。

基於這兩個問題我開始研究 Docker image 的優化方法。

閱讀更多»

Python 與 R 效能大對決!實測比較 Python 和 R 處理數據時的記憶體使用&執行速度

  1. 前言
  2. 實測環境&版本
  3. 實測程式碼
    1. Python
    2. R
    3. 檢查 Test Data 是否相同
  4. 實測數據
  5. 實測結論
  6. 總結

前言

近期因為遇到在 GCP Compute Engine 跑 R 程式碼發生 OOM (Out of Memory)的記憶體問題,所以研究了很多關於 Python 和 R 之間的比較,看到不少文章都說 R 在效能、記憶體分配和垃圾處理(Garbage collect)上都是輸給 Python 的,也看到很多人不推薦使用 R 做大型數據處理。

秉持著研究精神,還是自己測一次最有感,所以這篇文章就是我自己實測的 Python VS. R 的記憶體 + 執行時間的大對決!

實測環境&版本

  • Macbook Pro
    • 晶片: Apple M3
    • 記憶體: 16 GB
    • MacOS: Sonoma 14.2
  • R
    • IDE: 採用最主流的 R Studio 來執行
    • Version:
      • R version: 4.3.3
      • pryr: 0.1.6
  • Python
    • IDE: 採用市占率最高的 VS Code 來執行
    • Version:
      • Python version 3.11.9
      • psutil: 6.0.0
      • numpy: 1.26.4

實測程式碼

這次直接由 ChatGPT-4o 幫我生成兩種不同程式語言的程式碼,我只有附上自己的註解,以及手動更改建立的數據大小而已(下面圖片中的程式碼範例皆為產出一個 70000 x 70000 的表)

閱讀更多»

只要 5 分鐘!讓你的 Mac 擁有美觀的 Terminal!2025 最新最簡單快速的 Zsh + iTerm2 + Powerlevel10k 設定教學

  1. 前言
  2. 環境需求
  3. 安裝順序
    1. 1. 安裝 zsh
    2. 2. 安裝 oh-my-zsh
    3. 3. 安裝 iTerm2
    4. 4. 安裝主題 Powerlevel10k
    5. 5. 設定主題
    6. 完成!
  4. 進階推薦:安裝 zsh 的 Plugins
    1. 1. 安裝
    2. 2. 設定 Plugins 並啟用
  5. 如果 VS Code 的 Terminal 無法正常顯示圖示的話
  6. 參考資料

前言

最近在重新設定 Mac 的 Terminal 時,發現現在關於 Zsh 和 iTerm2 的網路文章都太舊、很多指令已經不適用、安裝順序也很混亂,對於新手來說我覺得會很挫折,所以決定用最簡潔的方式把自己最近設定的流程記錄下來,目的是希望新手們也能輕鬆快速擁有一個美觀好用的 Terminal (幾年前我還是新手的時候,真的是設定到很崩潰…)

環境需求

  1. MacOS
  2. 已安裝 Homebrew
  3. 已安裝 Git

安裝順序

請按照 1~5 步驟的順序,在 Terminal 中執行指令

1. 安裝 zsh

2. 安裝 oh-my-zsh

3. 安裝 iTerm2

4. 安裝主題 Powerlevel10k

5. 設定主題

開啟 iTerm 並執行:

  1. 按下 i 切換成 insert 模式,往下拉會看到 ZSH_THEME,將它設定為 ZSH_THEME="powerlevel10k/powerlevel10k",輸入 :wq 儲存並離開
  2. 執行指令:exec $SHELL
  3. 照著互動式的選擇題,依自己需求和喜好去輸入對應字母數字,最後就會自動套用到設定檔(若沒有跳出互動式設定或是想要再次調整,隨時可執行指令 p10k configure 去做設定)

完成!

恭喜!你的 Terminal 已成功美化!

(內建的 Tango Dark 主題就已經很好看)

如果想要讓使用體驗更升級的話, 請往下繼續閱讀~

閱讀更多»