開發了 Stable Diffusion 桌面應用程式「Sodalite」
使用 Stable Diffusion 生成圖片的方法有很多種,但 Web UI 類型的工具往往需要建置 Python 環境、管理相依套件,過程相當繁瑣。
想要更簡單、只要下載安裝程式就能使用的桌面應用程式,於是從零開始開發了 Sodalite。
使用 Stable Diffusion 生成圖片的方法有很多種,但 Web UI 類型的工具往往需要建置 Python 環境、管理相依套件,過程相當繁瑣。
想要更簡單、只要下載安裝程式就能使用的桌面應用程式,於是從零開始開發了 Sodalite。
translate-mcp 是一個使用 OpenAI API 的翻譯工具。它支援 CLI 模式和 MCP 伺服器的兩種使用方式,能夠應對從想要翻譯整個文件到希望與 AI 工具整合的各種場合。
translate-mcp 是一款 專為翻譯而設的工具,使用 OpenAI API。它是用 Python 實現的,具有以下兩種使用方法。
由於 translate-mcp 由 uv 管理,因此需要先安裝 uv。
安裝 uv 的方法參見 Installation | uv。
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
如果使用 uv,可以使用以下命令進行安裝。
uv tool install git+https://github.com/Himeyama/translate-mcp
如果使用 uvx,則無需安裝,直接執行即可。
uvx git+https://github.com/Himeyama/translate-mcp --help
翻譯文件時,可以使用以下命令執行。
translate --input blog/2026-04-02-example.md --from Japanese --to English
結果將輸出至標準輸出,並可透過重定向保存到文件中。
translate \
--input blog/2026-04-02-example.md \
--from Japanese \
--to English \
--output i18n/en/blog/2026-04-02-example.md
--mcp: MCP 模式--input: 待翻譯文件的路徑--from: 原始語言(例如: Japanese、English)--to: 目標語言(例如: English、Taiwanese)--output (可選): 儲存翻譯後文本的位置--model (可選): OpenAI 模型(例如: gpt-5-mini)--debug (可選): 調試模式若發生錯誤,將輸出至 stderr。
啟動為 MCP 伺服器,並可供 Claude Code 或其他 AI 工具使用。
translate --mcp
以下說明如何將部落格文章從日文翻譯成英文和繁體中文(台灣)。
# blog/2026-04-02-example.md 中有日文的文章
translate \
--input blog/2026-04-02-example.md \
--from Japanese \
--to English > i18n/en/docusaurus-plugin-content-blog/2026-04-02-example.md
translate \
--input blog/2026-04-02-example.md \
--from Japanese \
--to Taiwanese > i18n/zh-TW/docusaurus-plugin-content-blog/2026-04-02-example.md
translate-mcp 是一個 簡單且高品質的翻譯工具,利用 OpenAI API 開發。它在部落格文章的多語言支援、文件翻譯以及與 AI 工具整合等多種場合中均能發揮作用。
特別是在想要使用 Docusaurus 等靜態網站生成器支援多語言時,作為自動化腳本的用途效果顯著。
這裡介紹一些常用的程式碼和圖表範例。
首先載入所需的函式庫。
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()

fig, axs = plt.subplots(2, 3)

繪製拋物線
x = np.linspace(-1, 1, 201)
y = x ** 2
fig, ax = plt.subplots()
ax.plot(x, y)

用點繪製拋物線
fig, ax = plt.subplots()
x = np.linspace(-1, 1, 21)
y = x ** 2
ax.plot(x, y, 'o')

顏色設為橘色
fig, ax = plt.subplots()
x = np.linspace(-1, 1, 21)
y = x ** 2
ax.plot(x, y, color="tab:orange")

標準顏色如下:
| 顏色 | 字串 |
|---|---|
| 藍 | tab:blue |
| 橘 | tab:orange |
| 綠 | tab:green |
| 紅 | tab:red |
| 紫 | tab:purple |
| 棕 | tab:brown |
| 粉紅 | tab:pink |
| 灰 | tab:gray |
| 橄欖 | tab:olive |
| 青 | tab:cyan |
設定線的粗細為 4
fig, ax = plt.subplots()
x = np.linspace(-1, 1, 21)
y = x ** 2
ax.plot(x, y, lw=4)

將標題設為 Title
fig, ax = plt.subplots()
ax.set_title("Title")

將 x 軸標籤設為 Time (s)
fig, ax = plt.subplots()
ax.set_xlabel("Time (s)")

將 y 軸標籤設為 Distance (m)
fig, ax = plt.subplots()
ax.set_ylabel("Distance (m)")

將上限設為 100
fig, ax = plt.subplots()
ax.set_ylim(top=100)

將下限設為 -100
fig, ax = plt.subplots()
ax.set_ylim(bottom=-100)

將上限設為 100,下限設為 -100
fig, ax = plt.subplots()
ax.set_ylim([-100, 100])

將左邊設為 -100
fig, ax = plt.subplots()
ax.set_xlim(left=-100)

將右邊設為 100
fig, ax = plt.subplots()
ax.set_xlim(right=100)

