發表文章

🔍【教學】為什麼 TXT 跟 Excel 數字對不起來?一次看懂晶圓測試 BIN 統計與程式設計觀念

一、故事背景:TXT 看起來對了,Excel 卻顯示錯誤? 假設你在做晶圓測試資料處理,系統會輸出: 一個文字檔(TXT) 一個 Excel 報表 這兩個檔案裡,都會出現類似下面幾個數字: TOTAL_TEST :總測試顆數 TOTAL_PASS :通過顆數 TOTAL_FAIL :失敗顆數 TEST_YIELD :良率 BIN01(1) 、 BIN04(4) …:各個 BIN 的顆數 理論上: TOTAL_PASS 應該要等於「Bin1 的顆數」, TOTAL_TEST 應該要等於「所有 BIN 顆數加總」。 實際情況卻是: TXT 檔裡 TOTAL_PASS 已經跟 BIN01(1) 對得起來 Excel 報表裡的「Pass Q’ty」卻跟 Bin1 不一致 也就是說: 同一顆晶圓、兩份報表,數字卻不同。 這在跟客戶對帳或查良率問題時,超級尷尬。 接下來就用軟體工程師的角度,把整件事拆開來講,但會盡量用「白話」方式,讓完全不懂程式的人也看得懂。 二、資料從哪來?兩條不同的數字來源 在系統裡,可以把資料想成有兩個階段: 讀取原始資料(舊的數字) 從原始檔案或資料庫讀到一份「Header 資料」,裡面已經有 TOTAL_PASS 、 TOTAL_FAIL … 這些數字可能是設備或前一套系統算好的。 重新統計 BIN 顆數(新的數字) 系統逐顆...

🍀【教學】用批次檔跑 Python:用「相對路徑」打造可搬家的自動化流程(新手也看得懂)

一、為什麼我要學「相對路徑」? 很多人在 Windows 上跑 Python 自動化程式時,通常會這樣寫路徑: C:\Users\me\AppData\Local\Programs\Python\Python39\python.exe D:\DataProject\loader\my_loader.py D:\DataProject\raw\VendorA 看起來沒有錯,但有幾個致命問題: 專案搬位置就壞掉 例如你把整個專案資料夾搬到 E:\Backup\ ,這行指令就全掛了。 換電腦要全部重寫 別人的電腦沒有 D:\DataProject\... 這條路徑,一樣跑不起來。 排程 / 自動化維護很痛苦 每次路徑改一下,都要重改一堆 script。 所以我們要學的是: 用「相對路徑」+ 一點點批次檔技巧,讓 整包專案可以整個搬走,仍然能自動運作 。 二、先搞懂:什麼是絕對路徑、相對路徑? 1. 絕對路徑(Absolute Path) 從磁碟機開始寫到檔案為止 例如: C:\Users\me\Documents\report.xlsx D:\DataProject\raw\VendorA\log_20241201.csv 特性 : 清楚、明確 但只要「任何一小段」資料夾名稱改了,就失效 2. 相對...

🐬【教學】Tibco Spotfire 無法登入?完整排查與修復指南(附重啟失敗、埠號衝突解法)

💡 前言:為什麼 Spotfire 突然登入不了? 很多工程師在開啟 Tibco Spotfire Analyst 時,會遇到這個錯誤: 「Could not connect to server ' http://127.0.0.1:82/ ' to download manifest」 這其實代表 Spotfire Analyst 嘗試連接伺服器失敗。更棘手的是,即使重啟 Spotfire Server,仍可能出現「無法啟動」、「埠號被占用」或「Cluster 綁定位址錯誤」等問題。 別慌,這篇文章會一步步帶你排查與修復。 一、判斷問題來源:不是 Analyst,而是 Server 沒啟動 首先確認 Spotfire Server 服務是否真的在執行。 開啟 Windows 服務 (services.msc) 找到「TIBCO Spotfire Server」。 狀態若顯示 未啟動 或出現錯誤訊息(如 Error 1053 ),代表伺服器端沒起來。 若正在啟動但卡住,請往下看「Cluster 綁定錯誤」。 二、檢查常見錯誤來源 1️⃣ 埠號被占用 Spotfire Server 預設: HTTP:9080 HTTPS:9443 Cluster (Ignite):5703 但有些人修改為 82 或其他埠號,結果被防火牆、IIS 或其他應用佔用,導致啟動卡住。 👉 解法: 使用命令列查誰在佔用埠號(以下為安全示範): netstat -aon | find ":82" 再查是哪個行程: tasklist /FI "PID eq 12345" 若不是 Spotfire 服務,請改回 9080 或 9443,或釋放該埠。 2️⃣ Cluster (Ignite) 綁定位址錯誤 若你在 log 中看到: ...

