Latest Entries »

01. 前言:防潮箱裡的六千元「老朋友」

故事要從十幾年前說起。當年固態硬碟還是高貴無比的奢侈品,我咬牙狠心入手了人生第一顆 SSD —— Plextor PX-128M3P (Plextor M3 Pro, 128GB)。
翻出當年的價格表,官方建議售價高達 NT$ 7,490,通路實售價也落在 NT$ 6,500 左右。(對比現在記憶體與 SSD 漲價的行情,6,500
元大概只能買到低階的 1TB 甚至 500GB 固態硬碟)

Plextor PX-128M3P 官方規格與建議售價表

昔日王者身價:Plextor M3P 128G 當年實售價約 6,500 元,持續讀寫達 535 / 350 MB/s。
昔日頂規規格表

但好景不常,這顆高階神物在某天突然毫無預警地「中風」暴斃:插上電腦後磁碟使用率永遠卡在
100%
,整個系統被拖垮假死,無法執行任何動作。雖然磁碟管理員看得到它,但完全不能讀寫。壞了之後一直捨不得丟,在防潮箱裡大概放了 2 年…

直到最近,記憶體與 NAND Flash 顆粒價格暴漲得太誇張,整理防潮箱時又摸到了這顆老戰友。最初想著把顆粒吹下來做成隨身碟,結果研究過程中發現:既然顆粒本身沒壞,何不直接搬到全新的 SATA SSD
主控板上,讓它涅槃重生?

02. 選型評估:從 Marvell 霸主到慧榮 SM2246EN

拆開外殼,內部是當年旗艦的頂級用料:

Plextor PX-128M3P 正面 PCB

正面:8 顆 Toshiba TH58TEG7D2HBA4C 顆粒 + 南亞 256MB 快取
原廠正面 PCB

Plextor PX-128M3P 背面 Marvell 主控

背面:傳奇八通道主控晶片 Marvell 88SS9174-BLD2
原廠背面 PCB

當年高階產品幾乎清一色是國外 Marvell 晶片天下。但 DIY SSD 面臨著致命現實:Marvell 主控根本拿不到原廠量產開卡工具 (MPTool) 與韌體!

想成功手搓,唯一的生路就是找網路資源最豐富、支援度最高的方案 —— 台灣廠商慧榮的 Silicon Motion SM2246EN 公版板!

SM2246EN 主控晶片

開卡界的百搭神君:慧榮 SM2246EN 四通道主控
SM2246EN 主控

美光 DDR3 快取與 RCE 電阻陣列

公板背面:美光 512MB DDR3 DRAM 快取與密密麻麻的 RCE 跳線電阻
公板背面細節

03. 關卡一:熱風槍與 BGA 植球手感地獄

第一道鬼門關是硬體焊接。8 顆東芝晶片全都是 BGA152 封裝。

東芝顆粒外觀

東芝原廠顆粒 TH58TEG7D2HBA4C:24nm MLC、單顆雙 Die 雙通道結構
Flash 顆粒外觀

BGA 植球近照

手工植球成果:152 顆錫球顆顆圓潤,對新手眼力是極致考驗
BGA 植球近照

新手拿熱風槍,風量溫度抓不準,顆粒反覆吹下來、除錫、植球、再焊上去好幾次。Scan Drive 一直抓不到,一度懷疑是不是自己親手把六千塊送進了火葬場… 幸好東芝高階 MLC 晶片耐操程度超乎想像!

04. 關卡二:只焊四顆?CE 不對稱的靈異錯誤

我想著偷懶:既然有 8 顆,那先焊正面 4 顆試水溫吧?結果打開 SMI MPTool 掃描,畫面讓我滿頭問號:

CE 分佈不對稱

只焊正面 4 顆時的慘狀:Channel 0/2 佔據 CE0 與 CE4;Channel 1/3 卻佔據 CE0 與 CE5!
CE 不對稱抓包
踩坑筆記:SMI 主控的「同行同列」鐵則

SM2246EN 開卡時,所有啟用的 Channel 所分配到的 CE 位置必須完全一致!這塊板子正背面是交叉走線,偷懶只焊正面 4 顆,CE
根本無法對稱,韌體直接拒絕服務!老老實實把背面 4 顆也全焊上。

