EdgeCast Cloud Storage 試用

EdgeCast 最近開始測試 Cloud Storage 服務,這個服務可以用信用卡付款,沒有 setup fee 之類的費用,看了功能以及價錢似乎是可以玩看看的東西...

先說缺點:

  • 目前看起來只有一個洛杉磯 (LAX) 的點,資料的安全性會是個問題。也因為如此,在與 S3 比較時,應該與 Reduced Redundancy Storage 這個等級互相比較。
  • 檔案上傳後到可以從 Web Server 上取得的時間太長,依照他的說法可能會 30secs,我測試也差不多會到 30secs。S3 雖然也沒有保證,但幾乎是上傳後就馬上可以讀到了。
  • 有提供 API,但 API 文件要登入 (也就是說一定得註冊) 才能下載。

優點:

  • 價錢便宜。空間的部份即使是跟 S3 的 Reduced Redundancy Storage 相比也便宜不少。頻寬與 transaction fee 的部份也是一樣。
  • 反應速度。S3 的 first byte 反應速度太慢,我在 Linode 美西的點 (也是在 LAX) 上測試 jQuery 1.4.3,S3 的 first byte 要 34ms,而 Cloud Storage 的 first byte 反應速度大約是 11ms。
  • 用 FTP 就可以上傳,所以現有的 FTP sync tool 可以直接拿出來用。

要注意的有兩點:

  • 是預設是 public,也就是傳上去後所有檔案都是公開的,可以透過 http 下載。
  • 另外,Web 預設的 max-age 是 900,而且沒有 Compression,要記得去 Rules Engine 裡設定。

試用的情況大概就這樣吧...

xz (LZMA) 的壓縮率

之前 BBS 備份都是用 gzip 加上 openssl 加密後丟上 Amazon S3,檔案大約 1GB 左右,曾經用過 bzip2,大約是 900MB,但多出來的壓縮時間與換到的空間讓人沒辦法接受...

前陣子在測 7z 格式時才發現 xz 的壓縮率高的嚇人... 當然,壓縮的時間會更久,但可以壓到少於 500MB,這對於丟上 S3 的成本就少了很多...

這是壓縮的結果:

xz -1xz -2 的速度都非常快,跟 gzip -9 以及 bzip2 -9 差不多。沒意外的話 (像是軟體專利),應該是未來的趨勢了...

企業不肯換到 Windows 7 的原因是...

因為不能跑 IE6:「IE6 Addiction Inhibits Windows 7 Migrations」(Slashdot)、「IE6 addiction throws monkey wrench into Windows 7 migration」(Computerworld)

主要是因為有很多企業內部網站已經年久失修,只能跑 IE6...

依據 StatCounter 的統計,台灣地區還是有 21% 的使用者用 IE6:「Top 12 Browser Versions in Taiwan from Oct 09 to Sep 10」。

Perl 的 Threading 實做:Coro

去年「Perl - PSGI」這篇文章裡面提到 Perl 的 threading 一直是頭痛的問題之一,唐鳳在留言上推薦用 Coro 而非原來的 thread。

實際測試後發現並非 OS level 的 threading,而是利用抽換的方式將系統內許多 blocking function 換掉,並且支援常用到的 module (像是 libwww-perl 系列),使得現有的程式要 porting 到 Coro 上會簡單很多,寫起來也的確比較像 threading 程式。(雖然實做比較接近 event-based)

附上之前寫來測試的程式,用的是 PIXNETAPI

FreeBSD Ports System 拿掉 MD5 檢查了...

在「MD5 for distinfo has been deprecated」這邊看到 FreeBSD Ports System 拿掉 MD5 檢查了 (會被忽略而不檢查)。

PR (Problem Report) 可以在「ports/149657: [bsd.port.mk] deprecate MD5 checksums in distinfo」查到。

翻了 cvs log,SHA256 是五年前 (2005) 加到 bsd.ports.mk 的:「Diff for /ports/Mk/bsd.port.mk between versions 1.517 and 1.518」,總算在今天把 MD5 取代了:「Diff for /ports/Mk/bsd.port.mk between versions 1.651 and 1.652」。

最近很紅的 Firesheep...

Firesheep,一個 Firefox extension,利用截聽封包的方式取得 session 資訊,進而使用該 session 做壞事。原理其實很簡單,只是這次被包成 Firefox extension 後讓一般人都很容易可以「確認」這不是什麼困難的事情... 而在 Wifi 環境下封包的截聽就更容易了。

