Posts written in 2009‒02

驗證 Base64 編碼字串

以往我以為驗證 Base64 編碼字串只要檢查它是由英文、數字、加號(+)、斜線(/)、等號(=)組成就好,但最近寫某個程式時踢到鐵板。我從原始資料中抓出一段 Base64 字串,無法使用 .NET 中的 Convert.FromBase64String() 對其進行轉換,但將同樣的字串交給 PHP 的 base64_decode() 卻又能正確處理。

經過我研究之後發現,Base64 編碼字串長度必為 4 的倍數,而等號的功能就是加在字串末端,確保其長度為 4 的倍數,因此等號也只會出現在字串末端,並不會出現在中間。此外,由於等號的功能只是要讓字串長度為 4 的倍數,故正確來說等號最多只能有 3 個,PHP 的 base64_decode() 則比較隨和,你高興的話,只要沒有 Out of Memory,要加幾個等號都沒關係 XD

最後整理一下驗證 Base64 編碼字串的方法:

  1. 字串由英文、數字、加號(+)、斜線(/)組成,末端可能還有 1—3 個等號(=)。
  2. 字串長度必為 4 的倍數,可以自行在字串末端增減等號的數目以符合此條件。

Google App Engine 收費計畫

Google App Engine 即將開始提供收費服務,免費服務內容同時將縮減

對我比較有影響的部份是頻寬由原來的每天 10 GB 縮減為每天 1 GB,我看不出來這是指對外、對內流量各 1 GB 還是總共 1 GB,如果是後者的話更慘。我目前只用在 Ikariam Graphics CDN 這個 User script 上,但用量已經到達每天 3.x GB :p

這個 1 GB 的限制是針對單一 Application,所以如果 Google App Engine 仍然提供 10 個免費 Application 的話,總共就還有 10 GB 可用。