05. 關卡三:消失的 CE 與 PCB 跳線電阻密碼

焊滿 8 顆後,再次打開 Display All Flash ID,迎接我的是更詭異的靈異事件:Channel 1 和 Channel 3 的 CE1 居然是一片死寂的
00,00,FF,FF...!開卡直接噴出 Compare flash content mismatch. (0xB1)。

消失的 CE1

明明焊了 8 顆,Channel 1 和 Channel 3 的 CE1 卻是幽靈空白 00,00,FF…
消失的 CE1

我一度以為是虛焊,補焊三次依然如故。最後苦讀原理圖並求教賣家,賣家丟了一句猶如武功秘笈的八字真言:「Ce線要不是單數,要不雙數,電壓不動」!

賣家關鍵指示

賣家一句話點醒夢中人:板子上的 RCE 跳線電阻焊錯組別了!
關鍵提點
技術眉角:RCE 跳線二選一的奧秘

每組 RCE 都是單數/雙數二選一!出廠時板子預設全焊在雙數,導致東芝這款顆粒的第二個 Die 跟隔壁顆粒撞在同一個 CE 腳位上。將 RCE2/4 移到
RCE1/3
、RCE10/12 移到 RCE9/11 後,四個通道 16 個 CE 終於全員到齊!

16 個 CE 全員到齊

奇蹟時刻!四個通道 16 個 CE 全部同行同列現身!
16 個 CE 全齊

06. 關卡四:開卡工具支援列表沒有對應型號?

這顆十年前的東芝顆粒 TH58TEG7D2HBA4C 太冷門,MPTool 下拉選單中根本沒有它!
幸好它跟兄弟型號 TH58TEG8D2HBA8C 採用完全相同的內部 Die,我直接在 FlashDB/2246AA/Flash.SET 手動新增一筆
A1 條目:

[SM2250-DataBase]
A0=Toshiba,64Gbit(8K),TH58TEG8D2HBA8C
Toshiba,64Gbit(8K),TH58TEG8D2HBA8C=98,DE,A4,82,76,D6,2,21,01,0,4036,4096,2,9,3,256,2,8,640,3,68,8F,27,30,1,5F,2,1,1,2,1,52,51,0,A2,0,1,0,0,80,88,88,88,88,0E,26,88,88,66,66,66,66,0,0,,,
A1=Toshiba,64Gbit(8K),TH58TEG7D2HBA4C
Toshiba,64Gbit(8K),TH58TEG7D2HBA4C=98,DE,A4,82,76,D6,2,21,01,0,4036,4096,2,9,3,256,2,8,640,3,68,8F,27,30,1,5F,2,1,1,2,1,52,51,0,A2,0,1,0,0,80,88,88,88,88,0E,26,88,88,66,66,66,66,0,0,,,
A2=[END]

重新開啟工具,下拉選單終於順利彈出型號!

07. 關卡五:終極大魔王!0201 封裝 Toggle 電阻

按下開始開卡,不到三秒又跳紅:TrainADJ Fail (0x11)!

終極大魔王:P23 Toggle Strap 腳位

SM2246EN 開機預設為 Legacy 模式;但我們這批東芝顆粒是 Toggle DDR 高速晶片!必須在主控的 P23 腳位 (R17) 焊上一顆 16K 上拉電阻到
1.8V
,主控才會切入 Toggle 模式。
而 R17 是比芝麻切四等分還小的 0201 封裝 (0.6mm × 0.3mm)!

翻箱倒櫃找舊料板,屏住呼吸在放大鏡下拆了一顆 16K 電阻焊上 R17。重新冷開機按下 Space 鍵… 歷經窒息的 90 秒,視窗轟然亮起那道令人熱淚盈眶的綠色 PASS 大燈!

最終開卡配置清單

最終成功開卡參數配置:Model 設為 PX-128M3P、IDEMA 128G、啟用 Cache Program
最終開卡配置清單

08. 破案驗收:老將復活效能與全碟校驗

CrystalDiskInfo 顯示健康度 100% 良好,型號自訂為 PX-128M3P,SMART 歸零。