除此之外,這次公開 Firesheep 時有說明「登入已經是 HTTPS 所以就很安全了」這個錯誤的觀念。因為在 HTTPS 模式下登入所拿到的 session (通常是 cookie) 在 HTTP 模式下預設還是會以明文傳輸,所以截聽 HTTP 封包取得 session 後就可以處理很多事情了。

目前 client 端的解法都是建議全程 HTTPS 加密並加裝套件確保不會有 HTTP request。在 Firefox 目前看到的套件中有兩個,一個是 Force-TLS,這個套件可以設定某些 site 一定要使用 HTTPS。安裝這個套件而不做設定不會有效果。另外一個套件是 EFF 出的 HTTPS Everywhere,預設就會設定一堆常見的站台加密,對於一般人來說比較方便。

回過頭來提到 HTTPS 協定。SSL 的 AES encryption/decryption 其實很快 (以目前 Web 的傳輸量來看),但啟始的 overhead 太大。再加上 HTTP 又是 stateless 協定,常常會需要重新連線。以目前 HTML5 WebSocket 支援加密的架構來看,以後有可能會用 WebSocket 加上 Javascript 解決效能的問題...

Amazon Web Services 推出免費試用方案

從今年的 11/1 開始,新註冊 AWS 的使用者可以取得一年份免費的 quota:「AWS Free Usage Tier」,這些免費的 quota 包括了持續使用 micro instance 的能力,以及一些免費的頻寬及儲存空間。

另外還有一些免費的 quota 是包括現有的使用者,主要是推不太起來的服務... 像是 SimpleDBSimple Queue Service 以及 Simple Notification Service,這些看起來就不太好用的服務...

對於一些嘗試性的服務會相當方便...

jQuery 1.4.3 正式釋出

如前幾天在「jQuery 1.4.3-RC* 開跑」所說的,jQuery 1.4.3 如期正式釋出:「jQuery 1.4.3 Released」,除了可以自己下載以外,在 Google Libraries API 上也已經更新了:ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js

對於 dev quality 的要求,這個版本導入 JSLint,要求所有 jQuery code 都要 pass JSLint 的檢查。

另外把一些模組的相依性處理的更好,儘量都拆開不要相依,這樣可以使用 LABjsRequireJS 這類工具動態讀入。

在效能改善的部份,這次把 .css() 重新寫過,大約快 20%,對於 .animate() 會有幫助,不過 Chrome 以及 IE8 似乎沒差... 最重要,改善幅度也最多的的應該是 .closest().filter() 的改善,以及連帶大量使用這兩個 function 的 .is().find()

IndexTank 的設計

IndexTank 是在 xdite 的個人板上看到的網站,號稱真正 Scalable 的 Search Engine,看了他的架構設計後看起來應該是真的 Scalable。

由於是屬於 SaaS 服務,對於 startup 不想自己做 search engine 的可以直接套上去。而對於技術人員真正有價值的是他的 API 設計文件中的 function definition syntax:「function definition syntax」,雖然故意寫個 coming soon,但實際上可以在 client library 裡看到範例:「Python client」。

先內建一些基本的數學函數,像是四則運算、power、log,並且內建一些很常用到的變數。接下來定義出來的函數可以再重複使用,不斷累積上去,最後在 query 的時候就可以 ORDER BY 某個 score...

IndexTank 告訴你「利用 API 讓前端程式設定 function 以降低 denormalization 的複雜度」時要怎麼設計 API,當你自己建立 search engine 時,新增的 function 還可以在後端用 MapReduce 把資料補上去...。

另外可以再參考「How Hacker News ranking algorithm works」這篇文章。(這篇文章的 comment 裡面有其他的 ranking code 可以看)

Debian 重開機後維持 iptables 設定值的作法

標題所提到的問題在 lenny 以及更早的版本沒有標準解,一般 Google 到的解法是在 /etc/network/if-up.d/ 裡面放一個 script,當介面起來的時候會跑 iptables-restoreiptables 的規則倒回去,這是「會動」的方法,但我不喜歡這種 hacking...

剛剛找到 iptables-persistent,在 squeeze 以及 sid 都可以裝,雖然沒有文件,但看了一下程式很快就可以理解他的用法。

apt-get install iptables-persistent 安裝完畢之後,理論上就會把 script 裝好,並且把目錄建好,接下來只要跑 iptables-save > /etc/iptables/rules 就可以把目前的 iptables 設定倒進去。

這個方式看起來會是比較好的作法...