將左邊設為 -100,右邊設為 100
fig, ax = plt.subplots()
ax.set_xlim([-100, 100])

fig, ax = plt.subplots()
ax.grid()

僅顯示垂直網格
fig, ax = plt.subplots()
ax.grid(axis="x")

僅顯示水平網格
fig, ax = plt.subplots()
ax.grid(axis="y")

設定 x 軸刻度
fig, ax = plt.subplots()
xticks = range(6)
ax.set_xticks(xticks)

設定 x 軸刻度和刻度標籤
fig, ax = plt.subplots()
xticks = range(6)
ax.set_xticks(xticks, [f"{xtick}m" for xtick in xticks])

設定 y 軸刻度
fig, ax = plt.subplots()
yticks = [i * 20 for i in range(6)]
ax.set_yticks(yticks)

設定 y 軸刻度和刻度標籤
fig, ax = plt.subplots()
yticks = [i * 20 for i in range(6)]
ax.set_yticks(yticks, [f"{ytick}%" for ytick in yticks])

刪除 x 軸刻度
fig, ax = plt.subplots()
ax.tick_params(bottom=False)

刪除 x 軸刻度標籤
fig, ax = plt.subplots()
ax.tick_params(labelbottom=False)

刪除 y 軸刻度
fig, ax = plt.subplots()
ax.tick_params(left=False)

刪除 y 軸刻度標籤
fig, ax = plt.subplots()
ax.tick_params(labelleft=False)

將 x 軸刻度顏色設為紅色
fig, ax = plt.subplots()
ax.tick_params(axis="x", color="tab:red")

將 x 軸刻度標籤顏色設為紅色
fig, ax = plt.subplots()
ax.tick_params(axis="x", labelcolor="tab:red")

將 y 軸刻度顏色設為紅色
fig, ax = plt.subplots()
ax.tick_params(axis="y", color="tab:red")

將 y 軸刻度標籤顏色設為紅色
fig, ax = plt.subplots()
ax.tick_params(axis="y", labelcolor="tab:red")

將縱向間距設為 0.2,橫向間距設為 0.3
fig, ax = plt.subplots(3, 3)
fig.subplots_adjust(hspace=0.2, wspace=0.3)

自動設定間距
fig, ax = plt.subplots(3, 3)
fig.tight_layout()

以 PNG 格式儲存
fig, ax = plt.subplots()
plt.savefig("graph.png")
以 SVG 格式儲存
fig, ax = plt.subplots()
plt.savefig("svg.png")
以 PDF 格式儲存
fig, ax = plt.subplots()
plt.savefig("svg.pdf")
以 300 dpi 儲存
fig, ax = plt.subplots()
plt.savefig("graph300.png", dpi=300)

