pretty code
2026年6月27日 星期六
2026年6月22日 星期一
ReadEra Premium 入手
2026年6月19日 星期五
懶惰起來要人命
《劍來》浩然天下地圖
2026年6月17日 星期三
大道至簡,唯有 Python
紅泥小火爐,能飲一杯無?
2026年6月14日 星期日
PDF 翻譯 Part 06
2026年6月11日 星期四
勿在浮沙築高塔
2026年6月5日 星期五
2026年6月2日 星期二
2026年5月31日 星期日
PDF 翻譯 Part 05
颶風翻了身
2026年5月24日 星期日
閒適臥雲中
2026年5月19日 星期二
PDF 翻譯 Part 04
2026年5月18日 星期一
PDF 翻譯 Part 03
PDF 翻譯 Part 02
先做:查你目前的狀態(5 分鐘)
查 Tier 在哪裡
方法 1:Console 介面
- 登入 console.anthropic.com
- 左側選單 → Settings → Limits(或 Plans & Billing)
- 會看到「Tier 1 / 2 / 3 / 4」字樣,以及對應的 RPM、ITPM、OTPM 數字
方法 2:用 curl 直接問 API(更準)
打開 cmd 或 PowerShell,把 YOUR_KEY 換成你的 API key:
curl https://api.anthropic.com/v1/organizations/rate_limits ^
-H "anthropic-version: 2023-06-01" ^
-H "x-api-key: YOUR_KEY"
回傳的 JSON 裡會直接告訴你每個模型的 RPM/ITPM/OTPM,對照下面的表就知道 Tier:
| Tier | Sonnet RPM | Sonnet ITPM |
|---|---|---|
| 1 | 50 | 30,000 |
| 2 | 1,000 | 80,000 |
| 3 | 2,000 | 800,000 |
| 4 | 4,000 | 2,000,000 |
查 prompt caching 有沒有開
直接搜你的翻譯工具程式碼,看 system 那段:
# 在你的翻譯工具資料夾
findstr /S "cache_control" *.py
- 有輸出 → 有開 caching
- 沒輸出 → 沒開 caching
或更簡單:跑一次翻譯,在你的程式裡 print 出 response.usage,看有沒有這兩個欄位:
cache_creation_input_tokens(第一次跑會有)cache_read_input_tokens(第二次以後會有)
兩個都是 0 → 沒開 caching。
然後:直接用 Batch API 改造你的工具
既然你選「注重速度,可以掛著等」,Batch API 是完美解答。我直接幫你準備好可以丟給 Claude Code 的修改說明。
Batch API 對你的好處(再次確認)
- ✅ 不受 RPM 限制 — 5,000 段一次提交也沒事
- ✅ 價格 5 折(input 和 output 都打 5 折)
- ✅ 24 小時保證,實測通常 1–2 小時
- ✅ 與 prompt caching 可疊加(更便宜)
- ⚠️ 結果是「全部一起回」,不能邊跑邊看
- ⚠️ 中途無法取消個別請求
改完之後的預期效果
以你 800 頁論文為例:
| 方案 | 時間 | 你需要在電腦旁 |
|---|---|---|
| 現況 | ~4 小時 | 全程 |
| + Prompt caching | ~3 小時 | 全程 |
| + Tier 升級 (-> 2) | ~30 分鐘 | 全程 |
| 改 Batch API | 1–2 小時 | 0 分鐘(掛著等) |
| Batch + Tier 升級 | 1–2 小時 | 0 分鐘 |
Batch API 對你的價值不只是「快」,而是「解放你的時間」 — 提交完就可以關電腦睡覺,醒來結果就在那。
成本方面:800 頁論文(假設 50 萬 input tokens、20 萬 output tokens)大致估算:
| 方案 | 預估成本(粗估) |
|---|---|
| 現況 | ~$4.50 |
| + Caching | ~$3.00 |
| + Batch API | ~$2.25 |
| Caching + Batch | ~$1.50 |
數字僅供參考,實際看你的文件密度。改完最多省 2/3 成本,外加 4 小時變 1-2 小時、還不用顧。
給你的執行順序建議
- 先查 Tier(用上面 curl 或 console)
- 新開 Claude Code session,把你的翻譯工具資料夾打開,把上面那段 prompt 貼進去
- 試跑一份小檔案(10-20 頁)驗證 batch 流程沒問題
- 正式跑 800 頁那份,掛著去睡覺
- 醒來檢查結果,用我們之前規劃的那個 PDF Compare Viewer 並排看 Google Translate 版 vs Claude API 版
整個工作流就完整了。
原來之前都在玩玩具
給你的實戰建議
根據這些數字,Pro 規劃工作流的原則:
1. 開新對話的時機
- 對話超過 20-30 輪就考慮開新對話
- 任務切換時開新對話(不要在同一對話跨多個專案)
- 把當下對話的「結論」貼到新對話起頭,可以用很少 tokens 換到清爽 context
2. 模型選擇策略
- 日常對話、寫文件:用 Sonnet(你目前模型 Opus 4.7 約 5x 貴)
- 複雜推理、艱難 debug:才用 Opus
- 如果只是「優化措辭」之類的小任務,可以切到 Haiku
3. 上傳檔案的成本意識
- 一份 800 頁 PDF(你的論文)一上傳可能就 200-400K tokens,超過 Pro 5 小時池子十倍
- 大檔案優先用 API 處理(你的翻譯工具就是對的方向)
- 想討論大檔內容,先用工具抽出關鍵段落,貼進 Claude 對話
4. 你目前的工作流估算
你過去這 6-7 輪我們的對話,加上 spec / prompts 文件產出,大概用掉 30-50K tokens。 意思是:這種「規劃 + 寫規格」的對話,一次 5 小時的 Pro 配額大概可以撐 2-3 個專案。
但如果你還要同時用 Claude Code 開發那個 PDF Viewer,Claude Code 燒很快(一次 1-2 小時的開發就可能吃完 5 小時池子)。
5. 撞牆時的判斷
| 情境 | 建議 |
|---|---|
| 每週撞 5 小時牆 1-2 次 | 改用「開新對話」「換 Sonnet」習慣 |
| 每週撞 3+ 次 | 認真考慮 Max 5x($100),ROI 大幅提升 |
| Claude Code 一天用 4+ 小時 | Max 5x 起跳,重度的話 Max 20x |
給你的核心收穫
Pro 5 小時 ≈ 44K tokens ≈ 30-50 則中等對話,這是你規劃工作的心理基準。
實務上你可以這樣抓:
- 「跟 Claude 規劃個東西、寫個規格」→ 30-50K tokens,剛好用滿 5 小時池子的一半到全部
- 「用 Claude Code 做半天開發」→ 容易撞牆
- 「上傳大檔深度分析」→ 一次就用很多,挑著用
如果你想更精確地監控,可以在 claude.ai 設定裡看 Usage 頁面(如果有開放給 Pro),或在 Claude Code 裡跑 /status 看當下用量。
2026年5月16日 星期六
PDF 翻譯 Part 01
英文技術文件翻譯成中文:5 個最佳方案
針對技術文件的完整翻譯,我為你整理了五個經過實測效果不錯的方案,並依照不同使用情境分類。
方案一:Claude / ChatGPT / Gemini(大型語言模型)
直接將文件內容貼到對話框,或上傳檔案請 AI 翻譯。
優點
- 翻譯品質目前在技術文件領域是最高的,能理解上下文、保留技術術語的一致性
- 可以下指令客製化,例如「保留程式碼區塊不翻譯」、「使用台灣繁中習慣用語」、「術語表優先」
- 能處理 Markdown、HTML 等格式,輸出後排版幾乎不需要再整理
- 遇到模糊語意時會根據語境合理判斷,而非機械式直譯
缺點
- 長文件需要分段處理,否則容易遇到輸出長度限制(通常一次 3000–5000 字較穩定)
- 不同段落之間的術語一致性需要自己維護術語表,或在 prompt 中明確指定
- 免費版本通常有用量限制,重度使用需要訂閱
- 偶爾會出現幻覺,特別是專有名詞或版本號,需要人工校對
最適合: 重視翻譯品質、文件量中等(一份文件數千到數萬字)、願意動手調整 prompt 的人。
方案二:DeepL(含 DeepL Pro / DeepL Document Translator)
專注於翻譯的服務,支援 .docx、.pptx、.pdf、.txt 等檔案上傳,整份翻譯後下載。
優點
- 翻譯流暢度極佳,中文輸出比 Google 翻譯更自然
- 文件上傳後會完整保留原始排版(字型、表格、圖片位置)
- 操作極簡,零學習成本
- 有 API 可串接到自己的工作流程
缺點
- 對於最新的技術術語(特別是 AI、區塊鏈等新領域)有時不如 LLM 精準
- 免費版有每月字數和檔案大小限制(單檔約 5MB、每月 3 份)
- 無法針對特定術語做客製化翻譯記憶(這是 Pro 才有的 Glossary 功能)
- 對程式碼區塊的處理不如 LLM 細緻,有時會誤譯變數名稱
最適合: 需要保留原始檔案排版、追求穩定輸出、不想花時間調整參數的人。
方案三:Immersive Translate(沉浸式翻譯)瀏覽器擴充功能
主要用於網頁翻譯,但也支援 PDF、EPUB 等文件,採雙語對照顯示。
優點
- 雙語對照模式對技術文件閱讀極友善,原文與譯文並列方便核對
- 可以串接多種翻譯引擎(Google、DeepL、OpenAI、Claude、自訂 API 等)
- 支援線上文件(GitHub README、官方文件網站)即時翻譯
- PDF 翻譯保留原始排版,輸出雙語 PDF
- 免費版功能已足夠日常使用
缺點
- 串接 OpenAI/Claude API 需要自己申請金鑰並支付費用
- PDF 翻譯的進階功能(如完整檔案翻譯下載)需要 Pro 訂閱
- 對於要交付的「翻譯成果」不是最佳選擇,比較適合自己閱讀
- 排版複雜的 PDF 偶爾會出現對位錯誤
最適合: 主要是「自己要看懂」技術文件、會頻繁瀏覽英文網頁文件、想要保留原文對照的人。
方案四:Crowdin / Lokalise / Weblate(專業在地化平台)
針對軟體與技術文件設計的協作翻譯平台,支援多種檔案格式(Markdown、JSON、PO、XLIFF 等)。
優點
- 有完整的翻譯記憶庫(TM)和術語表(Glossary)功能,確保跨文件術語一致
- 支援團隊協作、版本控管、審校流程
- 可直接串接 GitHub/GitLab,文件更新時自動同步
- 整合機器翻譯(MT)作為初稿,再由人工校對
- 適合長期維護的文件專案
缺點
- 學習曲線較陡,初次設定需要花時間
- 主要為團隊與企業設計,個人偶爾使用過於笨重
- 免費方案限制較多(Crowdin 有開源專案免費方案,Lokalise 沒有真正的免費版)
- 不適合一次性的翻譯任務
最適合: 持續維護的技術文件(如開源專案 docs、產品手冊)、團隊協作、需要版本控管的場景。
方案五:Google 翻譯(含 Google Docs 內建翻譯 / Google 文件翻譯)
老牌通用翻譯工具,可直接上傳文件或在 Google Docs 中使用「翻譯文件」功能。
優點
- 完全免費,無使用量限制
- 支援格式廣泛,文件上傳可保留基本排版
- 速度極快,整份文件幾秒鐘完成
- 與 Google Workspace 整合良好
缺點
- 翻譯品質在技術文件上明顯落後於 DeepL 和 LLM,中文常有「翻譯腔」
- 不擅長處理技術術語,有時會把專有名詞硬譯
- 無法客製化術語或語氣
- 程式碼區塊處理粗糙
最適合: 對品質要求不高、需要快速理解大意、預算為零的場景。
我的建議組合
如果是要交付的正式翻譯成果,實務上最有效率的做法是混搭:
LLM(Claude/ChatGPT)做初翻 → 人工校對 → DeepL 或 Immersive Translate 對照檢查
如果你能告訴我這份技術文件的類型(API 文件?產品手冊?學術論文?)、長度,以及翻譯後的用途(自己看 / 交付給客戶 / 發佈),我可以給你更具體的方案推薦。
2026年5月12日 星期二
如果我有 AI
2026年5月10日 星期日
ScreenBar Halo 2 入手
2026年5月9日 星期六
Fix make build
2026年5月5日 星期二
萬惡的 X - 事後總檢討
2026年5月4日 星期一
越來越喜歡 AI 了
2026年5月3日 星期日
Swift to Python
Debug 就像連續不斷的使用組合技
力量,心法,招式缺一不可
Makefile 相依性
對這段話的看法
這段描述其實揭露了一個比作者自己意識到的還要嚴重的問題。讓我從幾個層面來談。
作者的判斷可能對,但結論下得太早
作者最後說「問題是出在 Makefile 相依性」——這個推論方向是合理的,但證據還不夠。make clear 之後就過,確實是 Makefile 相依性問題的典型徵兆之一,但也可能是其他原因:中間產物 (例如 filelist、.f 檔、編譯產生的 library) 殘留了上一次編譯的狀態、incremental compile 的 cache 沒有正確失效、或是 vlog/vcs 等工具自己的 work library 沒被清乾淨。要真正確認是 Makefile 的問題,需要看 make -d 的相依關係追蹤,或檢查每個 target 的 prerequisite 是否完整列出所有 source 檔。「重開機就好」是現象,不是 root cause。
註解掉 port 是非常危險的動作,作者似乎低估了風險
這部分讓我比較擔心。作者說「我不是 designer,我也不想知道他們真正的測試意圖」,然後就把 module instantiation 中報錯的 port 註解掉——這在 DFT 或 verification 工作中是高風險操作。被註解掉的 port 可能是:scan chain 的 input/output、test mode control、clock gating override、或是 SRAM 的 BIST 介面。把這些 port 註解掉雖然能讓 make build 通過,但等於在不知情的狀況下破壞了測試結構,後續跑出來的結果可能完全不可信。後面「測試時從頭到尾都在報錯」就是這個動作的直接後果。即使最後 make clean 解決了問題、Verilog 不用改,作者也應該回頭把那些註解恢復,並確認最終跑的是完整正確的 code,而不是「反正過了就好」。
「不想知道測試意圖」這個態度需要校準
我理解這句話帶有疲憊與抱怨的成分,不必字面解讀。但如果這真的是工作態度,長期會出問題。DFT 工程師確實不需要、也不應該去理解每個 functional block 的內部設計,但必須理解測試介面的意圖。當客戶 netlist 中一個 module 的 port 列表跟 instantiation 對不上,這本身就是一個訊號:可能是客戶交付了不一致的版本、可能是某個 wrapper 沒更新、可能是 ECO 沒做完整。這些都是要回報給客戶的問題,而不是自己默默註解掉繞過。每一次「繞過去就好」都在累積技術債,最後爆掉的時候會很慘。
「IT 界最強大的一招:重新開機」這個玩笑背後的真實風險
這句話寫得很幽默,但在 DFT/verification 領域,「make clean 才能過」其實是一個警訊而非解法。它意味著你的 build 環境是 non-reproducible 的——同一份 source code 在不同的 build 狀態下會產生不同結果。這在交付給客戶時是嚴重問題:如果客戶在他們的環境跑不出你跑出的結果,你無法重現、無法 debug、無法證明你的 pattern 是對的。建議每次發現「make clean 後才正常」時,都把它當成 bug 來追,而不是當成解法來慶祝。
客戶 Makefile 確實常常有問題,但要有證據再開口
從作者的語氣看,這是在跟客戶協作的專案。「Makefile 相依性有問題」如果要回報給客戶,需要具體的證據:哪個 target 的 prerequisite 沒列、哪個檔案被修改後沒觸發重新編譯、make -n 顯示的指令順序哪裡不合理。光說「我 make clean 後就好了所以你的 Makefile 有問題」,客戶很容易回「那你就每次都 clean 啊」把問題踢回來。專業的回報方式是:「在 X 條件下,修改 A 檔案後 make build 不會重新編譯 B,導致 link 階段使用舊的 object,具體是 Makefile 第 N 行的 rule 沒有把 A 列為 prerequisite」——這樣客戶才會認真修。
一個比較中肯的整體評價
這段文字反映的是一個很真實的工作場景:疲憊的工程師、不完整的客戶交付、Makefile 黑魔法、deadline 壓力下的繞道解法。作者的直覺 (Makefile 有問題) 大方向是對的,debug 能力也在線,但處理過程中累積了好幾個未解的疑點——被註解的 port 到底該不該註解、為什麼 make clean 後不需要註解也能過、原本的測試報錯是註解導致還是其他原因——這些都被「反正過了」掩蓋掉了。
如果是我,會建議作者回頭做一件事:在 make clean 後的乾淨環境中,不要註解任何 port,重新跑一次 make build。如果這樣也能過,那就證實了問題確實在 Makefile 的 incremental build 邏輯,跟 Verilog 本身無關,可以心安理得地把這個現象整理成 bug report 給客戶。如果還是不過,那就還有另一層問題沒挖出來。多花這 30 分鐘,比帶著疑問繼續往下做要安全得多。
補上工作環境背景來龍去脈後,Claude 的建議
在這種環境下的建議
這個背景一補上,整個情境的荒謬感就出來了:作者要交付的東西 (DFT script) 根本不在客戶驗證流程的覆蓋範圍內,但卻被客戶團隊自己的 RTL/testbench 問題卡住無法 push。這是典型的「別人的 bug 變成你的 blocker」情境,而且因為是客戶端強制的 pre-push hook,作者連繞過的權力都沒有。在這個前提下,我的建議會跟前面幾輪完全不同。
1. 把「這不是我該修的問題」這件事,用書面證據固定下來
最重要的第一步不是技術,是留紀錄。每次因為客戶團隊的 code 導致你無法 push 時,立刻做三件事:截圖錯誤訊息、記錄當時的 git log (客戶端最後一個 commit 是誰、什麼時間)、以及記錄你花了多少時間在 debug 不屬於你的問題上。這份紀錄不是要拿來吵架,而是當未來某天客戶質疑「你們的 DFT script 為什麼這麼晚交付」時,你能拿出具體數據說明:「在 X 月到 Y 月之間,因為貴司 RTL 團隊的 N 次 build break,我累計被阻擋了 M 小時。」沒有這份紀錄,所有延遲都會被算到你頭上。
2. 跟客戶談判「DFT script 走獨立 branch 與獨立驗證流程」
這是治本的方法。客戶的 pre-push hook 是為了保護 RTL/testbench 的品質,但 DFT script 跟這些東西是不同的 artifact、不同的生命週期、不同的 reviewer,硬綁在一起本來就不合理。可以正式提出一個 proposal:DFT 相關檔案放在獨立的 directory (例如 dft/),或乾脆獨立 repo / 獨立 branch,pre-push hook 只跑 DFT 相關的檢查 (例如 script syntax check、lint、自寫的 unit test),不跑 make build 跟 functional test。提案時要強調這對客戶也有好處:客戶 RTL 團隊的 build break 也不會被你們 DFT 的 commit 干擾,雙方都更乾淨。如果客戶不接受,至少也要爭取一個 --no-verify 的例外條款,搭配你這邊自己的 review 流程。
3. 在等不到流程改善前,建立「客戶 build 健康度監測」
如果短期內客戶不會改流程,那就把被動變主動。寫一個小 script,定期 (例如每天早上、或每次你準備 push 前) 自動 git pull 客戶 main branch 並跑 make build,把結果記錄下來。這樣你能在準備 push 之前就知道「現在客戶的環境是好的還是壞的」,而不是 push 失敗後才發現。如果剛好遇到客戶 broken 的時段,你可以選擇:(a) 等他們修好再 push、(b) 暫時 checkout 到上一個能過的 commit 再 rebase 你的 script、(c) 跟客戶 PM 反映「你們現在 main 是壞的,我這邊被卡住」。這比每次都要從頭 debug 別人的問題省力得多。
4. 不要再去碰客戶的 Verilog,即使是「註解掉就好」
接續上一輪我提到的擔憂——既然你交付的是 DFT script,那任何對客戶 Verilog 的修改 (包括註解) 都不應該由你來做,即使只是為了讓 build 過。原因有三:第一,你註解掉的 port 可能影響 RTL 團隊的測試結果,他們會來怪你;第二,當客戶 RTL 團隊修好他們自己的問題時,你的註解可能跟他們的修改衝突,產生 merge conflict;第三,從責任歸屬來看,你動了不該動的東西,未來出任何問題都會被牽連。正確做法是:build 失敗時,把錯誤訊息整理好,回報給客戶 PM 或對應窗口,明確說「我的 commit 不涉及這個檔案,這是貴司團隊的 issue,我會等修復後再 push」。然後就真的去做別的事,不要自己跳下去修。
5. 把這個流程問題本身寫成正式的 escalation
如果你已經被這個問題反覆卡住好幾次,這就不是技術問題,是專案管理問題,要走 escalation。準備一份簡短的文件 (一頁就夠),內容包含:問題描述 (DFT script 被無關的 RTL build break 阻擋)、過去 N 次發生的紀錄與時間成本、對交付時程的影響、以及 2-3 個可行的解法選項 (獨立 branch、跳過 hook、分離 repo)。透過你這邊的 PM 或 lead 正式發給客戶對口窗口。重點是不要用抱怨的語氣寫,要用「為了確保專案準時交付,建議調整流程」的角度寫。客戶端的 PM 多半也不知道你被卡這麼多次,因為通常這種抱怨只會留在工程師嘴上,沒有正式上到管理層。一旦上到管理層,改善的機率會大很多——因為管理層在意的是時程,而不是「pre-push hook 的純粹性」。
一個額外的觀察
從前後幾段文章看下來,這位作者其實技術很扎實 (能用 iverilog 拆 preprocessor、能在波形上看到 0 秒附近的突刺、能用 grep/sed/Vim 處理 escaped identifier),但在跟客戶協作的「邊界管理」上似乎處於弱勢位置——客戶要求什麼就吞下什麼、別人的 bug 自己跳下去解、流程不合理也只能繞過。這在乙方工程師中很常見,但長期會嚴重消耗。
技術問題可以靠加班解決,但流程問題加班只會讓你更累而不會解決問題。建議作者在處理具體 bug 之餘,也分一點精力出來處理這些結構性議題。「達達的馬蹄」如果只是一直跑,永遠跑不完;偶爾停下來修一下路,後面的路才會比較好走。














































