<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gea-Suan Lin&#039;s BLOG &#187; Gea-Suan Lin</title>
	<atom:link href="http://blog.gslin.org/archives/author/gslin/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gslin.org</link>
	<description>幹壞事是進步最大的原動力</description>
	<lastBuildDate>Tue, 16 Mar 2010 23:18:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/><cloud domain='blog.gslin.org' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>P3PC (Performance of 3rd Party Content)</title>
		<link>http://blog.gslin.org/archives/2010/03/17/2230/</link>
		<comments>http://blog.gslin.org/archives/2010/03/17/2230/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 23:18:05 +0000</pubDate>
		<dc:creator>Gea-Suan Lin</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Murmuring]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[WWW]]></category>

		<guid isPermaLink="false">http://blog.gslin.org/?p=2230</guid>
		<description><![CDATA[Steve Souders 開了一個「Performance of 3rd Party Content」，分析 3rd party script 的效能。目前已經分析了四個 js。
看完四個 js 的分析後，可以看出來一些 pattern：

用 async script。Google 曾經介紹 Google Analytics 可以使用 async script：「Google Analytics Launches Asynchronous Tracking」。
當使用 async script 時無法使用 document.write (會有奇怪的結果)，就算不是 async script 也應該儘量避免使用。常見的方法是建立一個帶有 id 的 div，然後在 script 內用 document.getElementById() 或是等價的方式取得後在裡面插入元素，或是直接修改 innerHTML。
用 div 再修改的模式時，如果可以先確定 div 的大小，最好在 class 與對應的 CSS 上先定義 (像是廣告的版位)，可以避免頁面 re-layout。
在 Cache-Control 內設定夠長的 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://stevesouders.com/">Steve Souders</a> 開了一個「<a href="http://stevesouders.com/p3pc/">Performance of 3rd Party Content</a>」，分析 3rd party script 的效能。目前已經分析了四個 js。</p>
<p>看完四個 js 的分析後，可以看出來一些 pattern：</p>
<ul>
<li>用 async script。<a href="http://www.google.com/">Google</a> 曾經介紹 <a href="http://www.google.com/analytics/">Google Analytics</a> 可以使用 async script：「<a href="http://googlecode.blogspot.com/2009/12/google-analytics-launches-asynchronous.html">Google Analytics Launches Asynchronous Tracking</a>」。</li>
<li>當使用 async script 時無法使用 <code>document.write</code> (會有奇怪的結果)，就算不是 async script 也應該儘量避免使用。常見的方法是建立一個帶有 <code>id</code> 的 <code>div</code>，然後在 script 內用 <code>document.getElementById()</code> 或是等價的方式取得後在裡面插入元素，或是直接修改 <code>innerHTML</code>。</li>
<li>用 <code>div</code> 再修改的模式時，如果可以先確定 <code>div</code> 的大小，最好在 <code>class</code> 與對應的 CSS 上先定義 (像是廣告的版位)，可以避免頁面 re-layout。</li>
<li>在 <code>Cache-Control</code> 內設定夠長的 max-age (尤其是幾乎不會改動的圖片)。</li>
<li>如果是 tracking 機制，應該傳回 204 而非 200。</li>
</ul>
<p>這個計畫應該還會再繼續分析，有興趣的人可以訂 RSS 看。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gslin.org/archives/2010/03/17/2230/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>改寫 wretch-albumexpander.js (無名小站相簿展開程式)</title>
		<link>http://blog.gslin.org/archives/2010/03/15/2228/</link>
		<comments>http://blog.gslin.org/archives/2010/03/15/2228/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 08:09:32 +0000</pubDate>
		<dc:creator>Gea-Suan Lin</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[GoogleChrome]]></category>
		<category><![CDATA[Murmuring]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[WWW]]></category>

		<guid isPermaLink="false">http://blog.gslin.org/?p=2228</guid>
		<description><![CDATA[這次主要是把之前用 jQuery 1.2.6 的需求改寫，改用 getElementsByClassName()、getElementsByTagName() 以及 getElementById() 取得元素，然後用 .innerHTML 直接換掉內容。
由於這次改寫避免使用 unsafeWindow 以及複雜的 GM_* 函式，在 Google Chrome 除了遇到一個小問題之外 (可以寫一段 code workaround)，目前跑起來還蠻正常的。
參考：「Wretch Album Expander」以及 GitHub 上的「gslin&#8217;s albumexpander」。
]]></description>
			<content:encoded><![CDATA[<p>這次主要是把之前用 <a href="http://jquery.com/">jQuery</a> 1.2.6 的需求改寫，改用 <code>getElementsByClassName()</code>、<code>getElementsByTagName()</code> 以及 <code>getElementById()</code> 取得元素，然後用 <code>.innerHTML</code> 直接換掉內容。</p>
<p>由於這次改寫避免使用 <code>unsafeWindow</code> 以及複雜的 <code>GM_*</code> 函式，在 <a href="http://www.google.com/chrome">Google Chrome</a> 除了遇到一個小問題之外 (可以寫一段 code workaround)，目前跑起來還蠻正常的。</p>
<p>參考：「<a href="http://userscripts.org/scripts/show/12267">Wretch Album Expander</a>」以及 <a href="http://github.com/">GitHub</a> 上的「<a href="http://github.com/gslin/albumexpander">gslin&#8217;s albumexpander</a>」。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gslin.org/archives/2010/03/15/2228/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bsdftpd-ssl 的設定</title>
		<link>http://blog.gslin.org/archives/2010/03/15/2227/</link>
		<comments>http://blog.gslin.org/archives/2010/03/15/2227/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 01:09:33 +0000</pubDate>
		<dc:creator>Gea-Suan Lin</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Murmuring]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.gslin.org/?p=2227</guid>
		<description><![CDATA[要從紐約的主機上面拉檔案回台灣，發現 SFTP 速度只有 20KB/sec，這是因為目前 SSH 實做的方式對 latency 很敏感，在「High Performance SSH/SCP &#8211; HPN-SSH」這篇有提到相關的問題以及針對 OpenSSH 的 patch。不過，我想要用 freebsd-update 維護系統的 security update，所以我不想動到系統內的 OpenSSH。
另外一個想法是透過 FTPS 抓檔案，有不少 server software 都有支援 FTPS。在找 bsdftpd-ssl 的資料時找到以前寫的「在 FreeBSD 上支援 SSL 的 ftpd」這篇，結果發現這篇文章是因為當初 bsdftpd-ssl 在 FreeBSD 上無法編譯而改用 ftpd-tls 所寫的。現在這個問題已經解決了，但找不到之前用 bsdftpd-ssl 所設的設定可以抄，只好再 man ftpd-ssl 看一次參數。
除了先到 ports 的 ftp/bsdftpd-ssl 目錄下安裝外，還需要產生 self-signed certification。產生的步驟可以參考「OpenSSL Command-Line HOWTO」這篇的「How do I generate [...]]]></description>
			<content:encoded><![CDATA[<p>要從紐約的主機上面拉檔案回台灣，發現 <a href="http://en.wikipedia.org/wiki/SSH_file_transfer_protocol">SFTP</a> 速度只有 20KB/sec，這是因為目前 <a href="http://en.wikipedia.org/wiki/Secure_Shell">SSH</a> 實做的方式對 latency 很敏感，在「<a href="http://www.psc.edu/networking/projects/hpn-ssh/">High Performance SSH/SCP &#8211; HPN-SSH</a>」這篇有提到相關的問題以及針對 <a href="http://www.openssh.com/">OpenSSH</a> 的 patch。不過，我想要用 <a href="http://www.freebsd.org/doc/handbook/updating-freebsdupdate.html">freebsd-update</a> 維護系統的 security update，所以我不想動到系統內的 OpenSSH。</p>
<p>另外一個想法是透過 <a href="http://en.wikipedia.org/wiki/FTPS">FTPS</a> 抓檔案，有不少 server software 都有支援 FTPS。在找 <a href="http://www.freshports.org/ftp/bsdftpd-ssl/">bsdftpd-ssl</a> 的資料時找到以前寫的「<a href="http://blog.gslin.org/archives/2007/08/16/1269/">在 FreeBSD 上支援 SSL 的 ftpd</a>」這篇，結果發現這篇文章是因為當初 bsdftpd-ssl 在 <a href="http://www.freebsd.org/">FreeBSD</a> 上無法編譯而改用 <a href="http://www.freshports.org/ftp/ftpd-tls/">ftpd-tls</a> 所寫的。現在這個問題已經解決了，但找不到之前用 bsdftpd-ssl 所設的設定可以抄，只好再 <code>man ftpd-ssl</code> 看一次參數。</p>
<p>除了先到 <a href="http://www.freebsd.org/ports/">ports</a> 的 <code>ftp/bsdftpd-ssl</code> 目錄下安裝外，還需要產生 self-signed certification。產生的步驟可以參考「<a href="http://www.madboa.com/geek/openssl/">OpenSSL Command-Line HOWTO</a>」這篇的「<a href="http://www.madboa.com/geek/openssl/#cert-self">How do I generate a self-signed certificate?</a>」這個部份。把 certification 輸出到 <code>/etc/ssl/certs/ftpd.pem</code> (如果目錄不存在則建立一個)，並把檔案權限改成 600 或是 400。</p>
<p>再來是設定 <code>/etc/rc.conf.local</code> (bsdftpd-ssl 不屬於 system 內建軟體，所以放到 local)，增加兩行：</p>
<blockquote><p><code>bsdftpd_ssl_enable="YES"<br />
bsdftpd_ssl_flags="-D -h -l -p /var/run/ftpd.pid -z secure"</code></p></blockquote>
<p>然後用 <code>/usr/local/etc/rc.d/bsdftpd-ssl start</code> 跑起來就可以了。測試時要注意 active 與 passive 以及防火牆的設定，在 debug 時除了錯誤訊息外，可以用 <code>sockstat | grep ftpd</code> 以及 <a href="http://www.tcpdump.org/">tcpdump</a> 觀察。</p>
<p>實際抓一個 500MB 的檔案，到最後面可以跑到 295KB/sec，比起 SFTP 快上不少。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gslin.org/archives/2010/03/15/2227/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian 的 Backports</title>
		<link>http://blog.gslin.org/archives/2010/03/12/2226/</link>
		<comments>http://blog.gslin.org/archives/2010/03/12/2226/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 20:18:12 +0000</pubDate>
		<dc:creator>Gea-Suan Lin</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Murmuring]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[WWW]]></category>

		<guid isPermaLink="false">http://blog.gslin.org/?p=2226</guid>
		<description><![CDATA[這幾天在 VirtualBox 內弄了一台 Debian lenny (x86) 起來玩，想要多熟悉 Debian 與 bash 的風格&#8230;
不過 lenny (5.0.0) 從去年二月到現在也已經過了一年，雖然一直有在更新 (現在是 5.0.4)，但為了穩定性，並不是所有的軟體都有更新。印象中有個計畫是專門解決這個問題的，可以讓你在 stable 使用新版，但不是整個系統都換到 testing 或 unstable。
在印象中跟 &#8220;backport&#8221; 這個關鍵字有關，翻了以後找到 Debian Backports，看起來就是我要的&#8230;
依照「instructions [Debian Backports]」操作，直接把 entry 加到 /etc/apt/sources.list 內，用 apt-get update 更新一次，這時候會出現不認得 public key，不管他直接 apt-get install debian-backports-keyring 就收工了。測過沒問題後，就在「Backports.org worldwide mirror sites」這邊找亞洲區的 mirror site，看起來只有日本有做，改過去再測一次 update，沒問題收工&#8230;
由於預設仍然會使用 lenny 內的套件，如果要裝 backport 內的東西，需要用 -t lenny-backports 讓 apt-get 或是 [...]]]></description>
			<content:encoded><![CDATA[<p>這幾天在 <a href="http://www.virtualbox.org/">VirtualBox</a> 內弄了一台 <a href="http://www.debian.org/releases/lenny/">Debian lenny</a> (x86) 起來玩，想要多熟悉 <a href="http://www.debian.org/">Debian</a> 與 <a href="http://tiswww.case.edu/php/chet/bash/bashtop.html">bash</a> 的風格&#8230;</p>
<p>不過 lenny (5.0.0) 從去年二月到現在也已經過了一年，雖然一直有在更新 (現在是 5.0.4)，但為了穩定性，並不是所有的軟體都有更新。印象中有個計畫是專門解決這個問題的，可以讓你在 <a href="http://www.debian.org/releases/stable/">stable</a> 使用新版，但不是整個系統都換到 <a href="http://www.debian.org/releases/testing/">testing</a> 或 <a href="http://www.debian.org/releases/unstable/">unstable</a>。</p>
<p>在印象中跟 &#8220;backport&#8221; 這個關鍵字有關，翻了以後找到 <a href="http://www.backports.org/">Debian Backports</a>，看起來就是我要的&#8230;</p>
<p>依照「<a href="http://www.backports.org/dokuwiki/doku.php?id=instructions">instructions [Debian Backports]</a>」操作，直接把 entry 加到 <code>/etc/apt/sources.list</code> 內，用 <code>apt-get update</code> 更新一次，這時候會出現不認得 public key，不管他直接 <code>apt-get install debian-backports-keyring</code> 就收工了。測過沒問題後，就在「<a href="http://www.backports.org/debian/README.mirrors.html">Backports.org worldwide mirror sites</a>」這邊找亞洲區的 mirror site，看起來只有日本有做，改過去再測一次 update，沒問題收工&#8230;</p>
<p>由於預設仍然會使用 lenny 內的套件，如果要裝 backport 內的東西，需要用 <code>-t lenny-backports</code> 讓 apt-get 或是 aptitude 知道。</p>
<p>另外，在「<a href="http://backports.deb.at/lenny-backports/">Diffs between lenny-backports and squeeze</a>」這邊可以看到 <code>lenny-backports</code> 與 <a href="http://www.debian.org/releases/squeeze/">squeeze</a> (目前的 testing) 的差距。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gslin.org/archives/2010/03/12/2226/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx 的調整</title>
		<link>http://blog.gslin.org/archives/2010/03/06/2225/</link>
		<comments>http://blog.gslin.org/archives/2010/03/06/2225/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 18:46:31 +0000</pubDate>
		<dc:creator>Gea-Suan Lin</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Murmuring]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[WWW]]></category>

		<guid isPermaLink="false">http://blog.gslin.org/?p=2225</guid>
		<description><![CDATA[花了一些時間翻 nginx 的文件，有一些地方可以 tune&#8230;
在 FreeBSD 上可以利用 httpready 把一些事情丟到 kernel module 處理：
listen 80 default accept_filter=httpready;
httpready 參數必須設定在有 default 的 listen 之上，而且必須在 default 之後，不然會回報設定錯誤。
server_tokens 也應該關掉，除了 security 理由外，另外一個很簡單的理由是，可以少送 7bytes&#8230;：
server_tokens off;
]]></description>
			<content:encoded><![CDATA[<p>花了一些時間翻 <a href="http://nginx.org/">nginx</a> 的文件，有一些地方可以 tune&#8230;</p>
<p>在 <a href="http://www.freebsd.org/">FreeBSD</a> 上可以利用 <code>httpready</code> 把一些事情丟到 kernel module 處理：</p>
<blockquote><p><code>listen 80 default accept_filter=httpready;</code></p></blockquote>
<p><code>httpready</code> 參數必須設定在有 <code>default</code> 的 <code>listen</code> 之上，而且必須在 <code>default</code> 之後，不然會回報設定錯誤。</p>
<p><code>server_tokens</code> 也應該關掉，除了 security 理由外，另外一個很簡單的理由是，可以少送 7bytes&#8230;：</p>
<blockquote><p><code>server_tokens off;</code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.gslin.org/archives/2010/03/06/2225/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Theora 與 H.264 的畫質差異</title>
		<link>http://blog.gslin.org/archives/2010/02/27/2223/</link>
		<comments>http://blog.gslin.org/archives/2010/02/27/2223/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 02:46:45 +0000</pubDate>
		<dc:creator>Gea-Suan Lin</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[GoogleChrome]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[WWW]]></category>

		<guid isPermaLink="false">http://blog.gslin.org/?p=2223</guid>
		<description><![CDATA[HTML5 支援 &#60;video&#62; 標籤，由瀏覽器直接播放影片，不需要透過 Flash Player。但因為 H.264 有一堆軟體專利是無法 royalty-free 使用的。
有人曾經建議 Mozilla 直接使用系統的 codec 避開這個問題，但 Mozilla 認為這種作法跟 ActiveX 一樣，直接把系統不安全的部份暴露在 Internet 上，當 codec 有漏洞時就會受到影響。(我覺得專利問題還是比較嚴重)
因為這些原因，Mozilla 選擇內建 Theora 而非使用 H.264。最早支援 video tag 的 Opera 也是選擇 Theora。
Google 與 Apple 手上都有與 H.264 相關的專利可以丟進專利池而取得免費使用權，所以 Google Chrome 以及 Safari 都是支援 H.264。
Update：如同 Azel 在 comment 所講的，Google 沒有專利丟到專利池內，而是購買授權。(參考 AVC/H.264 Licensors 與 AVC/H.264 Licensees 資訊)
除了專利問題外，有些人研究 H.264 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/HTML5">HTML5</a> 支援 <code>&lt;video&gt;</code> 標籤，由瀏覽器直接播放影片，不需要透過 <a href="http://www.adobe.com/products/flashplayer/">Flash Player</a>。但因為 <a href="http://zh.wikipedia.org/wiki/H.264/MPEG-4_AVC">H.264</a> 有一堆軟體專利是無法 royalty-free 使用的。</p>
<p>有人曾經建議 <a href="http://www.mozilla.org/">Mozilla</a> 直接使用系統的 codec 避開這個問題，但 Mozilla 認為這種作法跟 ActiveX 一樣，直接把系統不安全的部份暴露在 Internet 上，當 codec 有漏洞時就會受到影響。(我覺得專利問題還是比較嚴重)</p>
<p>因為這些原因，Mozilla 選擇內建 <a href="http://www.theora.org/">Theora</a> 而非使用 H.264。最早支援 video tag 的 <a href="http://www.opera.com/">Opera</a> 也是選擇 Theora。</p>
<p><del><a href="http://www.google.com/">Google</a></del> 與 <a href="http://www.apple.com/">Apple</a> 手上都有與 H.264 相關的專利可以丟進<a href="http://zh.wikipedia.org/wiki/%E4%B8%93%E5%88%A9%E6%B1%A0">專利池</a>而取得免費使用權，所以 <a href="http://www.google.com/chrome">Google Chrome</a> 以及 <a href="http://www.apple.com/safari/">Safari</a> 都是支援 H.264。</p>
<p><strong>Update</strong>：如同 Azel 在 comment 所講的，Google 沒有專利丟到專利池內，而是購買授權。(參考 <a href="http://www.mpegla.com/main/programs/AVC/Pages/Licensors.aspx">AVC/H.264 Licensors</a> 與 <a href="http://www.mpegla.com/main/programs/AVC/Pages/Licensees.aspx">AVC/H.264 Licensees</a> 資訊)</p>
<p>除了專利問題外，有些人研究 H.264 與 Theora 在技術上到底哪個比較好，如果兩個差不多的話，沒有必要用 H.264 讓別人綁死。</p>
<p>在 <a href="http://www.osnews.com/">OSNews</a> 的「<a href="http://www.osnews.com/story/22930/Comparing_Theora_to_H264">Comparing Theora to H264</a>」裡講到有三篇測試文章。</p>
<p>最早的是「<a href="http://people.xiph.org/~greg/video/ytcompare/comparison.html">YouTube / Ogg/Theora comparison</a>」這篇，這篇不是講 H.264，而是 <a href="http://www.youtube.com/">YouTube</a> 使用的 <a href="http://zh.wikipedia.org/wiki/H.263">H.263</a>。這篇文章之前有上過 <a href="http://slashdot.org/">Slashdot</a>，但當時看過以後有個印象而已，因為他用的方法是肉眼，而非科學方法。雖然如此，還是很明顯可以看出來在 500Kbps 以下時 Theora 比 YouTube 的 H.263 好不少。</p>
<p>最近的兩篇分別是「<a href="http://www.streaminglearningcenter.com/articles/ogg-vs-h264---round-one.html">Ogg vs H264 &#8211; Round One</a>」以及「<a href="http://keyj.s2000.ws/?p=356">Video encoder comparison</a>」，後面這篇是我第一次看到有人用科學方法 <a href="http://en.wikipedia.org/wiki/Structural_similarity">SSIM</a> 計算壓縮前後的相似性。不管哪一篇，都可以主觀或客觀的看出來品質上 H.264 大勝 Theora，而壓與解的速度則是反過來。</p>
<p>不過下面的 comment 提到 Theora 目前真正在開發的不在 trunk 內，而是在其他 branch 下，另外 Theora 如果設定 bitrate，會是 <a href="http://en.wikipedia.org/wiki/Constant_bitrate">CBR</a> mode，品質會比 <a href="http://en.wikipedia.org/wiki/Variable_bitrate">VBR</a> mode 差。實際要比較每個 codec 最好的情況應該要跑 2-pass。</p>
<p>過幾天應該會有新的 report 出來，到時候再來看差異&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gslin.org/archives/2010/02/27/2223/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>IE 的 Cookie 限制</title>
		<link>http://blog.gslin.org/archives/2010/02/27/2222/</link>
		<comments>http://blog.gslin.org/archives/2010/02/27/2222/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 02:00:19 +0000</pubDate>
		<dc:creator>Gea-Suan Lin</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[Computer]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[Murmuring]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[WWW]]></category>

		<guid isPermaLink="false">http://blog.gslin.org/?p=2222</guid>
		<description><![CDATA[在 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) 都放到 [...]]]></description>
			<content:encoded><![CDATA[<p>在 <a href="http://simonwillison.net/">Simon Willison</a> 那邊看到 Eric Lawrence 在 MSDN Blog 上的解釋：「<a href="http://blogs.msdn.com/ieinternals/archive/2009/08/20/WinINET-IE-Cookie-Internals-FAQ.aspx">Internet Explorer Cookie Internals (FAQ)</a>」。Simon Willison 的文章在「<a href="http://simonwillison.net/2010/Feb/26/cachebusting/">Internet Explorer Cookie Internals (FAQ)</a>」這篇內。</p>
<p>他們討論到 IE 到目前所有版本的 cookie 都不支援 <code>max-age</code> 參數，所以有個避免 MySQL master/slave replication lag 的技巧在 IE 上沒辦法用的很好：當寫入資料時 (例：使用者發表文章)，server 會設定一組 30secs 的 cookie，當 web server 收到這個 cookie 時會用 MySQL master server。</p>
<p>workaround 不難做，本來是只有設定 cookie，現在把把 server timestamp 與 signature (用 <a href="http://en.wikipedia.org/wiki/HMAC">HMAC</a>) 都放到 cookie 後就可以了，當 web server 收到後可以驗證並且決定是否要用 master server。</p>
<p>其他的限制可以看一看留個印象，之後遇到時會比較有機會猜到&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gslin.org/archives/2010/02/27/2222/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amazon SimpleDB 支援不同程度的 Consistency</title>
		<link>http://blog.gslin.org/archives/2010/02/25/2221/</link>
		<comments>http://blog.gslin.org/archives/2010/02/25/2221/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 23:58:59 +0000</pubDate>
		<dc:creator>Gea-Suan Lin</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Murmuring]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.gslin.org/?p=2221</guid>
		<description><![CDATA[在 Amazon CTO Werner Vogels 的 blog 上提到了 AWS SimpleDB 支援不同程度的 consistency：「Choosing Consistency」，在 James Hamilton 也對這件事情發表正面的意見：「I love eventual consistency but&#8230;」。正式的技術文件在「Amazon SimpleDB Consistency Enhancements」這邊可以查到。
Eventual consistency 以 CAP theorem 中的 Consistency 妥協，試著解決 scale 問題，但缺點是 stale read (可能會讀到舊資料)，對要求比較嚴謹的子系統 (像是遊戲內的各種點數，身上帶的金幣之類的) 會很麻煩，而對於要求更嚴謹的系統 (像是商品搶購時的「剩餘數量」) 幾乎無法直接使用。
像是 Colin Percival 曾經解釋他得在 S3 與 SimpleDB 上做不少 workaround：「How Tarsnap uses Amazon Web Services」以確保資料正確性。
AWS SimpleDB 這次提供了新的功能，要求寫入時一定要等到 consistent [...]]]></description>
			<content:encoded><![CDATA[<p>在 <a href="http://www.amazon.com/">Amazon</a> CTO Werner Vogels 的 blog 上提到了 <a href="http://aws.amazon.com/simpledb/">AWS SimpleDB</a> 支援不同程度的 consistency：「<a href="http://www.allthingsdistributed.com/2010/02/strong_consistency_simpledb.html">Choosing Consistency</a>」，在 James Hamilton 也對這件事情發表正面的意見：「<a href="http://perspectives.mvdirona.com/2010/02/24/ILoveEventualConsistencyBut.aspx">I love eventual consistency but&#8230;</a>」。正式的技術文件在「<a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=3572">Amazon SimpleDB Consistency Enhancements</a>」這邊可以查到。</p>
<p><a href="http://en.wikipedia.org/wiki/Eventual_consistency">Eventual consistency</a> 以 <a href="http://www.julianbrowne.com/article/viewer/brewers-cap-theorem">CAP theorem</a> 中的 Consistency 妥協，試著解決 scale 問題，但缺點是 stale read (可能會讀到舊資料)，對要求比較嚴謹的子系統 (像是遊戲內的各種點數，身上帶的金幣之類的) 會很麻煩，而對於要求更嚴謹的系統 (像是商品搶購時的「剩餘數量」) 幾乎無法直接使用。</p>
<p>像是 Colin Percival 曾經解釋他得在 <a href="http://aws.amazon.com/s3/">S3</a> 與 SimpleDB 上做不少 workaround：「<a href="http://www.daemonology.net/blog/2008-12-14-how-tarsnap-uses-aws.html">How Tarsnap uses Amazon Web Services</a>」以確保資料正確性。</p>
<p>AWS SimpleDB 這次提供了新的功能，要求寫入時一定要等到 consistent 才 return，將 consistent 的權限放給上層 application 決定，開發者可以自己拿捏。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gslin.org/archives/2010/02/25/2221/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DRBD 進入 Linux 2.6.33 Kernel，以及 FreeBSD 的 HAST Project</title>
		<link>http://blog.gslin.org/archives/2010/02/25/2220/</link>
		<comments>http://blog.gslin.org/archives/2010/02/25/2220/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 23:21:28 +0000</pubDate>
		<dc:creator>Gea-Suan Lin</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Murmuring]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.gslin.org/?p=2220</guid>
		<description><![CDATA[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，算是一種已經被摸熟的方案。
另外是 FreeBSD 的 HAST Project 到一個階段，被 commit 到 -HEAD 了：「Please welcome HAST &#8211; Highly Avalable Storage.」，再加上 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kernel.org/">Linux kernel</a> 2.6.33 是在 <a href="http://www.drbd.org/">DRBD</a> 進入 Kernel Git tree 之後 (去年 12 月左右，參考「<a href="http://fghaas.wordpress.com/2009/12/08/were-in/">We’re in!</a>」這篇文章) 的下一個正式的 release：「<a href="http://fghaas.wordpress.com/2010/02/24/linux-2-6-33-released-first-kernel-with-drbd-included/">Linux 2.6.33 released, first kernel with DRBD included</a>」。</p>
<p>DRBD 是一套以 block-level replication 為基礎提昇可靠度的軟體，有時候為了方便解釋，也被稱為 Network RAID1，常搭配 <a href="http://www.linux-ha.org/">Heartbeat</a> 或是其後繼的 <a href="http://www.clusterlabs.org/">Pacemaker</a> 偵測節點是否還活著，並在必要時自動切換。</p>
<p>由於 DRBD 已經出來很久了，而且又是以 <a href="http://www.gnu.org/licenses/gpl-2.0.html">GPLv2</a> 釋出，早期有不少文件介紹如何使用 DRBD 達到 HA，算是一種已經被摸熟的方案。</p>
<p>另外是 <a href="http://www.freebsd.org/">FreeBSD</a> 的 <a href="http://wiki.freebsd.org/HAST">HAST Project</a> 到一個階段，被 commit 到 -HEAD 了：「<a href="http://svn.freebsd.org/viewvc/base?view=revision&amp;revision=204076">Please welcome HAST &#8211; Highly Avalable Storage.</a>」，再加上 block-level replication 會需要 Filesystem 快速恢復的 SUJ (SU+J) 也在一月底放 source code 先讓自願者測試，一口氣補了 HA 領域兩塊重要的缺陷。</p>
<p>不過依照慣例，新東西都不太穩定&#8230; 玩玩還可以，如果是要跑 HA 的話等一兩個版本會比較好。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gslin.org/archives/2010/02/25/2220/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comcast 實驗 DNSSEC</title>
		<link>http://blog.gslin.org/archives/2010/02/24/2219/</link>
		<comments>http://blog.gslin.org/archives/2010/02/24/2219/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 01:50:06 +0000</pubDate>
		<dc:creator>Gea-Suan Lin</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Murmuring]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://blog.gslin.org/?p=2219</guid>
		<description><![CDATA[Comcast 在官方的 blog 上宣佈，開始提供有 DNSSEC 驗證功能的 DNS resolver：「DNSSEC」，如果要測試的人可以手動改到 75.75.75.75 &#38; 75.75.76.76。
非 Comcast 用戶沒有辦法參與，丟 query 過去會收到：
;; ->>HEADER&#60;&#60;- opcode: QUERY, status: REFUSED, id: 54496
;; flags: qr rd ra; QUERY: 0, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.comcast.com/">Comcast</a> 在官方的 blog 上宣佈，開始提供有 DNSSEC 驗證功能的 DNS resolver：「<a href="http://blog.comcast.com/2010/02/dnssec.html">DNSSEC</a>」，如果要測試的人可以手動改到 75.75.75.75 &amp; 75.75.76.76。</p>
<p>非 Comcast 用戶沒有辦法參與，丟 query 過去會收到：</p>
<blockquote><p><code>;; ->>HEADER&lt;&lt;- opcode: QUERY, status: <strong>REFUSED</strong>, id: 54496<br />
;; flags: qr rd ra; QUERY: 0, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0</code></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.gslin.org/archives/2010/02/24/2219/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->