這篇備忘錄記錄了 pyenv 的安裝。
pyenv 是一個命令行工具,用於管理多個 Python 版本。它允許你在同一台機器上輕鬆地安裝、切換和管理不同的 Python 環境,而不會相互衝突。
這對於需要使用不同 Python 版本進行開發的項目(例如,一個項目需要 Python 3.8,另一個需要 Python 3.10)非常有用。
安裝 pyenv 的方法因操作系統而異。
在 macOS 上,使用 Homebrew 安裝 pyenv 是最簡單的方法。
brew update
brew install pyenv
pyenv-installer 腳本) - 推薦對於 Linux 系統,可以使用 pyenv-installer 腳本來自動化安裝 pyenv 及其常用的插件。
curl https://pyenv.run | bash
pyenv-win)對於 Windows 用戶,官方推薦使用 pyenv-win,它是 pyenv 的一個 Windows 版本。
# 通過 PowerShell 安裝
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" | Invoke-Expression
# 或者通過 pip 安裝 (需要先有 Python 環境)
pip install pyenv-win --target %USERPROFILE%\.pyenv
請參考 pyenv-win 的 GitHub 儲存庫獲取最新安裝說明:https://github.com/pyenv-win/pyenv-win
安裝 pyenv 後,你需要將其添加到你的 Shell 環境中。這會讓 pyenv 命令在你的終端中可用。
將以下內容添加到你的 ~/.bashrc (或 ~/.bash_profile) 文件中:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)" # 確保 shell 能夠加載 pyenv
eval "$(pyenv virtualenv-init -)" # 如果你計劃使用虛擬環境
完成後,重新載入你的 shell 配置:
source ~/.bashrc
將以下內容添加到你的 ~/.zshrc 文件中:
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
完成後,重新載入你的 shell 配置:
source ~/.zshrc
打開一個新的終端會話,然後運行:
pyenv --version
如果成功,它會顯示 pyenv 的版本號。
現在你可以使用 pyenv install 命令來安裝你需要的 Python 版本。
pyenv install --list
這會列出所有可安裝的 Python 版本,包括 CPython、Jython、Anaconda 等。
pyenv install 3.9.10 # 安裝 Python 3.9.10
pyenv install 3.10.6 # 安裝 Python 3.10.6
安裝可能需要一些時間,因為它會下載源碼並編譯 Python。
設置全局 Python 版本:
pyenv global 3.10.6
這會將 3.10.6 設置為你所有 shell 會話的默認 Python 版本。
在專案目錄中,你可以設置一個局部 Python 版本。
cd my_project
pyenv local 3.9.10
這會在當前目錄中創建一個 .python-version 文件。當你進入這個目錄時,pyenv 會自動切換到指定的 Python 版本。
pyenv versions
當前使用的版本會被標記一個星號 *。
* 3.10.6 (set by /home/user/.pyenv/version)
3.9.10
pyenv 是一個非常實用且強大的工具,用於管理 Python 版本。它提供了一種簡潔而可靠的方式來應對多個 Python 環境的需求,避免了版本衝突,讓你的開發工作流更加順暢。正確安裝和配置 pyenv 是任何嚴肅 Python 開發者的基本技能。
這篇備忘錄記錄了 Poetry。
Poetry 是一個用於 Python 項目依賴管理和打包的工具。它旨在提供一個更簡潔、更直觀的開發體驗,解決了傳統 Python 項目中 pip 和 virtualenv 的一些痛點。
Poetry 將依賴管理、虛擬環境、打包和發布功能集成到一個工具中,使得 Python 項目的生命週期管理更加順暢。
推薦使用官方提供的腳本進行安裝:
curl -sSL https://install.python-poetry.org | python3 -
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
安裝完成後,你可能需要將 Poetry 的可執行路徑添加到你的 PATH 環境變量中。安裝腳本通常會給出提示。
要創建一個新的 Poetry 專案:
poetry new my-project
cd my-project
這會創建一個包含以下結構的新目錄:
my-project/
├── my_project/
│ └── __init__.py
└── pyproject.toml
└── README.md
pyproject.toml 文件Poetry 使用 pyproject.toml 文件來管理項目元數據和依賴。這是 Poetry 的核心配置文件。
範例 pyproject.toml:
[tool.poetry]
name = "my-project"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"
packages = [{include = "my_project"}] # 指定你的 Python 包
[tool.poetry.dependencies]
python = "^3.10" # 指定 Python 版本
requests = "^2.28.1" # 運行時依賴
[tool.poetry.group.dev.dependencies]
pytest = "^7.1.2" # 開發時依賴 (例如測試工具)
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
poetry add requests # 添加運行時依賴
poetry add --group dev pytest # 添加開發時依賴
這會更新 pyproject.toml 並安裝依賴到虛擬環境中。
poetry remove requests
poetry remove --group dev pytest
如果 pyproject.toml 和 poetry.lock 已經存在,安裝所有依賴:
poetry install
更新所有依賴到最新兼容版本:
poetry update
更新指定依賴:
poetry update requests
Poetry 會自動為每個專案創建和管理虛擬環境。
在虛擬環境中運行命令:
poetry run python my_script.py
poetry shell
然後你就可以直接運行 python 或其他已安裝的命令。
poetry env info
poetry env remove python3.10 # 替換為實際的 Python 版本或環境路徑
創建一個源發行版(sdist)和一個輪子文件(wheel):
poetry build
打包文件會生成在 dist/ 目錄中。
在發布之前,請確保你的 pyproject.toml 中的元數據是準確的。
poetry publish
如果你是第一次發布,可能需要配置 PyPI 憑據。
poetry config pypi-token.pypi <your-pypi-token>
Poetry 是一個現代化的 Python 項目管理工具,它簡化了依賴管理、虛擬環境、打包和發布的整個流程。它的 pyproject.toml 文件提供了一個清晰且中心化的方式來定義項目元數據和依賴,大大提升了開發效率和項目可維護性。
複製 Pyenv
複製 Pyenv 的儲存庫。
建議的目錄為 ~/.pyenv。
git clone https://github.com/pyenv/pyenv ~/.pyenv
0. 編譯 Bash 擴充功能以提升速度
可以編譯 Bash 擴充功能來提升效能。
即使編譯失敗,仍可正常運作。
```sh
cd ~/.pyenv && src/configure && make -C src
設定(bash) 路徑及其他設定。
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init --path)"' >> ~/.profile
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
echo -e 'if shopt -q login_shell; then'
'\n export PYENV_ROOT="$HOME/.pyenv"'
'\n export PATH="$PYENV_ROOT/bin:$PATH"'
'\n eval "$(pyenv init --path)"'
'\nfi' >> /.bashrc
echo -e 'if [ -z "$BASH_VERSION" ]; then' /.profile
'\n export PYENV_ROOT="$HOME/.pyenv"'
'\n export PATH="$PYENV_ROOT/bin:$PATH"'
'\n eval "$(pyenv init --path)"'
'\nfi' >>
# 安裝 Python 環境
## 安裝相依套件
```sh
sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncurses-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblemgma-dev -y
pyenv install -l
編譯需要一些時間,請耐心等候。
CONFIGURE_OPTS= "--enable-shared" pyenv install 3.9.5
pyenv versions
pyenv global 3.9.5