🌐如何在 Vue 3 + Pinia 記住「執行時間」資訊? — 從零開始也看得懂的前端狀態管理實戰

一、前言:為什麼「執行時間」總是消失? 假設你做了一個「訂單排程結果」頁面,上面會顯示: 執行時間:2025-11-01 01:00:00 ~ 2025-11-01 01:03:21 共計:00:03:21 這個時間是後端夜間批次排程跑完後,寫到資料庫,再由前端透過 API 抓回來顯示的。 一切看起來都很正常,直到你遇到這幾個情況: 換到另一個頁面再切回來, 執行時間不見了 F5 重新整理頁面,列表還能透過 store 還原, 但執行時間變成空白 同一個「版本」查詢結果明明一樣,但執行時間又要再打一次 API 才抓得到 於是你會問: 為什麼表格資料可以記住,執行時間卻不能一起記? 其實原因很簡單: 你有用 Pinia 記住表格資料,但沒有把「執行時間」也存進去。 這篇文章會用「完全不懂程式的人也看得懂」的方式,帶你一步一步理解: 什麼是「全域狀態」? 為什麼要把「執行時間」一起存? Vue 3 + Pinia 怎麼設計,才能跨頁 / 重新整理都保留這些資訊? 所有程式碼範例我都會用新的名字與結構來示範,不會使用任何真實專案的內容。 二、先用生活例子理解:什麼是「全域狀態」? 想像你在一個大商場裡逛街: 每一間店 = 一個 Vue 頁面 客人手上的購物籃 = 當前頁面的狀態(例如查詢結果、篩選條件…) 購物中心的服務台 = 一個「全域狀態管理」工具(在 Vue 裡就是 Pinia) 如果你只把東西放在店裡的推車(單一頁面),一走出那間店就沒了。 但如果你把重要的東西先寄放在「服務台」,你就可以: 去別的店逛一圈 再回到同一間店 跟服務台說:「我要取回剛剛那籃東西」 這就是 全域狀態的概念 。 在這篇文章裡: ...

🔧新手也看得懂!用一支 BAT 批次檔,安全又穩定地自動執行資料載入流程(含安全改寫與通用範例)

為什麼需要這篇文章? 很多團隊用 Windows 批次檔( .bat )排程自動執行資料載入或報表產生。但常見的問題是: 日誌記不到關鍵訊息(出錯卻看不到錯在哪) 把密碼寫在檔案裡(甚至被記到日誌!) 覆寫 PATH 造成其他程式找不到 成功或失敗沒有「回傳碼」佐證,排程看起來成功其實失敗了 這篇用「完全不懂的人也能看懂」的方式,帶你從頭到尾把一支批次檔寫對、寫好、寫安全。 什麼是批次檔(BAT)? 批次檔就像「一次把多個指令排好、照順序自動執行」的腳本。 你可以把它想像成點餐流程:先進餐廳(切換資料夾)、看菜單(列出環境)、點菜(執行 Python)、拿收據(寫日誌)、最後確認結帳(看回傳碼)。 一支好用的批次檔,應該具備的 6 大能力 清楚的日誌紀錄 :何時開始/結束、目前路徑、環境重點、每步輸出 不外洩的安全性 :絕對不要把密碼寫進檔案或日誌 穩定的環境控制 :臨時擴充 PATH ,不要硬覆蓋 可靠的連線方式 :能用 UNC 路徑就別硬掛網路磁碟 完整的錯誤收集 :同時記錄標準輸出(stdout)與錯誤輸出(stderr) 明確的成功/失敗判斷 :檢查每步的回傳碼( %ERRORLEVEL% ) 常見地雷與避坑方法(非技術也能懂) 地雷 為什麼危險 正確作法 把密碼寫在批次檔或日誌 任何人都看得到,會外洩 事先在系統安全地保存憑證(如 ...