by Rain Chu | 6 月 9, 2025 | Nginx , SERVER
在從網路上取得網頁時,如果想用 Nginx 作為反向代理器來連線一個介由 Cloudflare 保護且介面是 HTTPS 的網站,你可能會遇到一些繁複的錯誤,包括 Cloudflare Error 1001,502 Bad Gateway,或 421 Misdirected Request 等,這邊就分享一下我遇到的經驗以及如何正確設定 Nginx,反向代理一個有 SSL 保護的網站。
環境概要
Nginx 作為前端 proxy :shop.example.com
Upstream 目標 :https://target.example.com
(Cloudflare 網站)
Cloudflare 用於 DNS + CDN + WAF
1. Nginx 基礎設定
幾個重點
1.1 要聽 443 port
1.2 要設定 proxy_ssl_name, proxy_ssl_server_name
1.3 DNS 要設定 resolver
upstream secure_pool {
server target.example.com:443;
keepalive 16;
}
server {
listen 443 ssl;
server_name shop.example.com;
ssl_certificate /etc/letsencrypt/live/shop.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/shop.example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
resolver 1.1.1.1 8.8.8.8 valid=300s;
location / {
proxy_pass https://secure_pool;
proxy_ssl_server_name on;
proxy_ssl_name target.example.com;
proxy_set_header Host target.example.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header User-Agent "Mozilla/5.0 (compatible; Nginx Proxy)";
}
}
2. 常見錯誤與解決方案
❌ Error 1001 – DNS Resolution Error (Cloudflare)
原因:Cloudflare 無法解析 upstream hostname
解決:確保 Nginx 加入 resolver
設定
❌ 502 Bad Gateway
原因:upstream HTTPS 連線失敗
解決:
proxy_pass
設為 https://...
proxy_ssl_server_name on;
加入 proxy_ssl_name
+ Host
不要用 $host
❌ 421 Misdirected Request
原因:SNI 與 Host header 不符
解決:
proxy_ssl_name target.example.com;
proxy_set_header Host target.example.com;
3. Debug 技巧
看 error log 解答還原:
用 curl 測試 upstream 是否支援 HTTPS
4. 結論
要用 Nginx 來反向代理一個 SSL 網站,最重要的是使 Nginx 能「知道」你的 upstream 是 HTTPS,且 TLS SNI 與 Host 項目必須一致。
by Rain Chu | 5 月 12, 2025 | AI , 語音合成
Speech Synthesis 是一款免費的線上文字轉語音工具,支援超過 40 種語言和數百種語音選擇,並可自訂語調(SSML)、節奏與語氣,讓語音更貼近您的需求。
🔑 主要特色
多語言支援 :涵蓋繁體中文、粵語、英語、日語等多種語言,滿足全球用戶的需求。
多樣化語音選擇 :提供數百種語音,包括不同性別、年齡和口音的選項。
自訂語音參數 :可調整語速(如 x-slow、slow、medium、fast、x-fast)、語調和音量,打造個性化的語音輸出。
支援 SSML :支援語音合成標記語言(SSML),讓進階用戶能夠更精細地控制語音輸出。
多種音訊格式 :可選擇 MP3、WAV 等格式,並提供不同的音質設定,如 16kHz-128k、24kHz-160k、48kHz-192k。
🧪 使用方式
前往 Speech Synthesis 官方網站 。
在「TEXT」欄位輸入您要轉換的文字,或上傳文件。
選擇語言和語音,並調整語速、語調和音量等參數。
點擊「合成語音」按鈕,系統將生成語音檔案。
試聽並下載生成的語音檔案。
🔍 與其他熱門 TTS 工具的比較
工具名稱 語言支援數 語音選擇數 自訂參數 支援 SSML 價格 Speech Synthesis 40+ 數百種 ✅ ✅ 免費 TTSMaker 100+ 600+ ✅ ✅ 免費 Google Text-to-Speech 30+ 220+ ✅ ✅ 免費(有使用限制) MyEdit 26+ 多種 ✅ ❌ 免費
參考資料
by Rain Chu | 4 月 26, 2025 | Python , 程式
UIAutoDev 是一款不可或缺的工具,它支援 Android 和 iOS 平台,提供直觀的圖形介面,讓開發者能夠輕鬆地定位 UI 元素、生成選擇器,並進行色彩分析。
UIAutoDev UI DEMO
🔧 UIAutoDev 的核心特色
1. 支援 Android 和 iOS 平台
UIAutoDev 同時支援 Android 和 iOS 裝置的 UI 元素檢視與操作。對於 iOS,用戶需自行啟動 WebDriverAgent(WDA)服務,以實現與裝置的連接。
2. 直觀的控件選擇與屬性檢視
透過滑鼠點選應用程式中的控件,UIAutoDev 會即時顯示該元素的屬性資訊,如 resource-id
、text
、class
等,並在控件樹中高亮顯示,方便用戶精確定位。
3. 自動生成 XPath 選擇器
UIAutoDev 能夠根據選取的控件,自動生成多個 XPath 選擇器,並標示每個選擇器匹配的元素數量,協助用戶選擇最合適的定位方式。
4. 色彩分析與坐標微調
工具提供找色功能,允許用戶獲取指定位置的 RGB 和 HSB 色值。同時,透過方向鍵微調坐標,精確定位需要操作的區域,提升自動化腳本的準確性。
🚀 安裝與使用指南
1. 安裝 Python 環境
確保系統已安裝 Python 3.8 或以上版本。
2. 安裝 UIAutoDev
在終端機中執行以下命令:
3. 啟動 UIAutoDev
安裝完成後,執行以下命令啟動工具:
啟動後,瀏覽器將自動打開 UIAutoDev 的網頁介面。
4. 連接裝置
Android :啟用開發者選項並允許 USB 偵錯,使用 USB 或 Wi-Fi 連接裝置。
iOS :啟動 WebDriverAgent(WDA)服務,並確保裝置與電腦在同一網路下。
5. 使用工具進行 UI 元素定位
在網頁介面中選擇已連接的裝置。
點擊「刷新」按鈕,同步裝置當前畫面。
使用滑鼠點選畫面中的控件,查看其屬性資訊,並在右側控件樹中進行導航。
利用自動生成的 XPath 選擇器,快速編寫自動化腳本。
🧪 實際應用範例
可以先看DEMO
以下是一段使用 uiautomator2
與 UIAutoDev 結合的 Python 腳本範例:
import uiautomator2 as u2
# 連接到裝置
d = u2.connect()
# 啟動應用程式
d.app_start("com.example.app")
# 點擊指定的控件
d(resourceId="com.example.app:id/button").click()
# 輸入文字
d(resourceId="com.example.app:id/input").set_text("測試輸入")
# 關閉應用程式
d.app_stop("com.example.app")
透過 UIAutoDev 提供的控件屬性資訊,您可以輕鬆取得 resource-id
等屬性,快速編寫上述腳本。
參考資料
https://testerhome.com/topics/40069
by Rain Chu | 4 月 26, 2025 | 3D , AI
OpenAI 推出了兩款開源的 3D 建模工具:Point-E 和 Shap-E ,分別專注於從文字或圖片生成 3D 模型,接下來介紹這兩個模型的核心特性、技術架構、使用方法,並比較它們的優缺點,協助您選擇最適合的工具。
🔍 Point-E:快速生成 3D 點雲的 AI 工具
📌 核心特點
輸入類型 :支援文字描述或 2D 圖片。
輸出格式 :生成彩色點雲(point cloud),可轉換為網格(mesh)。
處理速度 :在單張 GPU 上約需 1–2 分鐘。
技術架構 :採用兩階段擴散模型,先生成合成視圖,再生成點雲。
應用場景 :快速原型設計、教育用途、遊戲開發等。
🧪 使用方法
安裝 :
生成點雲 :
🧠 Shap-E:生成高品質 3D 隱式模型的 AI 工具
📌 核心特點
輸入類型 :支援文字描述或 2D 圖片。
輸出格式 :生成隱式函數,可渲染為帶紋理的網格或神經輻射場(NeRF)。
處理速度 :在單張 GPU 上可於數秒內生成。
技術架構 :先訓練編碼器將 3D 資產映射為隱式函數參數,再訓練條件擴散模型生成 3D 模型。
應用場景 :高品質 3D 資產創建、AR/VR 應用、3D 列印等。
🧪 使用方法
安裝 :
生成 3D 模型 :
使用 sample_text_to_3d.ipynb
或 sample_image_to_3d.ipynb
範例筆記本。
可將生成的模型導出為常見的 3D 格式,供進一步編輯或列印。
⚖️ Point-E 與 Shap-E 的比較
特性 Point-E Shap-E 輸入類型 文字、圖片 文字、圖片 輸出格式 彩色點雲,可轉為網格 隱式函數,可渲染為網格或 NeRF 處理速度 約 1–2 分鐘 數秒內 模型架構 兩階段擴散模型 編碼器 + 條件擴散模型 輸出品質 中等,適合快速原型設計 高品質,適合精細 3D 資產創建 應用場景 快速原型、教育、遊戲開發 高品質 3D 資產、AR/VR、3D 列印等
🧩 適用場景建議
Point-E :適合需要快速生成 3D 模型的場景,如教育、初步設計、遊戲開發等。
Shap-E :適合對 3D 模型品質要求較高的場景,如 AR/VR 應用、3D 列印、動畫製作等。
🔗 資源連結
參考資訊
VIDEO
VIDEO
by Rain Chu | 4 月 21, 2025 | AI , Chat , 程式開發 , 語音辨識
GibberLink 是一項創新的開源專案,讓 AI 助理之間以更高效的方式進行音頻對話。這項技術於 2025 年的 ElevenLabs 倫敦黑客馬拉松中脫穎而出,獲得了全球首獎。
🔍 GibberLink 是什麼?
GibberLink 是由 Boris Starkov 和 Anton Pidkuiko 兩位開發者在黑客馬拉松期間開發的開源專案。其核心理念是讓 AI 助理在識別到對方也是 AI 時,切換到一種更高效的通訊協議,使用聲波傳輸結構化數據,而非傳統的人類語言。這種方式不僅提高了通訊效率,還減少了計算資源的消耗。
⚙️ GibberLink 的運作原理
初始對話 :兩個 AI 助理以人類語言開始對話。
身份識別 :當其中一方識別到對方也是 AI 助理時,提出切換到 GibberLink 模式。
協議切換 :雙方同意後,切換到使用聲波傳輸數據的通訊協議。
數據傳輸 :利用開源的 ggwave 庫,將結構化數據編碼為聲波信號,進行高效的數據交換。
這種方式類似於早期撥號調製解調器的數據傳輸,但經過現代化的優化,更適合當前的 AI 通訊需求。
🔐 AI 加密對話的實現
GibberLink 不僅提高了通訊效率,還注重數據的安全性。在進行聲波數據交換時,AI 助理會使用非對稱加密技術(如 P-256 密鑰對)進行加密,確保通訊內容的保密性和完整性。這種端對端的加密方式,即使通訊被攔截,也無法解密其中的內容。
🌐 如何體驗 GibberLink?
🏆 為何值得關注?
高效通訊 :GibberLink 模式下的 AI 對話比傳統語音通訊快約 80%,大幅提升了通訊效率。
資源節省 :減少了語音生成和語音識別的計算資源消耗,降低了運營成本。
安全保障 :採用先進的加密技術,確保通訊內容的安全性。
開源共享 :開源的特性使得開發者可以自由使用、修改和擴展該技術。
🔧 GibberLink 安裝與本地部署教學
GibberLink 是一個開源專案,您可以在本地環境中部署並體驗 AI 之間的聲音通訊。
1. 安裝 Node.js(建議版本:v20)
GibberLink 需要 Node.js 環境,建議使用 v18.18.0 或更高版本。以下是使用 NVM 安裝 Node.js 的步驟:
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20
nvm alias default 20 # 可選,將 Node.js 20 設為預設版本
2.下載並設定 GibberLink 專案
git clone https://github.com/PennyroyalTea/gibberlink.git
cd gibberlink
mv example.env .env
並且編輯 .env
檔案,填入您的 ElevenLabs 和 LLM 提供者的 API 金鑰。
3.安裝相依套件並啟動專案
啟動後,您可以透過瀏覽器訪問 http://localhost:3003
來使用 GibberLink。
參考資料
近期留言