測試項目 實測讀取 (Read) 實測寫入 (Write) 原廠 M3P 官方規格
SEQ1M Q8T1 450.88 MB/s 210.79 MB/s 535 / 350 MB/s
RND4K Q32T1 115.49 MB/s 109.53 MB/s 75K / 69K IOPS

讀取飆到 450 MB/s,直接吃滿 USB 3.0 UASP 頻寬;全碟暴力寫入校驗 122GB 連續測試,0 錯誤完美 PASS!累積寫入
257GB,壞塊依舊為 0!

全碟驗證 OK 通過畫面

全碟暴力測試:120,734 MB 綠色 OK 零錯誤通過!
全碟驗證通過

第二次全碟驗證 OK 通過畫面

第 2 圈燒機驗證:122,006 MB 零壞塊完美收工!
第 2 圈全碟通過

09. 靈魂拷問:為了省錢 DIY SSD 划算嗎?

如果要問我:花這麼多時間 DIY 一顆過氣的 128G SSD 到底划不划算?
答案肯定是不划算,而且成本早就倒貼了。

三大殘酷現實
  1. 成本完全不划算:現在 Flash 顆粒單買極貴,加上主控公板、運費、焊錫工具,加總成本直接買顆二手良品還有找。
  2. 零件取得門檻:市售顆粒極挑主控,最新 3D TLC/QLC 散客根本買不到,能玩的都是庫存老料。
  3. 翻車風險極高:虛焊、CE 跳線、0201 模式電阻… 任何一個環節翻車,幾千塊預算和顆粒直接報廢。

現在一顆全新的 SSD 便宜成那樣,光是買公板、買錫球、買熱風槍的錢,拿去買新品都還有找。
但當我看見那顆比芝麻還小的 0201 電阻焊上去,重新通電按下測試,視窗轟然亮起綠色 PASS 的那一瞬間,那種把十幾年前的老戰友親手從鬼門關拉回來的感覺,是買任何新硬體都換不來的…

全碟寫入校驗通過,壞塊歸零。
最重要的是,它又可以陪在我身邊了。
應該可以再戰十年吧。

#很開心可以救回這顆老戰友
#更換1顆芝麻電阻能不能再戰十年

你以為在學習,其實是在跟環境拉扯

學 Python 的過程中,最常遇到的不是「看不懂錯誤訊息」,而是「我明明照做了,為什麼你的可以跑、我的不行」。

常見的三個痛點很固定,也很煩:

  • 依賴管理:庫要自己裝、版本要自己顧。小專案還好,大一點就開始失控。
  • 版本衝突:A 專案要 requests 新版,B 專案偏偏卡在舊版。你一更新,另一個就壞。
  • 環境復現:換電腦、換同事、換 CI,環境像失憶一樣,每次都要重新「講一遍道理」給它聽。

 

對傳統環境管理的抱怨

許多開發者對傳統的環境管理工具(如pip和virtualenv)表示不滿,主要原因包括:

無法準確記錄依賴關係:requirements.txt文件的可讀性差,無法自動鎖定庫版本。

環境復現不可靠:在不同的環境中,復現相同的依賴版本往往會出現問題。

手動管理繁瑣:需要不斷手動更新和維護環境。

別從 pip 裡裝,因為你不想先污染環境

UV 安裝本身很直白。官方提供下載器方式,通常也是最推薦的路徑。

  • Windows:在 PowerShell 執行官方提供的安裝命令
  • macOS / Linux:用對應的 shell 命令安裝
  • 注意:雖然可以 pip install uv,但不建議,理由很現實:你正在用「需要被管理的環境」去安裝「環境管理工具」,一不小心就先把自己繞進去。

 

多版本 Python 管理:把「版本」變成可宣告的事實

UV 支援多版本 Python 管理,常用指令如下(你原本列的很完整):

  • uv python list:查看可用 Python 版本
  • uv python install <版本號>:安裝指定版本
  • uv python pin <版本號>:固定專案使用版本
  • uv python uninstall <版本號>:移除版本

 

初始化專案只要:

  • uv init

它會幫你生成一套「可追蹤、可重現」的骨架(重點是你不必自己拼):

  • .gitignore:搭配 Git 版本控制用
  • python-version:記錄專案 Python 版本
  • pyproject.toml:依賴與配置(逐步取代 requirements.txt 的角色)
  • README:專案說明
  • uv.lock:鎖定檔,用來確保環境一致性

