Theora 與 H.264 的畫質差異

HTML5 支援 <video> 標籤,由瀏覽器直接播放影片,不需要透過 Flash Player。但因為 H.264 有一堆軟體專利是無法 royalty-free 使用的。

有人曾經建議 Mozilla 直接使用系統的 codec 避開這個問題,但 Mozilla 認為這種作法跟 ActiveX 一樣,直接把系統不安全的部份暴露在 Internet 上,當 codec 有漏洞時就會受到影響。(我覺得專利問題還是比較嚴重)

因為這些原因,Mozilla 選擇內建 Theora 而非使用 H.264。最早支援 video tag 的 Opera 也是選擇 Theora。

GoogleApple 手上都有與 H.264 相關的專利可以丟進專利池而取得免費使用權,所以 Google Chrome 以及 Safari 都是支援 H.264。

Update:如同 Azel 在 comment 所講的,Google 沒有專利丟到專利池內,而是購買授權。(參考 AVC/H.264 LicensorsAVC/H.264 Licensees 資訊)

除了專利問題外,有些人研究 H.264 與 Theora 在技術上到底哪個比較好,如果兩個差不多的話,沒有必要用 H.264 讓別人綁死。

OSNews 的「Comparing Theora to H264」裡講到有三篇測試文章。

最早的是「YouTube / Ogg/Theora comparison」這篇,這篇不是講 H.264,而是 YouTube 使用的 H.263。這篇文章之前有上過 Slashdot,但當時看過以後有個印象而已,因為他用的方法是肉眼,而非科學方法。雖然如此,還是很明顯可以看出來在 500Kbps 以下時 Theora 比 YouTube 的 H.263 好不少。

最近的兩篇分別是「Ogg vs H264 - Round One」以及「Video encoder comparison」,後面這篇是我第一次看到有人用科學方法 SSIM 計算壓縮前後的相似性。不管哪一篇,都可以主觀或客觀的看出來品質上 H.264 大勝 Theora,而壓與解的速度則是反過來。

不過下面的 comment 提到 Theora 目前真正在開發的不在 trunk 內,而是在其他 branch 下,另外 Theora 如果設定 bitrate,會是 CBR mode,品質會比 VBR mode 差。實際要比較每個 codec 最好的情況應該要跑 2-pass。

過幾天應該會有新的 report 出來,到時候再來看差異...

IE 的 Cookie 限制

Simon Willison 那邊看到 Eric Lawrence 在 MSDN Blog 上的解釋:「Internet Explorer Cookie Internals (FAQ)」。Simon Willison 的文章在「Internet Explorer Cookie Internals (FAQ)」這篇內。

他們討論到 IE 到目前所有版本的 cookie 都不支援 max-age 參數,所以有個避免 MySQL master/slave replication lag 的技巧在 IE 上沒辦法用的很好:當寫入資料時 (例:使用者發表文章),server 會設定一組 30secs 的 cookie,當 web server 收到這個 cookie 時會用 MySQL master server。

workaround 不難做,本來是只有設定 cookie,現在把把 server timestamp 與 signature (用 HMAC) 都放到 cookie 後就可以了,當 web server 收到後可以驗證並且決定是否要用 master server。

其他的限制可以看一看留個印象,之後遇到時會比較有機會猜到...

Amazon SimpleDB 支援不同程度的 Consistency

Amazon CTO Werner Vogels 的 blog 上提到了 AWS SimpleDB 支援不同程度的 consistency:「Choosing Consistency」,在 James Hamilton 也對這件事情發表正面的意見:「I love eventual consistency but...」。正式的技術文件在「Amazon SimpleDB Consistency Enhancements」這邊可以查到。

Eventual consistencyCAP theorem 中的 Consistency 妥協,試著解決 scale 問題,但缺點是 stale read (可能會讀到舊資料),對要求比較嚴謹的子系統 (像是遊戲內的各種點數,身上帶的金幣之類的) 會很麻煩,而對於要求更嚴謹的系統 (像是商品搶購時的「剩餘數量」) 幾乎無法直接使用。

像是 Colin Percival 曾經解釋他得在 S3 與 SimpleDB 上做不少 workaround:「How Tarsnap uses Amazon Web Services」以確保資料正確性。

AWS SimpleDB 這次提供了新的功能,要求寫入時一定要等到 consistent 才 return,將 consistent 的權限放給上層 application 決定,開發者可以自己拿捏。

DRBD 進入 Linux 2.6.33 Kernel,以及 FreeBSD 的 HAST Project

Linux kernel 2.6.33 是在 DRBD 進入 Kernel Git tree 之後 (去年 12 月左右,參考「We’re in!」這篇文章) 的下一個正式的 release:「Linux 2.6.33 released, first kernel with DRBD included」。

