timmy / Python 虛擬環境設定(venv)
0 likes
0 forks
1 files
Last active 10 months ago
此 JSON 配置檔案用於設定 Python 虛擬環境 (venv) 的路徑,適用於編輯器(如 VS Code),確保 Python 解譯器和專案依賴管理在指定的虛擬環境 .venv 中執行。
| 1 | { |
| 2 | "venvPath": ".", |
| 3 | "venv": ".venv" |
| 4 | } |
timmy / 啟動 Python 虛擬環境 (venv)
0 likes
0 forks
1 files
Last active 10 months ago
這段 Bash 指令用於啟動 Python 虛擬環境 (venv)。虛擬環境能夠隔離 Python 依賴,避免與系統環境發生衝突。執行後,Shell 會進入 .venv 目錄下的虛擬環境,使後續的 Python 執行與套件管理都發生在該環境中。
| 1 | #!/bin/bash |
| 2 | source .venv/bin/activate |
timmy / Raspberry Pi 環境監測系統
0 likes
0 forks
3 files
Last active 10 months ago
此系統使用 Raspberry Pi 讀取 DHT11 感測器的溫濕度資料,並根據溫度範圍控制 LED 燈號。資料會定時儲存至 MySQL 資料庫,並透過 schedule 套件自動執行。程式透過 Supervisor 設定為背景服務,確保持續執行並記錄日誌。
| 1 | CREATE DATABASE environment; |
| 2 | |
| 3 | USE environment; |
| 4 | |
| 5 | CREATE TABLE environment_data ( |
| 6 | id INT AUTO_INCREMENT PRIMARY KEY, |
| 7 | humidity FLOAT NOT NULL, |
| 8 | temperature FLOAT NOT NULL, |
| 9 | recorded_at DATETIME DEFAULT CURRENT_TIMESTAMP |
| 10 | ); |
timmy / 使用 asyncio 執行非同步 Shell 命令
0 likes
0 forks
1 files
Last active 10 months ago
這段 Python 程式碼使用 asyncio 來 非同步執行系統指令,透過 asyncio.create_subprocess_exec() 建立子行程,並並行執行多個指令(如 ping 和 ls)。它適用於 非同步處理系統指令、提升效能、避免阻塞主執行緒,適合用於 自動化腳本、伺服器管理或批次處理 任務。
| 1 | import asyncio |
| 2 | |
| 3 | async def run_command(*args): |
| 4 | # 建立子行程 |
| 5 | process = await asyncio.create_subprocess_exec( |
| 6 | *args, |
| 7 | stdout=asyncio.subprocess.PIPE, |
| 8 | stderr=asyncio.subprocess.PIPE) |
| 9 | |
| 10 | # 等待子行程完成 |
timmy / 批量顯示 Python 檔案內容
0 likes
0 forks
1 files
Last active 10 months ago
這段 Bash 指令使用 find 指令在當前目錄(.)及其子目錄中 搜尋所有 .py(Python)檔案,並對每個找到的檔案執行 顯示檔名並輸出其內容。這適用於 快速查看專案中的 Python 檔案,方便 程式碼審查、備份或檢查腳本內容。
| 1 | #!/bin/bash |
| 2 | find . -name "*.py" -exec sh -c 'echo "=== {} ==="; cat "{}"; echo ""' \; |
timmy / 策略模式實作 YAML 與 JSON 資料處理
0 likes
0 forks
1 files
Last active 10 months ago
這段 Python 程式碼使用 策略模式(Strategy Pattern),定義一個 DataHandlerStrategy 介面,並實作 YAML (YamlHandler) 與 JSON (JsonHandler) 兩種不同的資料處理策略。它提供統一的 read_data 和 write_data 方法,讓程式可以根據不同的檔案格式 靈活讀取與寫入 YAML 或 JSON 檔案,適用於 配置管理、資料序列化或跨格式資料處理應用。
| 1 | import yaml |
| 2 | import json |
| 3 | from abc import ABC, abstractmethod |
| 4 | |
| 5 | # 策略介面 |
| 6 | class DataHandlerStrategy(ABC): |
| 7 | @abstractmethod |
| 8 | def read_data(self, path): |
| 9 | pass |
timmy / JWT 令牌生成與驗證
0 likes
0 forks
1 files
Last active 10 months ago
這段 Python 程式碼使用 JWT(JSON Web Token)來實現 身份驗證與授權。它首先根據 使用者資訊(ID、帳號)及 自訂金鑰 生成一個 有效期限為 30 分鐘 的 JWT,然後透過相同的金鑰來驗證 Token 的有效性,並解碼出原始資料。此機制適用於 使用者登入授權、API 驗證及安全通信,可確保請求的合法性並防止未授權的存取。
| 1 | import jwt |
| 2 | import datetime |
| 3 | |
| 4 | # 假設的使用者資訊 |
| 5 | user = { |
| 6 | 'id': 123, |
| 7 | 'username': 'exampleUser' |
| 8 | } |
| 9 | |
| 10 | # 生成 JWT |
timmy / Python 錯誤日誌記錄
0 likes
0 forks
1 files
Last active 10 months ago
| 1 | # 首先,引入 logging 模組 |
| 2 | import logging |
| 3 | |
| 4 | # 然後,建立一個 logfile,用來記錄錯誤訊息 |
| 5 | logging.basicConfig(filename="error.log", level=logging.ERROR) |
| 6 | |
| 7 | # 接下來,在你的程式中,當發生錯誤時,使用 logging.error() 來記錄錯誤訊息 |
| 8 | # 同時,把 backtrace 設定為 True,以便在錯誤發生時記錄回溯訊息 |
| 9 | try: |
| 10 | # 這裡是你的程式碼 |
timmy / 使用 Loguru 進行 Python 日誌記錄
1 likes
0 forks
1 files
Last active 10 months ago
這段 Python 程式碼使用 loguru 模組來 記錄日誌並提供詳細的錯誤追蹤,它會將日誌輸出到帶有時間戳記的 logfile_{time}.log 檔案中,並支援不同的 日誌等級(Debug、Info、Warning、Error、Critical、Success)。此外,它可以 捕捉例外(logger.exception),記錄完整的 回溯資訊(backtrace=True),並允許使用 自訂日誌等級(logger.log)。此腳本適用於 系統監控、錯誤追蹤、伺服器日誌管理,讓開發者能夠更容易 偵錯與分析程式執行狀況。
| 1 | import loguru |
| 2 | |
| 3 | loguru.logger.add("logfile_{time}.log") |
| 4 | |
| 5 | logger = loguru.logger |
| 6 | |
| 7 | logger.debug("Debug message") |
| 8 | logger.info("Info message") |
| 9 | logger.warning("Warning message") |
| 10 | logger.error("Error message") |
timmy / Brotli 壓縮與解壓縮
0 likes
0 forks
1 files
Last active 10 months ago
這段 Python 程式碼使用 brotli 模組來 壓縮與解壓縮資料。它先將 字串資料 (data) 進行 Brotli 壓縮,然後再解壓縮回原始內容,並分別輸出 壓縮後與解壓縮後的結果。Brotli 是由 Google 開發的高效能壓縮演算法,適用於 網頁資源最佳化(如 HTML、CSS、JavaScript 壓縮)、檔案儲存與傳輸最佳化,提高 傳輸速度並減少頻寬消耗。
| 1 | import brotli |
| 2 | |
| 3 | # 原始資料 |
| 4 | data = b"This is a test. This is only a test." |
| 5 | |
| 6 | # 壓縮資料 |
| 7 | compressed = brotli.compress(data) |
| 8 | |
| 9 | print("Compressed data:", compressed) |