timmy / IP 位址查詢與解析
0 likes
0 forks
1 files
Last active 10 months ago
這個 Bash 腳本用於 查詢目前裝置的公網 IP 及其地理資訊。它會先檢查系統是否安裝了 curl 和 jq(jq 用於解析 JSON),然後使用 curl 向 ip-api.com 發送請求,獲取目前裝置的 IP 位址、國家、城市、ISP、時區等資訊,並透過 jq 以可讀格式輸出。這適用於 網路診斷、IP 追蹤、地理位置查詢或伺服器網路狀態檢測。
| 1 | #!/bin/bash |
| 2 | |
| 3 | SHELL=/bin/sh |
| 4 | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin |
| 5 | TZ="Asia/Taipei" |
| 6 | export PATH |
| 7 | export LANG=en_US.UTF-8 |
| 8 | export LANGUAGE=en_US:en |
| 9 | |
| 10 | # Check if curl is installed |
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) |
timmy / 工廠方法模式的本地化翻譯
0 likes
0 forks
1 files
Last active 10 months ago
這段 Python 程式碼使用 工廠方法模式(Factory Method Pattern)來實現 多語言在地化(Localization)。它定義了 English(英文)、Greek(希臘文)、Chinese(中文)三種 Localizer 類別,透過 get_localizer(language) 方法 根據指定語言動態選擇適當的翻譯器。 執行時,程式會將 "dog parrot cat bear" 逐字進行翻譯,並輸出對應語言的結果。這適用於 國際化(i18n)開發、跨語系應用程式、系統訊息翻譯 等場景,讓程式能 彈性支援不同語言。
| 1 | #!/usr/bin/env python |
| 2 | # -*- coding: utf-8 -*- |
| 3 | |
| 4 | |
| 5 | """ |
| 6 | factory.py: 工廠方法模式的範例程式 |
| 7 | |
| 8 | Author: Timmy |
| 9 | Copyright: Copyright 2022, Timmy |
| 10 | 授權方式: MIT |
timmy / DNSBL 黑名單查詢工具
0 likes
0 forks
1 files
Last active 10 months ago
這段程式碼是一個 DNSBLChecker 工具,用於檢查指定的 IP 是否被列入常見的 DNS 黑名單(DNSBL)。支持動態添加或移除 DNSBL 提供者,並顯示檢查結果,包括列入的黑名單列表。
| 1 | import dns.resolver |
| 2 | |
| 3 | class DNSBLChecker: |
| 4 | def __init__(self, providers=None): |
| 5 | """ |
| 6 | 初始化 DNSBLChecker,允許自定義 DNSBL 提供者列表。 |
| 7 | :param providers: DNSBL 提供者列表 (可選,默認為常用黑名單提供者) |
| 8 | """ |
| 9 | self.providers = providers or [ |
| 10 | "zen.spamhaus.org", |
timmy / 使用 Lit 建立 Web Component
0 likes
0 forks
1 files
Last active 10 months ago
這段 HTML 結合 Lit(透過 CDN 載入),建立了一個自訂 Web 元件 <simple-greeting>,用於 顯示問候語。該元件支援 name 屬性,可動態變更顯示的名稱,並透過 LitElement 定義樣式與繪製邏輯。這適用於 前端 UI 元件開發、動態內容繪製,並展示了如何使用 Web Components 來構建 可重用、獨立且輕量的前端元件。
| 1 | <!DOCTYPE html> |
| 2 | <html lang="zh-TW"> |
| 3 | <head> |
| 4 | <meta charset="UTF-8"> |
| 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | <title>Lit CDN Example</title> |
| 7 | </head> |
| 8 | <body> |
| 9 | <!-- 自定義元件 --> |
| 10 | <simple-greeting name="Lit"></simple-greeting> |
timmy / 使用 Lit 建立互動式年份時間軸
0 likes
0 forks
1 files
Last active 10 months ago
這段 HTML + Lit 程式碼使用 Web Components 技術,建立了一個 年份時間軸 (<timeline-element>),用於 以視覺化方式顯示歷史事件或時間序列。它包含 多個事件 (<event-element>),每個事件都有標題和描述,並根據奇偶數自動 排列在時間軸的左右兩側。此時間軸支援 動態效果(懸停陰影、點擊事件),並針對 手機響應式調整顯示方式,適用於 歷史紀錄、產品發展時間軸、事件展示 等場景,提供 互動性高、現代化的時間軸視覺呈現。
| 1 | <!doctype html> |
| 2 | <html lang="zh-Hant"> |
| 3 | <head> |
| 4 | <meta charset="UTF-8" /> |
| 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| 6 | <title>年份時間軸 - Lit 元素</title> |
| 7 | <style> |
| 8 | body { |
| 9 | font-family: "Microsoft JhengHei", Arial, sans-serif; |
| 10 | background-color: #f0f0f0; |