開發途中卡住的往往不是難題,而是查一下就知道的小事:這串 Base64 裡裝了什麼、log 裡那個十位數是哪一天。因為貼進來的常是 token,八個工具一律在本機算完。
該用哪一個工具
- JSON 格式化
- 看不懂擠成一行的 API 回應,或想找出 JSON 哪裡少了逗號時用它。它走瀏覽器內建的
JSON.parse,超過 2^53 的整數 ID 在解析當下就已失去精度 —— 排版過的內容別再回填進資料庫。 - Base64 編解碼
- 要把
kubectl get secret印出來的值讀成人話,或反過來編一組 Basic Auth 憑證時用它。它只處理文字,PNG、PEM 這類二進位會被判為位元組不是 UTF-8,那時該去圖片工具裡的「圖片轉 Base64」。 - URL 編解碼
- 處理網址與表單參數裡的
%XX。和上一個的分界很清楚:%XX出現在網址列與表單請求內容裡,Base64 出現在 header、憑證與設定檔裡。 - Hash 產生器
- 要比對下載頁上的 checksum 時用它。它算的是文字而不是檔案,所以和
sha256sum對檔案算出來的值通常對不起來。SHA 系列需要 HTTPS 或 localhost 才能呼叫,MD5 是純 JavaScript 實作,不受這個限制。 - 正規表達式測試器
- 寫好 pattern 卻不確定會不會誤中時用它。運算跑在 Web Worker 裡並設有 1.5 秒上限,
(a+)+b這類會爆炸的寫法會被中止並告知原因,而不是把分頁凍住。 - 色碼轉換
- 設計稿給的是 HSL、程式碼要的是 HEX 時用它,四組欄位互相同步。RGB 與 HSL 複製出來可以直接貼進樣式表,
hsv()不是 CSS 函式,只能拿來對照設計軟體。 - QR Code 產生器
- 把網址或 Wi-Fi 設定變成掃得到的圖時用它,輸出 PNG,尺寸與錯誤修正等級(L 到 H)可選。等級越高越耐髒污,能塞的字元越少;超過容量時它會直接說超了。
- Epoch 時間轉換
- 讀 log 或資料庫欄位裡的純數字時間時用它。秒與毫秒依整數位數自動判定(十位以內當秒),負數也接受,1970 年以前的時間讀得出來。
共通限制
JSON.parse、btoa、crypto.subtle、RegExp都是瀏覽器內建的實作,所以這裡的行為就是你的程式在同一個引擎上會得到的行為。正規表達式尤其要小心:Java、Go、PCRE 的語法與 JavaScript 並不完全相同。- 只有 QR code 會產出可下載的檔案,其餘都以複製按鈕交付。貼進來的 token 只存在於這個分頁的記憶體,沒有任何請求把它們帶出去;網頁本身仍會載入廣告腳本,那些請求裡沒有你的輸入。
常見問題
為什麼這裡算的 SHA-256 和終端機不一樣?
因為算的東西不同。這裡雜湊的是文字框內容的 UTF-8 位元組,sha256sum file 雜湊的是整個檔案,差別通常在結尾那個換行或 BOM。
輸入有大小限制嗎?
沒有硬性上限,實際天花板是分頁的記憶體。