DRBD 是一套以 block-level replication 為基礎提昇可靠度的軟體,有時候為了方便解釋,也被稱為 Network RAID1,常搭配 Heartbeat 或是其後繼的 Pacemaker 偵測節點是否還活著,並在必要時自動切換。

由於 DRBD 已經出來很久了,而且又是以 GPLv2 釋出,早期有不少文件介紹如何使用 DRBD 達到 HA,算是一種已經被摸熟的方案。

另外是 FreeBSDHAST Project 到一個階段,被 commit 到 -HEAD 了:「Please welcome HAST - Highly Avalable Storage.」,再加上 block-level replication 會需要 Filesystem 快速恢復的 SUJ (SU+J) 也在一月底放 source code 先讓自願者測試,一口氣補了 HA 領域兩塊重要的缺陷。

不過依照慣例,新東西都不太穩定... 玩玩還可以,如果是要跑 HA 的話等一兩個版本會比較好。

Comcast 實驗 DNSSEC

Comcast 在官方的 blog 上宣佈,開始提供有 DNSSEC 驗證功能的 DNS resolver:「DNSSEC」,如果要測試的人可以手動改到 75.75.75.75 & 75.75.76.76。

非 Comcast 用戶沒有辦法參與,丟 query 過去會收到:

;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 54496
;; flags: qr rd ra; QUERY: 0, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

Amazon 與 Microsoft 簽定專利交叉授權

OSNews 上看到的,Amazon微軟簽訂專利交叉授權協議:「Microsoft, Amazon Sign Patent Cross-Licensing Agreement」。微軟的公關稿在「Microsoft and Amazon.com Sign Patent Agreement」。

這次並非對等的交換,雙方除了交叉授權外,Amazon 還付了一筆錢給微軟。

不同於之前 Novell 的情況,有不少人猜測 Amazon 會跟微軟簽授權是因為 Amazon 發現他們所使用的某些技術踩到微軟的專利,而且發現難以避免。由於 Amazon 用了許多 open source 軟體與技術,更使得許多人對這個消息感到不愉快...

HTTP Header 出現 X-Pad

在 trace 某些網站的時候看到 Apache 送出這樣的 HTTP header 覺得奇怪:

X-Pad: avoid browser bug

Google 找了一些資料後發現是為了 workaround Netscape Navigator 2.x 到 4.0b2 的 bug 而做的:「Why is Apache sending a "X-Pad" header?」。

Revision 77941 可以看到這個 commit log,1997 年 4 月的事情...

Amazon Web Services 合併記帳

年前 Amazon Web Services 發布了一個重要的功能:「Announcing Consolidated Billing for AWS Accounts」,這項功能提供了單一付款帳戶付多個帳號的費用,可以累計因為頻寬使用量而產生的 discount。

由於每個帳戶的 Access Key ID + Secret Access Key 就可以存取這個帳戶所有的 S3 檔案,在不同的 project 時分開不同的帳戶會比較理想。但這樣在計費時得分開算,同時帳單也變多。

也許在付費窗口單一化後會規劃非信用卡付款,對於用量非常大的企業應該會有幫助。

手工藝 (Dominion,皇輿爭霸)

過年前以及過年期間頗懶散,超過一個禮拜沒更新 blog 了,一發文章居然是講 boardgame...

要介紹的 Dominion (皇輿爭霸) 這款遊戲,可以參考「[遊戲介紹]皇輿爭霸Dominion」這篇文章的介紹以及圖片,裡面有照片可以看到原來盒子的樣子。

這款遊戲是今年的台北國際書展時,表弟在書展會場買了一整組回來,除了原本的以外,還包括了兩組擴充版,總共三個大盒子,在過年期間嫌帶著三個盒子麻煩,就花了五個小時做手工藝...

首先,這是外觀,顯卡的盒子 XD

打開後裡面是長這樣:

依照每份卡片再做紙套並貼上標籤:

太墮落了... XD

Apache HTTP Server 1.3 最後一個版本釋出

Slashdot 上看到 Apache 1.3 釋出最後一個版本 1.3.42:「The Final Release of Apache HTTP Server 1.3」,之後只會有 critical security patch。

雖然 1.3 仍然被許多站台所使用 (像是 Facebook 才剛提到他們仍在使用 1.3 版),不過看起來 Apache 沒興趣同時維護 1.3、2.0、2.2。

另外一方面,lighttpd 也放出了 1.4.26rc2710 的消息,利用 security issue (CVE-2010-0295) 準備發佈 1.4.26,而非只有 patch,讓 community 感覺到有在動:「PRE-RELEASE: lighttpd 1.4.26rc1-r2710」。