timmy / 使用 addaudithook 監聽 Python 審計事件
0 likes
0 forks
1 files
Last active 9 months ago
addaudithook 可用來監聽 Python 內部的安全性相關事件,例如模組導入、檔案存取或執行系統命令,可用於安全監控、日誌記錄或限制不安全的操作。
| 1 | import sys |
| 2 | |
| 3 | def audit_hook(event, args): |
| 4 | print(f"Audit event: {event}, Arguments: {args}") |
| 5 | |
| 6 | # 註冊審計鉤子 |
| 7 | sys.addaudithook(audit_hook) |
| 8 | |
| 9 | # 觸發一些事件 |
| 10 | open("test.txt", "w").write("Hello") # 檔案寫入事件 |
timmy / 讀取 .env 環境變數
0 likes
0 forks
1 files
Last active 9 months ago
使用 dotenv 套件從 .env 檔案載入環境變數,適用於配置 API 金鑰、資料庫連線等設定,避免將敏感資訊直接寫入程式碼。
| 1 | import os |
| 2 | from pathlib import Path |
| 3 | from dotenv import load_dotenv |
| 4 | |
| 5 | BASE_DIR = Path(__file__).resolve().parent |
| 6 | ENV_PATH = BASE_DIR.parent / "config" / ".env" |
| 7 | |
| 8 | load_dotenv(ENV_PATH) |
| 9 | |
| 10 | # 讀取環境變數 |
timmy / Python 字串格式化
0 likes
0 forks
1 files
Last active 9 months ago
Python 提供多種字串格式化方法,f-string(Python 3.6+)更直觀且效能較佳,而 str.format() 適用於較舊版本。這些方法常用於動態組合字串,如建立 URL、日誌輸出或命令構造。
| 1 | url = f"http://localhost:{args.port}" |
| 2 | |
| 3 | url = "http://localhost:{}".format(args.port) |
timmy / 使用 multiprocessing 啟動多個 Flask 伺服器
0 likes
0 forks
1 files
Last active 9 months ago
| 1 | from flask import Flask |
| 2 | import multiprocessing |
| 3 | |
| 4 | # 建立 Flask 應用程式 |
| 5 | def create_app(port): |
| 6 | app = Flask(__name__) |
| 7 | |
| 8 | @app.route('/') |
| 9 | def home(): |
| 10 | return f"Hello from port {port}!" |
timmy / 使用 threading.Timer 延遲開啟網頁
0 likes
0 forks
1 files
Last active 9 months ago
此程式透過 threading.Timer 延遲指定秒數後,自動開啟指定的 URL。適用於自動化測試、提醒功能或延遲啟動特定網頁,確保主程式不中斷的情況下執行非同步操作。
| 1 | import threading |
| 2 | import webbrowser |
| 3 | |
| 4 | def open_url(url): |
| 5 | """ 開啟指定的 URL """ |
| 6 | webbrowser.open(url, new=2) |
| 7 | |
| 8 | # 設定延遲時間(秒) |
| 9 | delay = 2 |
| 10 | url = "https://www.example.com" |
timmy / 使用 Streamlit st.session_state 管理可編輯 DataFrame
0 likes
0 forks
1 files
Last active 9 months ago
透過 st.session_state 讓 Streamlit 應用能夠保存並管理可編輯的 DataFrame,避免頁面重整導致資料丟失,適用於數據管理與即時編輯應用。
| 1 | import streamlit as st |
| 2 | import pandas as pd |
| 3 | |
| 4 | def main(): |
| 5 | # 初始化 session_state |
| 6 | if "data" not in st.session_state: |
| 7 | st.session_state.data = pd.DataFrame({ |
| 8 | "ID": [1, 2, 3], |
| 9 | "Name": ["Alice", "Bob", "Charlie"], |
| 10 | "Age": [25, 30, 35], |
timmy / Flask Google OAuth2 登入
0 likes
0 forks
2 files
Last active 9 months ago
使用 Flask 和 Authlib 整合 Google OAuth2,透過 OpenID Connect 進行身份驗證,讓使用者能安全登入應用程式。實作包括 authorize_redirect 及 parse_id_token,確保驗證的完整性與安全性。
| 1 | GOOGLE_CLIENT_ID=你的 Google Client ID |
| 2 | GOOGLE_CLIENT_SECRET=你的 Google Client Secret |
timmy / 進階 Mixin 設計與用戶管理
0 likes
0 forks
1 files
Last active 10 months ago
此 Python 程式使用多個 Mixin,提供日誌記錄、時間標記、資料儲存、權限管理、事件監聽與異常處理功能,使 User 類別具備完整的資料管理與行為追蹤能力,適用於使用者管理與系統監控應用。
| 1 | import datetime |
| 2 | import json |
| 3 | import traceback |
| 4 | |
| 5 | class LoggingMixin: |
| 6 | """ 提供日誌功能的 Mixin 類別 """ |
| 7 | |
| 8 | def log(self, message): |
| 9 | """ 記錄日誌 """ |
| 10 | timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") |
timmy / 進階 Mixin 設計與用戶管理
0 likes
0 forks
1 files
Last active 10 months ago
此 Python 程式使用多個 Mixin,提供日誌紀錄、時間標記、數據儲存與權限管理功能,適用於構建可擴展的用戶管理系統,提升代碼的模組化與可重用性。
| 1 | import datetime |
| 2 | |
| 3 | class LoggingMixin: |
| 4 | """ 提供日誌功能的 Mixin 類別 """ |
| 5 | |
| 6 | def log(self, message): |
| 7 | """ 簡單的日誌紀錄方法 """ |
| 8 | timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") |
| 9 | print(f"[{timestamp}] {self.__class__.__name__}: {message}") |