建立虛擬環境與執行

  • uv venv:建立虛擬環境
  • uv run main.py:執行主程式

不需要一直切來切去、手動維護一堆狀態。
UV 會把該更新、該鎖定的事情做得比較自動化。

安裝與管理依賴:讓依賴回到「宣告」而不是「手作」

  • uv add <庫名>:新增第三方庫,並自動更新到 dependencies
  • uv add <庫名>==<版本號>:指定版本安裝
  • uv pip install ...:仍可用,但更像「臨時處理」的管道,而不是主要工作流

環境復刻:用 uv.sync 把「重現」變成命令,而不是儀式

  • uv sync:依據 pyproject.toml 與 uv.lock 自動下載/同步依賴
  • 若你手上只有 requirements.txt:
    • uv add -r requirements.txt:把舊世界先搬過來,再逐步收斂到新的管理方式

 

工具會進步,但時間不會等你

UV 的優勢你已經點得很清楚:快(Rust)、環境隔離、全局快取可重用。
對我來說,它最重要的不是「又一個新工具」,而是它讓環境管理變得比較像工程,而不是玄學。

如果不合適,當然可以退回傳統做法。風險不大。
真正的成本通常不是切換工具,而是你一次又一次重建同樣的環境、犯同樣的錯,還以為下一次會比較順。

時間不會給你後悔的機會。
它只會讓你在某一天回頭看見:你把太多夜晚,浪費在本來可以更簡單的事情上。

 

 

晚上很安靜。
你只想把專案跑起來。
不想跟環境吵架。

螢幕亮著。
錯誤訊息一行一行。
像在提醒你:有些問題跟努力無關。

你敲下 Enter。
等下載。
等編譯。
等它不要再出下一個錯。

那一刻其實很孤獨。
因為你知道——
你欠的不是技術,是時間。

 

在 API 架構設計中,有多種方式可以選擇。

為了要能因應每個專案的需求都不同,以及隨著技術環境和商業需求的變化,

API的設計不僅是要符合現有需求的方案,更要能支持未來的擴展、性能、維護性和成本效益。

但是每一種架構都有其特點
在考量API架構時,可以先思考一下,這個需求所要考慮的特點是什麼

View full article »

在 SRE 的實務中,有兩個關鍵概念特別重要,它們圍繞著「持續改進循環」的理念。這種循環能幫助你的系統不斷進步,形成正向的發展動力。首先來概觀這兩個實務:

1. SLI 與 SLO:量化服務品質的基石

當我們要部署新服務時,首要任務是定義服務的可靠性標準。這需要開發團隊和營運團隊共同合作,確立兩個重要指標:

服務品質指標(SLI):

  • 用於衡量服務健康狀況
  • 常見的測量面向包括:
  • 成功率(例如:API 呼叫成功率)
  • 回應時間
  • 處理容量

服務品質目標(SLO):

  • 根據 SLI 設定具體的目標值
  • 必須可被明確測量
  • 作為判斷服務是否達標的客觀依據

錯誤預算:靈活運用可靠性空間

假設我們設定服務的 SLO 為 80% 的可用性,這意味著:

  • 我們有 20% 的「錯誤預算」可供運用
  • 這個預算可用於:
  • 部署新功能
  • 系統維護
  • 測試新版本

錯誤預算的管理策略:

  • 當預算耗盡(服務可用性低於 80%)時:
  • 可能需要暫停新功能部署
  • 將資源轉向改善系統穩定性
  • 預算會在固定週期(如每月或每季)重置

2. 不究責的事後檢討:從失敗中學習

SRE 特別強調事後檢討必須採取不究責的態度:

  • 焦點放在系統和流程的改善
  • 避免指責個人
  • 關鍵問題應該是:
  • 流程中的哪些環節容易出錯?
  • 如何改善系統以預防類似問題?
  • 需要增加什麼安全機制?

這種方法的優點:

  • 鼓勵開放討論問題
  • 促進團隊學習
  • 持續改善系統
  • 建立正向的組織文化

在 SRE 實務中,兩個核心機制相輔相成,共同打造組織的持續進步文化:

