<?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>唬人斯不唬人 &#187; 野人獻曝</title>
	<atom:link href="http://blog.djh5e.org/archives/category/tech/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.djh5e.org</link>
	<description>唬人的世界, 不唬人的自我</description>
	<lastBuildDate>Fri, 21 Aug 2009 05:32:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Userscript: View Image Links + Firefox 3.0 的問題</title>
		<link>http://blog.djh5e.org/archives/150</link>
		<comments>http://blog.djh5e.org/archives/150#comments</comments>
		<pubDate>Wed, 18 Jun 2008 08:15:41 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[VIL]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=150</guid>
		<description><![CDATA[Firefox 3.0 終於在今天(台灣時間2008/06/18)正式 release 了, 而最近我也連續收到有關 VIL 在 Firefox 3.0 中, 某些功能無法正常執行的問題回報. 主要是關於VIL中, 使用 PicLens 及 下載 功能時會遇到安全性錯誤的問題.

首先要感謝這些愛用者的支持. 老實說, 這個問題在 3.0b1 時我就已經知道了, 看起來是 Firefox 在 3.0 中對 XPCOM 元件的安全性修正而造成的問題. 到目前為止, 我還找不到對應的解法, 所以得先請各位忍耐一下. 真的非 PicLens 不可的話可以考慮使用 Portable Firefox(在頁面下半的Legacy Versions中可找到2.0.0.14版的下載連結)。



事實上, VIL 在處理 PicLens / Download 功能時採用的方法不算是很正統的處理方式, 而要完全解決這個問題, 只有自己開發 extension 了. 目前我正在著手進行 VIL+ 的開發, 但是最近頗忙, 所以目前還處於停滯狀態 :p anyway, [...]]]></description>
			<content:encoded><![CDATA[<p>Firefox 3.0 終於在今天(台灣時間2008/06/18)正式 release 了, 而最近我也連續收到有關 VIL 在 Firefox 3.0 中, 某些功能無法正常執行的問題回報. 主要是關於VIL中, 使用 PicLens 及 下載 功能時會遇到安全性錯誤的問題.</p>

<p>首先要感謝這些愛用者的支持. 老實說, 這個問題在 3.0b1 時我就已經知道了, 看起來是 Firefox 在 3.0 中對 XPCOM 元件的安全性修正而造成的問題. 到目前為止, 我還找不到對應的解法, 所以得先請各位忍耐一下. 真的非 PicLens 不可的話可以考慮使用 <a href="http://portableapps.com/apps/internet/firefox_portable">Portable Firefox</a>(在頁面下半的Legacy Versions中可找到2.0.0.14版的下載連結)。</p>

<p><span id="more-150"></span></p>

<p>事實上, VIL 在處理 PicLens / Download 功能時採用的方法不算是很正統的處理方式, 而要完全解決這個問題, 只有自己開發 extension 了. 目前我正在著手進行 VIL+ 的開發, 但是最近頗忙, 所以目前還處於停滯狀態 :p anyway, 先放個 screen shot 給大家看看:</p>

<div class="content-img">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5202319167252851698"><img src="http://lh6.ggpht.com/horance/SDJZuDRP6_I/AAAAAAAAAhY/5a-Z8puctP8/s400/viewer_preview_03.png.jpg" /></a>
VIL Viewer with local directory index. Auto Fit, Thumbs and Info panel are enabled.
</div>

<p>總之, 請大家再多耐心等等吧! <img src='http://blog.djh5e.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/150/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>googlepages.com 的 bandwidth limit?</title>
		<link>http://blog.djh5e.org/archives/149</link>
		<comments>http://blog.djh5e.org/archives/149#comments</comments>
		<pubDate>Fri, 06 Jun 2008 15:57:10 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[gadget]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=149</guid>
		<description><![CDATA[我之前寫的三個 igoogle gadgets 都是放在 googlepages 做 hosting, 之前執行都還滿正常的, 但是昨天上午登入 igoogle後, 發現這幾個 gadgets 都因為 jquery.js 沒有載入所以不正常了, 檢查之後發現:



這怎麼可能? 這幾個檔加起來也才不到200K吧? 怎麼會off limit? 後來去查了一下 googlepages 的 help, 也沒明確寫出 bandwidth/page view limit 是多少, 只好自立救濟一下囉! 首先把 jquery 指到 Google AJAX Libraries API, 再把其它幾個獨立的 static file(js/css/images, gadgets 程式(xml)本身會被 www.google.com/ig parse 後 cache 起來, 所以不用處理),  移到自己的 hosting, 再加上 gzip &#38; expires header, [...]]]></description>
			<content:encoded><![CDATA[<p>我之前寫的三個 igoogle gadgets 都是放在 googlepages 做 hosting, 之前執行都還滿正常的, 但是昨天上午登入 igoogle後, 發現這幾個 gadgets 都因為 jquery.js 沒有載入所以不正常了, 檢查之後發現:</p>

<p><a href="http://picasaweb.google.com.tw/horance/Misc/photo#5208253511996988322"><img src="http://lh3.ggpht.com/horance/SEdu-YLC26I/AAAAAAAAAkg/gon4PB3IauE/s400/offlimited.png.jpg" /></a></p>

<p>這怎麼可能? 這幾個檔加起來也才不到200K吧? 怎麼會off limit? 後來去查了一下 googlepages 的 help, 也沒明確寫出 bandwidth/page view limit 是多少, 只好自立救濟一下囉! 首先把 jquery 指到 <a href="http://code.google.com/apis/ajaxlibs/">Google AJAX Libraries API</a>, 再把其它幾個獨立的 static file(js/css/images, gadgets 程式(xml)本身會被 www.google.com/ig parse 後 cache 起來, 所以不用處理),  移到自己的 hosting, 再加上 gzip &amp; expires header, 以減少 http access 次數.</p>

<p>目前 gadgets 程式檔已經更新, 應該等 igoogle cache 更新後就會生效. 如果有哪位朋友還是遇到 gadget 不正常的話請再通知我囉!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/149/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>我要看圖! VIL Filter How-to</title>
		<link>http://blog.djh5e.org/archives/147</link>
		<comments>http://blog.djh5e.org/archives/147#comments</comments>
		<pubDate>Fri, 25 Apr 2008 15:42:06 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Userscript]]></category>
		<category><![CDATA[VIL]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=147</guid>
		<description><![CDATA[這篇來寫一下如何為相片網站設定 filter. Filter 要做的事如下:


找出相簿裡所有的小圖URL
利用小圖URL找出大圖URL
回傳所有的大圖URL資訊.


再來介紹一下 filter function 回傳的結果定義. VIL 支援的回傳結果種類如下:


String array, 每個 Element 就是圖片的URL.
Object array, 每個 Element 是一個包含圖片相關資訊的 Object. 這個 Object 可包含以下 property:



src: 圖片的 URL, required.
desc: 圖片的說明文字, optional
thumb: 縮圖的 URL, optional.
link: 圖片在相簿中的連結, optional.


以上這些 properties 只有 src 是必要的, 其它的 property 如果不存在, 則會自動代換成 src.



接下來我們以無名相簿為例來說明怎麼樣寫 Filter Function. 先隨便打開一本無名的熱門相簿來參考. 在網頁上要秀圖片, 最常用的方法就是用 &#60;img&#62; tag. 所以我們可以用以下方法抓出頁面上所有的小圖:


function(){
  var images = document.getElementsByTagName("img");
}


這樣 images [...]]]></description>
			<content:encoded><![CDATA[<p>這篇來寫一下如何為相片網站設定 filter. Filter 要做的事如下:</p>

<ol>
<li>找出相簿裡所有的小圖URL</li>
<li>利用小圖URL找出大圖URL</li>
<li>回傳所有的大圖URL資訊.</li>
</ol>

<p>再來介紹一下 filter function 回傳的結果定義. VIL 支援的回傳結果種類如下:</p>

<ol>
<li>String array, 每個 Element 就是圖片的URL.</li>
<li>Object array, 每個 Element 是一個包含圖片相關資訊的 Object. 這個 Object 可包含以下 property:</li>
</ol>

<ul>
<li>src: 圖片的 URL, required.</li>
<li>desc: 圖片的說明文字, optional</li>
<li>thumb: 縮圖的 URL, optional.</li>
<li>link: 圖片在相簿中的連結, optional.</li>
</ul>

<p>以上這些 properties 只有 src 是必要的, 其它的 property 如果不存在, 則會自動代換成 src.</p>

<p><span id="more-147"></span></p>

<p>接下來我們以無名相簿為例來說明怎麼樣寫 Filter Function. 先隨便打開一本無名的熱門相簿來參考. 在網頁上要秀圖片, 最常用的方法就是用 &lt;img&gt; tag. 所以我們可以用以下方法抓出頁面上所有的小圖:</p>

<pre>
function(){
  var images = document.getElementsByTagName("img");
}
</pre>

<p>這樣 images 陣列中就是頁面上所有的 &lt;img&gt; 了. 因此, 用以下迴圈就可以找出所有的小圖URL了.</p>

<pre>
function(){
  var images = document.getElementsByTagName("img");
  for(var i = 0; i < images.length; i++){
     var imgurl = images[i].src;
  }
}
</pre>

<p>接下來進行第二步, 來看看大圖和小圖片URL有沒有什麼關聯性. 如果你有 <a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a> 可以直接用它來觀察:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5193201249970080786"><img src="http://lh3.ggpht.com/horance/SBH1BaeUzBI/AAAAAAAAAZc/oapQeiSTA9E/s400/filter_01.jpg" /></a>
</div>

<p>不然, 用 DOM Inspector也不錯:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5193201262854982690"><img src="http://lh6.ggpht.com/horance/SBH1CKeUzCI/AAAAAAAAAZk/82Kd8a3dNyQ/s400/filter_02.jpg" /></a>
</div>

<p>再不然直接 "檢視原始碼" 也可以 :</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5193201271444917298"><img src="http://lh4.ggpht.com/horance/SBH1CqeUzDI/AAAAAAAAAZs/5jZb94lg-q4/s400/filter_03.jpg" /></a>
</div>

<p>接下來就是找出大圖的URL:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5193202130438376514"><img src="http://lh4.ggpht.com/horance/SBH10qeUzEI/AAAAAAAAAaM/AA-_hnXGBfg/s400/filter_04.jpg" /></a>
</div>

<p>比對一下:</p>

</pre><pre>
小圖: http://f4.wretch.yimg.com/bunny1010/9/<span style="color:red;">thumbs/t</span>1344171903.jpg
大圖: http://f4.wretch.yimg.com/bunny1010/9/1344171903.jpg
</pre>

<p>這樣很明顯了吧? 所以我們再把圖片URL處理一下:</p>

<pre>
function(){
   var images = document.getElementsByTagName("img");
   for(var i = 0; i < images.length; i++){
       var imgurl = images[i].src.replace(/thumb\/t/,'');
   }
}
</pre>

<p>這樣就是所有的大圖URL了. 再來把所有大圖路徑存入 Array 之後回傳即可.</p>

</pre><pre>
function(){
  var images = document.getElementsByTagName("img");
  var myurls = new Array();
  for(var i = 0; i < images.length; i++){
     var imgurl = images[i].src.replace(/thumb\/t/,'');
     myurls.push(imgurl);
  }
  return myurls;
}
</pre>

<p>如此就完成最基本的 filter 了. 當然功能是很陽春的, 不過已經足夠讓 VIL 顯示圖片了. 對進階功能有興趣的朋友可以參考 <a href="https://opensvn.csie.org/traccgi/MirrorScripts/wiki/View">VIL wiki</a> 上完整版的  filter for wretch. 如果有了什麼成果, 也歡迎跟我聯絡分享喔!</p>
</pre>]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/147/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How to add &#8220;Auto-Update&#8221; function to Userscript</title>
		<link>http://blog.djh5e.org/archives/144</link>
		<comments>http://blog.djh5e.org/archives/144#comments</comments>
		<pubDate>Sat, 19 Apr 2008 08:14:28 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Userscript]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=144</guid>
		<description><![CDATA[這篇主要來說明一下, VIL 的 Auto-Update 是怎麼實作的. 要實作Userscript 的 Auto-Update 功能, 要解決的問題有以下兩個:


如何比較遠端版本和已安裝的版本?
如何下載並更新本機的Userscript?




首先來看第一個問題. 在 greasemonkey userscript 中, 要取得遠端網站上的資訊可以透過 GM_xmlhttpRequest 來進行, 因此只要遠端的 server 可以提供版本資訊, 或者 Last-Modified, 我們便可以拿來做為判斷依據. 不過以 Last-Modified 來判斷, 比較容易產生誤差. 所幸 VIL 目前是放在 Opensvn上, 而 SVN 會在 HTTP Response Header 的 ETag 中包含 SVN revision number:


---response begin---
HTTP/1.1 200 OK
Date: Sat, 19 Apr 2008 06:24:47 GMT
Server: Apache
Last-Modified: Sat, 19 [...]]]></description>
			<content:encoded><![CDATA[<p>這篇主要來說明一下, VIL 的 Auto-Update 是怎麼實作的. 要實作Userscript 的 Auto-Update 功能, 要解決的問題有以下兩個:</p>

<ol>
<li>如何比較遠端版本和已安裝的版本?</li>
<li>如何下載並更新本機的Userscript?</li>
</ol>

<p><span id="more-144"></span></p>

<p>首先來看第一個問題. 在 <a href="http://diveintogreasemonkey.org/">greasemonkey</a> userscript 中, 要取得遠端網站上的資訊可以透過 <a href="http://diveintogreasemonkey.org/api/gm_xmlhttprequest.html">GM_xmlhttpRequest</a> 來進行, 因此只要遠端的 server 可以提供版本資訊, 或者 Last-Modified, 我們便可以拿來做為判斷依據. 不過以 Last-Modified 來判斷, 比較容易產生誤差. 所幸 VIL 目前是放在 <a href="http://opensvn.csie.org/">Opensvn</a>上, 而 SVN 會在 HTTP Response Header 的 ETag 中包含 SVN revision number:</p>

<pre>
---response begin---
HTTP/1.1 200 OK
Date: Sat, 19 Apr 2008 06:24:47 GMT
Server: Apache
Last-Modified: Sat, 19 Apr 2008 05:38:26 GMT
<span style="color:blue">ETag: "55//userscripts/view.image.links.user.js"</span>
Accept-Ranges: bytes
Content-Length: 44055
Connection: close
Content-Type: text/plain
X-Pad: avoid browser bug

</pre>

<p>所以我們可以比較這個值即可. 但是另一個問題是, 要如何取得已安裝程式的版本呢? 我原本有想過利用 SVN Keyword 的方式, 自動 replace 程式中的 $Revision$ keyword, 不過後來發現 SVN 是由 client 來進行 Keyword replace, 所以使用 HTTP 方式取得的內容Keyword並不會被代換掉, 因此只好用 GM_getValue/GM_setValue 來處理了. 以下便是 check update 的程式碼片斷:</p>

<pre>
    if('200' != rspDtls.status){
        GM_log('check failed, response HTTP status: '+rspDtls.status);
        return;
    }else{
        var myrev = parseInt(GM_getValue(revtag,'0'));
        var remoterev = parseInt(rspDtls.responseHeaders.match(/Etag:\s+"([0-9]+).*"/)[1]);
        GM_log('remote rev is ' + remoterev + ', current rev is ' + myrev);
        if(myrev < remoterev){
            return updateFunction(rspDtls, remoterev);
        }else{
            if(showOptMessage){
                alert('remote rev is ' + remoterev + ', my rev is ' + myrev + ', no need to update.');
            }
            return true;
        }
    }
</pre>

<p>至於第二點, "如何下載及更新本機Userscript", 我一開始的想法是直接 window.open() 到 userscript 的 URL, Greasemonkey 便會自動出現安裝提示. 但後來發現, 這樣的安裝方法會清掉現有的 Include/Exclude page 設定,
所以便改用直接覆蓋已安裝檔案的方法. 而問題又來了: 要如何取得現有的安裝路徑及檔名呢? 這時候就要直接去挖 greasemonkey extension 的 source 了. 在 greasemonkey 的 util.js 中可以看到這一段:</p>

</pre><pre>

function getScriptDir() {
  var dir = getNewScriptDir();

  if (dir.exists()) {
    return dir;
  } else {
    var oldDir = getOldScriptDir();
    if (oldDir.exists()) {
      return oldDir;
    } else {
      // if we called this function, we want a script dir.
      // but, at this branch, neither the old nor new exists, so create one
      return GM_createScriptsDir(dir);
    }
  }
}
function getNewScriptDir() {
  var file = Components.classes["@mozilla.org/file/directory_service;1"]
                       .getService(Components.interfaces.nsIProperties)
                       .get("ProfD", Components.interfaces.nsILocalFile);
  file.append("gm_scripts");
  return file;
}

function getOldScriptDir() {
  var file = getContentDir();
  file.append("scripts");
  return file;
}

</pre>

<p>直接 copy paste 到 VIL 中就 ok 了. 取得 script install dir, 再用 DOMParser 取得安裝後的檔名(修改自 greasemonkey 的 config.js):</p>

<pre>
function getInstalledFileName(){
    var installedFilename = '';
    var configContents = getContents(getScriptFileURI("config.xml"));
    var domParser = new DOMParser();
    var doc = domParser.parseFromString(configContents, "text/xml");
    var nodes = doc.evaluate("/UserScriptConfig/Script", doc, null, 0, null);
  for (var node = null; (node = nodes.iterateNext()); ) {
        var fname = node.getAttribute("filename");
    var name = node.getAttribute("name");
    var namespace = node.getAttribute("namespace");
        if(name == MY_NAME &#038;&#038; namespace == MY_NAMESPACE){
            installedFilename = fname;
            break;
        }
  }
  return installedFilename;
}
</pre>

<p>之後就直接 overwite 掉現有的 userscript, 再 alert 提示使用者重新整理頁面即可.</p>

<p>解決這兩個問題之後, userscript 便可以享有 auto-update 的功能了. 有在寫 userscript 的朋友可以參考看看.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/144/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Userscripts: View Image Links &#8211; Auto-Update ?</title>
		<link>http://blog.djh5e.org/archives/143</link>
		<comments>http://blog.djh5e.org/archives/143#comments</comments>
		<pubDate>Sat, 19 Apr 2008 06:11:10 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Userscript]]></category>
		<category><![CDATA[VIL]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=143</guid>
		<description><![CDATA[誰說 Userscript 不能做自動 update? 有圖有真相:





完成後:







用 AutoUpdate 有什麼好處呢?


不用重設 include/exclude page (如果直接用 greasemonkey 重新安裝就要重設)
除了自動 update userscript, 還會自動更新 filter config!


設定頁面如下:





趕快安裝後試用看看吧!

PS. 如此你現在已經有另外設定過 include/exclude page, 那麼可以參考以下做法避免重設 include/exclude page:


打開 Greasemonkey 管理頁面:







先於左側點選 &#8220;View Image Links&#8221;, 然後再點選下方的 &#8220;編輯&#8221;:






如此一來, Firefox 會用 text editor 開啟已安裝的 userscript file, 此時自行把最新的 source code 貼上後存檔即可!
]]></description>
			<content:encoded><![CDATA[<p>誰說 Userscript 不能做自動 update? 有圖有真相:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5190830294474223650"><img src="http://lh4.ggpht.com/horance/SAmIpo948CI/AAAAAAAAAYc/jDY4OlVNBy8/s800/autoupdate_01.jpg" /></a>
</div>

<p>完成後:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5190830298769190962"><img src="http://lh5.ggpht.com/horance/SAmIp4948DI/AAAAAAAAAYk/jFxcN2n-jxE/s800/autoupdate_02.jpg" /></a>
</div>

<p><span id="more-143"></span></p>

<p>用 AutoUpdate 有什麼好處呢?</p>

<ol>
<li>不用重設 include/exclude page (如果直接用 greasemonkey 重新安裝就要重設)</li>
<li>除了自動 update userscript, 還會自動更新 filter config!</li>
</ol>

<p>設定頁面如下:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5190830294474223634"><img src="http://lh4.ggpht.com/horance/SAmIpo948BI/AAAAAAAAAYU/1NxqJ_Uaxhw/s800/autoupdate.jpg" /></a>
</div>

<p>趕快安裝後試用看看吧!</p>

<p>PS. 如此你現在已經有另外設定過 include/exclude page, 那麼可以參考以下做法避免重設 include/exclude page:</p>

<ul>
<li>打開 Greasemonkey 管理頁面:</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5190830307359125570"><img src="http://lh3.ggpht.com/horance/SAmIqY948EI/AAAAAAAAAYs/B5BaMGwjP0E/s800/gm_edit_01.jpg" /></a>
</div>

<ul>
<li>先於左側點選 &#8220;View Image Links&#8221;, 然後再點選下方的 &#8220;編輯&#8221;:</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5190830320244027474"><img src="http://lh6.ggpht.com/horance/SAmIrI948FI/AAAAAAAAAY0/HBjC9EXLQIk/s800/gm_edit_02.jpg" /></a>
</div>

<p>如此一來, Firefox 會用 text editor 開啟已安裝的 userscript file, 此時自行把最新的 <a href="https://opensvn.csie.org/MirrorScripts/userscripts/view.image.links.user.js">source code</a> 貼上後存檔即可!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/143/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update: 基金淨值Gadget更新</title>
		<link>http://blog.djh5e.org/archives/142</link>
		<comments>http://blog.djh5e.org/archives/142#comments</comments>
		<pubDate>Sat, 19 Apr 2008 04:09:40 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[flot]]></category>
		<category><![CDATA[gadget]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[基金]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=142</guid>
		<description><![CDATA[今天早上才突然發現, 我的基金淨值Gadget竟然不能選台灣基金公司發行的基金, 所以剛剛趕快改了一下.. 因為google syndication 的 script bug 好像還沒修好, 暫時不放預覽, 還沒安裝的朋友可以點新增, 已經有安裝的朋友應該等 igoogle 更新 cache 後再到 config panel 設定即可.
]]></description>
			<content:encoded><![CDATA[<p>今天早上才突然發現, 我的基金淨值Gadget竟然不能選台灣基金公司發行的基金, 所以剛剛趕快改了一下.. 因為google syndication 的 script bug 好像還沒修好, 暫時不放預覽, 還沒安裝的朋友可以點<a href="http://www.google.com/ig/adde?moduleurl=http://fundnav.googlepages.com/fundnav_gadget.xml"><img src="http://buttons.googlesyndication.com/fusion/add.gif" style="width:104px; height:17px;border:0px;" alt="Add to Google" /></a>新增, 已經有安裝的朋友應該等 igoogle 更新 cache 後再到 config panel 設定即可.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/142/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSDC.tw 2008</title>
		<link>http://blog.djh5e.org/archives/140</link>
		<comments>http://blog.djh5e.org/archives/140#comments</comments>
		<pubDate>Tue, 15 Apr 2008 17:27:35 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[樂而忘返]]></category>
		<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[OSDC]]></category>
		<category><![CDATA[VIL]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=140</guid>
		<description><![CDATA[上個週末, 我去參加了 OSDC 2008. 其實我大概有一兩年沒有參加這類活動了, 一方面是工作忙, 另一方面則是越來越宅了, 放假只想待在家裡補眠打電動 XD

這次的議程一如往常非常充實, 第一天議程主要由各 Sponsor 主講, 內容涵蓋 OS, Web/javascript, Distributed Computing 及語文處理, 最後還有 Kawasaki 桑的 Jet Stream Attack!, 第二天則分兩個場地同時進行, 而高天師一人主講三場更是當天的最佳男主角   第二天最後的 Lightning Talk 我也有報名參加. 事實上, 這是我第一次在這類活動中上台分享, 內容就是前幾篇提到的View Image Links. 時間只有短短5分鐘, 不得不很快帶過, 但是重點應該是都有講到了, 大家似乎也聽得很高興, 算是還不錯啦!  

當然, 議程豐富之外, 網路(雖然我的網卡太舊連不上 orz)、點心及正妹一樣不缺(真相請到 flickr 上的 OSDC.tw Pool 找&#8230;), 更是大快人心!! 尤其是點心的充實程度, 差點讓我停不下來 [...]]]></description>
			<content:encoded><![CDATA[<p>上個週末, 我去參加了 <a href="http://osdc.tw/">OSDC 2008</a>. 其實我大概有一兩年沒有參加這類活動了, 一方面是工作忙, 另一方面則是越來越宅了, 放假只想待在家裡補眠打電動 XD</p>

<p>這次的<a href="http://osdc.tw/osdc2008/schedule.html">議程</a>一如往常非常充實, 第一天議程主要由各 Sponsor 主講, 內容涵蓋 OS, Web/javascript, Distributed Computing 及語文處理, 最後還有 <a href="http://www.kawa.net/">Kawasaki 桑</a>的 <a href="http://www.flickr.com/photos/plasmaball/2407630362/">Jet Stream Attack</a>!, 第二天則分兩個場地同時進行, 而<a href="http://www.clkao.org/">高天師</a>一人主講三場更是當天的最佳男主角 <img src='http://blog.djh5e.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  第二天最後的 Lightning Talk 我也有報名參加. 事實上, 這是我第一次在這類活動中上台分享, 內容就是前幾篇提到的View Image Links. 時間只有短短5分鐘, 不得不很快帶過, 但是重點應該是都有講到了, 大家似乎也聽得很高興, 算是還不錯啦! <img src='http://blog.djh5e.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>

<p>當然, 議程豐富之外, 網路(雖然我的網卡太舊連不上 orz)、點心及正妹一樣不缺(真相請到 flickr 上的 <a href="http://www.flickr.com/groups/osdctw/pool/show/">OSDC.tw Pool</a> 找&#8230;), 更是大快人心!! 尤其是點心的充實程度, 差點讓我停不下來 XD 另外, 會場文化大學大新館離我當兵時的營區很近, 所以中午時自然是由我帶路找飯吃. 第一天吃了桃源街的<a href="http://blog.pixnet.net/junglegirl/post/6213675">菜肉大餛飩</a>(Kawasaki桑還在他的旅遊書上找到推薦 XD). 而第二天則是吃了我很懷念的<a href="http://yuann.myphotos.cc/?p=106">龍記搶鍋麵</a>, 真是滿足啊!! 不過貪嘴的後果就是兩天下來胖了一公斤多 :~~~</p>

<p>明年的 OSDC 還會不會繼續舉辦呢? 這麼好的活動我當然是希望會繼續辦下去囉&#8230;.也希望我明年還有空參加 XD</p>

<p>PS. 我在 Lightning Talk 的 Slides 可以在 <a href="http://docs.google.com/Presentation?id=dcvt3762_17djp2jzgm">這裡</a>線上觀看, 或是在<a href='http://blog.djh5e.org/wp-content/uploads/2008/04/show-me-the-beauty.pdf'>這裡下載PDF檔</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/140/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Userscripts: View Image Links &#8211; Security Notices</title>
		<link>http://blog.djh5e.org/archives/138</link>
		<comments>http://blog.djh5e.org/archives/138#comments</comments>
		<pubDate>Fri, 11 Apr 2008 15:39:32 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[VIL]]></category>
		<category><![CDATA[XPCOM]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=138</guid>
		<description><![CDATA[這篇要講一下, 使用 VIL 在安全上要注意的事項.

如果您有使用到 VIL 的 PicLens 功能或 Download 功能的話, 一定對這個提示視窗不陌生:





因為 PicLens 及 Download 功能, 都有透過 javascript 呼叫 Mozilla 的 XPCOM 元件, 來存取您電腦上的資源, 例如選擇本機目錄或寫入暫存 Media RSS 供 PicLens 讀取等等. 而要呼叫 XPCOM 元件就得先取得 &#8220;UniversalXPConnect&#8221; 的權限. 例如程式原始碼中可以看到如下片斷:




function browseOutputFolder(){
    unsafeWindow.netscape.security.PrivilegeManager
           .enablePrivilege("UniversalXPConnect");
    const [...]]]></description>
			<content:encoded><![CDATA[<p>這篇要講一下, 使用 VIL 在安全上要注意的事項.</p>

<p>如果您有使用到 VIL 的 PicLens 功能或 Download 功能的話, 一定對這個提示視窗不陌生:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184704479444473106"><img src="http://lh3.ggpht.com/horance/R_PFQRqqFRI/AAAAAAAAARo/07-TctsNczc/s400/install_05.jpg" /></a>
</div>

<p>因為 PicLens 及 Download 功能, 都有透過 javascript 呼叫 Mozilla 的 XPCOM 元件, 來存取您電腦上的資源, 例如選擇本機目錄或寫入暫存 Media RSS 供 PicLens 讀取等等. 而要呼叫 XPCOM 元件就得先取得 &#8220;UniversalXPConnect&#8221; 的權限. 例如程式原始碼中可以看到如下片斷:
<span id="more-138"></span>
<code></code></p>

<pre>
function browseOutputFolder(){
    <span style="color: blue">unsafeWindow.netscape.security.PrivilegeManager
           .enablePrivilege("UniversalXPConnect");</span>
    const nsIFilePicker = Components.interfaces
           .nsIFilePicker;
    var fp = Components.classes["@mozilla.org/filepicker;1"]
           .createInstance(nsIFilePicker);
    fp.init(window, "Album Output Folder", 
               nsIFilePicker.modeGetFolder);
    var rv = fp.show();
    if (rv == nsIFilePicker.returnOK) {
      _gel('vil_output_path').value = fp.file.path;
    }
}
</pre>

<p></p>

<p>這段程式會呼叫 XPCOM 中的 filepicker 類別, 讓使用者選擇要存放相簿的目錄. 當程式執行到
<code>
<span style="color: blue">PrivilegeManager.enablePrivilege("UniversalXPConnect");</span>
</code>
這一行時, FireFox 就會出現要求使用允許的對話框了.
可是, 為什麼<span style="color: red"><strong>不可以</strong></span>勾選<span style="color: blue">&#8220;記住此決定&#8221;</span>呢?
假設我們在看無名相簿時使用了PicLens功能, 如果在確認對話框中有勾選<span style="color: blue">&#8220;記住此決定&#8221;</span>的話, 系統會把以下幾行存放到 profile 目錄下的 pref.js 中:</p>

<p><code></code></p>

<pre style="font-size: 0.8em">
user_pref("capability.principal.codebase.p0.granted", "UniversalXPConnect");
user_pref("capability.principal.codebase.p0.id", <span style="color: red">"http://www.wretch.cc/"</span>);
user_pref("capability.principal.codebase.p0.subjectName", "");
</pre>

<p></p>

<p>事實上, 標紅字的部分應該要是執行 enablePrivilege(&#8220;UniversalXPConnect&#8221;) 的 script 所在的 Domain URL, 但是由於我們是在 Userscript 中執行的, 因此 FireFox 會以<span style="color: red">&#8220;目前的URL&#8221;</span>加入記錄, 也就會變成 <span style="color: red">&#8220;http://www.wretch.cc/&#8221;</span>. 如此, <span style="color: red">以後如果 wretch.cc 中出現了 enablePrivilege(&#8220;UniversalXPConnect&#8221;) 呼叫, 就會直接被允許了, 形成安全漏洞.</span></p>

<p>如果您在使用 VIL + PicLens 時, 曾經勾選過<span style="color: blue">&#8220;記住此決定&#8221;</span>的話, 那麼先關閉FireFox 之後, 把 &lt;profile&gt;/pref.js 中 &#8220;capability.principal.codebase&#8230;.&#8221; 相關的設定刪除後再重開 FireFox 即可. 造成大家不便請多多見諒囉! 近期有空的話我會把 VIL 改寫成 FireFox Extension 的, 請大家再耐心等等吧!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/138/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Userscripts: View Image Links, Now with Download function</title>
		<link>http://blog.djh5e.org/archives/137</link>
		<comments>http://blog.djh5e.org/archives/137#comments</comments>
		<pubDate>Fri, 11 Apr 2008 14:44:46 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Userscript]]></category>
		<category><![CDATA[VIL]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=137</guid>
		<description><![CDATA[昨晚一時興起, 翻了翻 MDC, 把 VIL 加上了 Download 功能. 這個功能應該不用多解釋吧? 我們看圖說故事吧!

先從熱門相簿裡隨便挑一本來看看. 點一下右上角的 &#8220;Download&#8221; (介面變了, 把原本很多字的 Button 簡化了XD)之後:





點選&#8221;Browse&#8221;來選擇要儲存的目錄, 確認點選&#8221;Start&#8221;, 會先出現一個提示(雖然有點多餘, 但是理由下一篇會解釋)





下載時檔案列表會依進度變化, 全部下載完後會出現如下的提示!





以上! 各位圖片松鼠們快去收圖吧!
]]></description>
			<content:encoded><![CDATA[<p>昨晚一時興起, 翻了翻 <a href="http://developer.mozilla.org/">MDC</a>, 把 VIL 加上了 Download 功能. 這個功能應該不用多解釋吧? 我們看圖說故事吧!</p>

<p>先從熱門相簿裡隨便挑一本來看看. 點一下右上角的 &#8220;Download&#8221; (介面變了, 把原本很多字的 Button 簡化了XD)之後:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5187995406671093842"><img src="http://lh6.ggpht.com/horance/R_92Vc79IFI/AAAAAAAAASw/erbNrIN_Qd8/s400/download01.jpg" /></a></div>

<p><span id="more-137"></span>
點選&#8221;Browse&#8221;來選擇要儲存的目錄, 確認點選&#8221;Start&#8221;, 會先出現一個提示(雖然有點多餘, 但是理由<a href="http://blog.djh5e.org/archives/138">下一篇</a>會解釋)</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5187995419555995746"><img src="http://lh5.ggpht.com/horance/R_92WM79IGI/AAAAAAAAAS4/9hwk6bqjGis/s400/download02.jpg" /></a>
</div>

<p>下載時檔案列表會依進度變化, 全部下載完後會出現如下的提示!</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5187995458210701442"><img src="http://lh6.ggpht.com/horance/R_92Yc79III/AAAAAAAAATI/4gULFcZ7Hxc/s400/download04.jpg" /></a>
</div>

<p>以上! 各位圖片松鼠們快去收圖吧!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/137/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Userscripts: View Image Links + PicLens 安裝 &amp; 設定</title>
		<link>http://blog.djh5e.org/archives/135</link>
		<comments>http://blog.djh5e.org/archives/135#comments</comments>
		<pubDate>Wed, 02 Apr 2008 18:14:00 +0000</pubDate>
		<dc:creator>Horance Chou</dc:creator>
				<category><![CDATA[野人獻曝]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[PicLens]]></category>
		<category><![CDATA[Userscript]]></category>
		<category><![CDATA[VIL]]></category>

		<guid isPermaLink="false">http://blog.djh5e.org/?p=135</guid>
		<description><![CDATA[為什麼要分兩篇呢? 因為圖太多了..分開來貼應該比較清楚點:p 廢話少說, 以下就是安裝 &#38; 設定方法:


為你的Firefox安裝以下 extension:


Greasemonkey(執行Userscript用)
RefControl(因為無名會擋 referer&#8230;)
PicLens當然也要裝

到 http://userscripts.org/ 安裝 View Image Links userscript.


(如下圖, 按右邊的 &#8220;Install this script&#8221;)






3. 先設定 RefControl, 以無名相簿為例:
-  由 Firefox 選單 Tools &#8211;> RefControl Options,  點選&#8221;新增網站&#8221;後, 依Wiki的說明輸入網站及自訂Referer值:





設定filter, 以無名相簿為例


由 Firefox 選單 Tools &#8211;> Greasemonkey &#8211;> Manage User Scripts, 左邊選 &#8220;View Image Links&#8221;, 按右邊的 &#8220;Add&#8221;, 再輸入 &#8220;http://www.wretch.cc/album/album.php*&#8221;







連到 http://www.wretch.cc/ ,選一本你想看的相簿, 如果設定正確會在右上角出現三個button:






點選 Config, 會出現以下的設定畫面, [...]]]></description>
			<content:encoded><![CDATA[<p>為什麼要分兩篇呢? 因為圖太多了..分開來貼應該比較清楚點:p 廢話少說, 以下就是安裝 &amp; 設定方法:</p>

<ol>
<li>為你的Firefox安裝以下 extension:

<ul>
<li><a href="https://addons.mozilla.org/zh-TW/firefox/addon/748">Greasemonkey</a>(執行Userscript用)</li>
<li><a href="https://addons.mozilla.org/zh-TW/firefox/addon/953">RefControl</a>(因為無名會擋 referer&#8230;)</li>
<li><a href="https://addons.mozilla.org/zh-TW/firefox/addon/5579">PicLens</a>當然也要裝</li>
</ul></li>
<li>到 <a href="http://userscripts.org/scripts/show/24687">http://userscripts.org/</a> 安裝 View Image Links userscript.</li>
</ol>

<p>(如下圖, 按右邊的 &#8220;Install this script&#8221;)</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com.tw/horance/BlogImages/photo#5193180874645228546"><img src="http://lh3.ggpht.com/horance/SBHifaeUzAI/AAAAAAAAAZU/xChMzYH22_k/s400/userscript.jpg" /></a>
</div>

<p><span id="more-135"></span>
3. 先設定 RefControl, 以無名相簿為例:
-  由 Firefox 選單 Tools &#8211;> RefControl Options,  點選&#8221;新增網站&#8221;後, 依<a href="https://opensvn.csie.org/traccgi/MirrorScripts/wiki/View">Wiki</a>的說明輸入網站及自訂Referer值:</p>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184706622633153826"><img src="http://lh6.google.com/horance/R_PHNBqqFSI/AAAAAAAAARw/pz4WNqDvuEw/s400/install_refcontrol_02.jpg" /></a></div>

<ol>
<li>設定filter, 以無名相簿為例

<ul>
<li>由 Firefox 選單 Tools &#8211;> Greasemonkey &#8211;> Manage User Scripts, 左邊選 &#8220;View Image Links&#8221;, 按右邊的 &#8220;Add&#8221;, 再輸入 &#8220;http://www.wretch.cc/album/album.php*&#8221;</li>
</ul></li>
</ol>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184701846629520578"><img src="http://lh6.google.com/horance/R_PC3BqqFMI/AAAAAAAAARA/KKwAwSUgboA/s400/install_01.jpg" /></a></div>

<ul>
<li>連到 http://www.wretch.cc/ ,選一本你想看的相簿, 如果設定正確會在右上角出現三個button:</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184695988294128802"><img src="http://lh6.google.com/horance/R_O9iBqqFKI/AAAAAAAAAQw/YxuSrvMqMl4/s400/control_view.jpg" /></a></div>

<ul>
<li>點選 Config, 會出現以下的設定畫面, 在這可以依 <a href="https://opensvn.csie.org/traccgi/MirrorScripts/wiki/View">Wiki</a>的說明設定. 輸入完後點選&#8221;Save&#8221;.</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184701855219455186"><img src="http://lh4.google.com/horance/R_PC3hqqFNI/AAAAAAAAARI/l0HV6AzO6O8/s400/install_02.jpg" /></a></div>

<ul>
<li>點選 &#8220;View Image Links&#8221;, 應該會出現如下圖的 viewer 畫面</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184681960930940018"><img src="http://lh4.google.com/horance/R_OwxhqqFHI/AAAAAAAAAQY/ahW-WsO8l-c/s400/old_viewer_01.png.jpg" /></a></div>

<ul>
<li>接著請試 &#8220;Start PicLens Lite&#8221;, 會看到以下的提示訊息:</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184701863809389810"><img src="http://lh6.google.com/horance/R_PC4BqqFPI/AAAAAAAAARY/Ad0hFsxShr0/s800/install_04.jpg" /></a></div>

<ul>
<li>點選確定後會看到 Lite 版的畫面.</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184682085484991618"><img src="http://lh5.google.com/horance/R_Ow4xqqFII/AAAAAAAAAQg/tzAjDpbgutg/s400/lite_viewer_01.jpg" /></a></div>

<ul>
<li>到 Firefox 網址列輸入 about:config, 把 signed.applets.codebase_principal_support 設定值改為 true</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184701859514422498"><img src="http://lh5.google.com/horance/R_PC3xqqFOI/AAAAAAAAARQ/u4HfWv_fULA/s400/install_03.jpg" /></a></div>

<ul>
<li>回到無名相簿, 再次點選 &#8220;Start PicLens Lite&#8221;, 會出現以下確認視窗. <strong>建議&#8221;不要&#8221;勾選&#8221;記住此決定&#8221;</strong>, 點選&#8221;允許&#8221;. (會出現此確認視窗是因為程式中用到 XPCOM 來寫檔, 檔案會存在 User Home 下的 gm_vil_temp_rss.xml)</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184704479444473106"><img src="http://lh3.google.com/horance/R_PFQRqqFRI/AAAAAAAAARo/07-TctsNczc/s400/install_05.jpg" /></a></div>

<ul>
<li>允許後就會出現 3D 的 PicLens 囉!</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5184688076964369554"><img src="http://lh4.google.com/horance/R_O2VhqqFJI/AAAAAAAAAQo/4s-sQi726eo/s400/3d_viewer_01.jpg" /></a></div>

<p>大致上就是這樣. 如果你遇到PicLens只有顯示黑框, 但沒有正確顯示圖片, 那表示你的 RefControl 沒有設定好,
或是設定前就用 PicLens 看過同一頁(會被cache住),請設定好 RefControl 後再<strong>重開 Firefox</strong>即可.相關的 Filter 設定可以在  <a href="https://opensvn.csie.org/traccgi/MirrorScripts/wiki/View">Wiki</a> 上找到, 以後會陸續增加. 看圖快樂囉! <img src='http://blog.djh5e.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/135/feed</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
	</channel>
</rss>