首先,透過完善的事後檢討機制,我們建立了一個正向的改善循環。當系統發生中斷或故障時,這個機制確保每個事件都成為團隊的學習素材。但這必須建立在嚴謹的分析基礎上,並確實執行後續的改善方案。

其次,SRE 的一大特色在於將故障視為進步的契機,而非單純的負面事件。這種思維模式讓我們能夠客觀面對問題,並從中發掘改善空間。通過持續累積這些經驗和改善,我們得以不斷提升系統的可靠性。

這兩個準則緊密相連:一方面我們建立系統化的檢討流程,另一方面培養正向的學習文化。兩者相互強化,推動組織在可靠性工程領域持續精進。

在 Maven 中,Release 和 Snapshot 是兩種不同的版本類型

Release 版本

  • 穩定性:Release 版本被認為是穩定的、可靠的版本。
  • 不可變性:一旦發布,Release 版本的內容不應該被更改。
  • 版本號:通常使用固定的版本號,如 1.0.0、2.1.3 等。
  • 用途:適合用於生產環境或正式發布。

Snapshot 版本

  • 開發中:Snapshot 版本代表開發中的版本,可能不穩定。
  • 可變性:Snapshot 版本的內容可能會隨時變化。
  • 版本號:通常在版本號後加上 -SNAPSHOT,如 1.0.0-SNAPSHOT,且必需是大寫,加在版本別後面,用 ”-”分隔。
  • 用途:主要用於開發和測試階段。

View full article »

鋁圈升級規格

  • 品牌:Rays
  • 型號:VOLKRACING TRINITI V
  • 尺寸:19吋 5H100 ET45 8J
  • 中心孔:65mm
  • 重量:鍛造 單顆9.5Kg
IMG_4893

升級煞車的契機

起初,我只是想升級森林人的煞車系統。然而,沒想到這次煞車升級之旅會這麼複雜。原廠的18吋Enkei鋁圈雖然性能不錯,但在升級煞車卡鉗時卻面臨了難題。無論選擇哪一款煞車卡鉗,原廠鋁圈都無法安裝,必須使用至少25mm的墊寬器才能勉強塞下。 View full article »

2002年的台達電電源,突然就不開機了

想當初組電腦要裝到350W的電源也就是希望能給電腦提供一個穩定的電力來源

要知道以前最常配的就是白牌號稱300W的電源,實際上也不知道到底輸出幾瓦,不像現在電源供應器標示的那麼清楚

View full article »

當初上網查很多人都說好坐,就意無反顧的買了

現在再回頭看,很多人說好,也不少人覺得不值得

買了也就買了,當初也花了萬把塊

我坐到現在到也沒什麼問題,就是椅墊皮開始均裂了

比起一般網布版的確是撐了滿久的,從2011年坐到現在也十年了

IMG_8038

時間會證明一切,我當初是選真皮版,其實也不能說是假的,的確是真皮,只是用的是二層皮,裂了之後就會越裂越大

IMG_8040
裂到破洞了

IMG_8042

索性就真接換成頭層皮吧

IMG_8051

應該可以再戰十年了

IMG_8050
完成圖

上次這麼認真調整麥克風,己經是十幾年前的事情了

那時候為了打AOC能夠更快的與隊友溝通

開戰前先測試好語音通話是必備的

畢竟用說要增援,比點火把打字快多了

近期因為新冠肺炎的本土疫情持續嚴峻,雙北從從5月15日就開始進入三級警戒

公司也配合採居家辦公

之後就是無止盡的online meeting

逼的我不得不拿出收藏己久的麥克風

想起那時候,為了能讓隊友聽的清楚一點

還花了幾百塊想說買好一點的麥克風

於是…

IMG_8066

現在才知道,幾百跟幾十的差不多,錢都花在外表上面了

收音的麥克風頭才是重點

IMG_8067

新換的規格是9750,比原本的大,塞不進去原來的殼,只好用膠帶粘起來了

IMG_8073
完成!

縫線也脫落了

雖然自己也做了幾個識別證套在使用

還是想要把這個修復一下

View full article »

Prince's Blog由PrinceWang製作,以創用CC 姓名標示-非商業性-禁止改作 3.0 台灣 授權條款釋出。