<?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; javascript</title>
	<atom:link href="http://blog.djh5e.org/archives/tag/javascript/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>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<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. [...]]]></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 [...]]]></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>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 nsIFilePicker = Components.interfaces .nsIFilePicker; var fp = Components.classes["@mozilla.org/filepicker;1"] .createInstance(nsIFilePicker); fp.init(window, "Album Output Folder", [...]]]></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;, 按右邊的 [...]]]></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>
		<item>
		<title>用 PicLens 看無名/Pixnet 的圖片!</title>
		<link>http://blog.djh5e.org/archives/134</link>
		<comments>http://blog.djh5e.org/archives/134#comments</comments>
		<pubDate>Wed, 02 Apr 2008 18:13:39 +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=134</guid>
		<description><![CDATA[最近才知道有這套很帥的看圖工具: PicLens, 可以把 flickr/picasa&#8230; 等各大線上相簿或網站的圖片用 3D 的方式呈現, 效果很炫, 讓原本不怎麼樣的照片都變好看了 XD 有這麼帥的工具, 不拿他來看正妹圖實在對不起自己啊! 很可惜的是, 目前正妹兩大集散地: 無名小站 &#38; Pixnet 都沒有支援PicLens, 所以我就決定要自力救濟啦! 我之前寫過一個看圖專用的 Userscripts: View Image Links, 我自己是用得很順手啦, 但是我想沒幾個人像我一樣變態愛看圖, 所以用的人應該不多。這次把原本的程式修改了一下, 把原本由頁面上過濾出來的圖片URL資訊, 轉換成 Media RSS 格式, 再餵給PicLens Lite API, 所以原本單調的看圖畫面: 就變成了 PicLens Lite 版的畫面: 是不是好看多了? 但是&#8230;3D特效呢? 為什麼沒出來? 我明明就有安裝 PicLens Firefox Extension 啊?! 仔細研究了一下, 發現我原本的寫法, 是把產生出來的 RSS XML String 直接透過 [...]]]></description>
			<content:encoded><![CDATA[<p>最近才知道有這套很帥的看圖工具: <a href="http://www.piclens.com/">PicLens</a>, 可以把 flickr/picasa&#8230; 等各大線上相簿或網站的圖片用 3D 的方式呈現, 效果很炫, 讓原本不怎麼樣的照片都變好看了 XD</p>

<p>有這麼帥的工具, 不拿他來看正妹圖實在對不起自己啊! 很可惜的是, 目前正妹兩大集散地: <a href="http://www.wretch.cc/">無名小站</a> &amp; <a href="http://www.pixnet.net/">Pixnet</a> 都沒有支援<a href="http://www.piclens.com/">PicLens</a>, 所以我就決定要自力救濟啦!</p>

<p>我之前寫過一個看圖專用的 <a href="http://blog.djh5e.org/archives/75">Userscripts: View Image Links</a>, 我自己是用得很順手啦, 但是我想沒幾個人像我一樣<strike>變態</strike>愛看圖, 所以用的人應該不多。這次把原本的程式修改了一下, 把原本由頁面上過濾出來的圖片URL資訊, 轉換成 Media RSS 格式, 再餵給<a href="http://piclens.com/lite/piclens-lite.php">PicLens Lite API</a>, 所以原本單調的看圖畫面:</p>

<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>

<p>就變成了 PicLens Lite 版的畫面:</p>

<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>

<p>是不是好看多了? 但是&#8230;3D特效呢? 為什麼沒出來? 我明明就有安裝 PicLens Firefox Extension 啊?! 仔細研究了一下, 發現我原本的寫法, 是把產生出來的 RSS XML String 直接透過 API 呼叫傳入 PicLens, <strong>而這種方式只會呈現 Lite 版介面</strong>(其實我很好奇為什麼有這個限制?). 不過, 山不轉路轉, 在測試之後發現, PicLens API 也接受 &#8220;file://&#8221; 開頭的 feed URL, 所以馬上動手修改, 3D 畫面就出來囉!</p>

<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>至於要怎麼安裝? 請看<a href="http://blog.djh5e.org/archives/135">下一篇</a>&#8230;.</p>

<ul>
<li>補一張看起來比較3D一點的圖? XD</li>
</ul>

<div class="content-img-center">
<a href="http://picasaweb.google.com/horance/BlogImages/photo#5185778448901739826"><img src="http://lh4.google.com/horance/R_eWBhqqFTI/AAAAAAAAASQ/JaHMpEpEAbA/s400/3d_viewer_02.jpg" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/134/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>基金淨值走勢圖 iGoogle Gadget</title>
		<link>http://blog.djh5e.org/archives/132</link>
		<comments>http://blog.djh5e.org/archives/132#comments</comments>
		<pubDate>Sat, 16 Feb 2008 17:03:02 +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/archives/132</guid>
		<description><![CDATA[花了一點時間把前陣子寫的台幣歷史匯率 Gadget for iGoogle改了一下, 變成基金淨值走勢圖: 整個架構幾乎和台幣歷史匯率一樣, 所以就不多說明了, 有興趣的朋友們請自行取用吧!]]></description>
			<content:encoded><![CDATA[<p>花了一點時間把前陣子寫的<a href="http://blog.djh5e.org/archives/131">台幣歷史匯率 Gadget for iGoogle</a>改了一下, 變成基金淨值走勢圖:</p>

<div>
<script src="http://gmodules.com/ig/ifr?url=http://fundnav.googlepages.com/fundnav_gadget.xml&amp;up_watch=ACYT16%2CALZ03-0901&amp;up_showNavData=true&amp;up_showNavDays=10&amp;up_selectedTab=&amp;synd=open&amp;w=500&amp;h=300&amp;title=%E5%9F%BA%E9%87%91%E6%B7%A8%E5%80%BC%E8%B5%B0%E5%8B%A2%E5%9C%96&amp;lang=zh-TW&amp;country=ALL&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script>
</div>

<p>整個架構幾乎和台幣歷史匯率一樣, 所以就不多說明了, 有興趣的朋友們請自行取用吧!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/132/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>台幣歷史匯率 Gadget for iGoogle</title>
		<link>http://blog.djh5e.org/archives/131</link>
		<comments>http://blog.djh5e.org/archives/131#comments</comments>
		<pubDate>Sat, 12 Jan 2008 12:52:06 +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/archives/131</guid>
		<description><![CDATA[真是時光飛逝, 轉眼又是好幾個月沒寫 blog. 其實每年年底這幾個月, 工作都會比較忙碌, 自然也沒什麼時間寫東西, 不過倒是利用零碎時間寫了這個小工具. 有上次開發 Diggirl Gadget 的經驗, 這次開發花的時間就少了很多, 大部分的時間都是花在修改 jQuery Flot library 上(加入&#8221;畫游標&#8221; 的功能), 還有自訂config頁面上. 這個gadget是寫成 inline mode, 所以不能像 Diggirl Gadget 那樣放在頁面上, 有興趣的朋友可以到 iGoogle 的新增小工具頁面, 查詢台幣歷史匯率, 就可以找到這個gadget. 或者是點選這裡也可以. 另外, 這次我把Gadget的 source code 放到 google code project 裡了, 請自行取用 P.S. 補充一下, flot patch 可在此下載 UPDATED 因為現在 google gadget 不支援 html-inline mode 了, [...]]]></description>
			<content:encoded><![CDATA[<p>真是時光飛逝, 轉眼又是好幾個月沒寫 blog.</p>

<p>其實每年年底這幾個月, 工作都會比較忙碌, 自然也沒什麼時間寫東西,
不過倒是利用零碎時間寫了這個小工具.</p>

<p>有上次開發 <a href="http://blog.djh5e.org/archives/126">Diggirl Gadget</a> 的經驗, 這次開發花的時間就少了很多,
大部分的時間都是花在修改 <a href="http://code.google.com/p/flot/">jQuery Flot</a> library 上(加入&#8221;畫游標&#8221; 的功能), 還有自訂config頁面上.</p>

<div>
<script src="http://gmodules.com/ig/ifr?url=http://historicalcurrencyrate.googlepages.com/currency_ratel_gadget.xml&amp;up_watch=USD%2CHKD%2CGBP%2CAUD%2CCAD%2CJPY%2CZAR%2CNZD%2CEUR&amp;up_diffdate=90&amp;up_selectedTab=&amp;synd=open&amp;w=500&amp;h=300&amp;title=%E5%8F%B0%E5%B9%A3%E6%AD%B7%E5%8F%B2%E5%8C%AF%E7%8E%87%E6%9F%A5%E8%A9%A2&amp;lang=zh-TW&amp;country=ALL&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script>
</div>

<p><strike>這個gadget是寫成 inline mode, 所以不能像 Diggirl Gadget 那樣放在頁面上,</strike>
有興趣的朋友可以到 <a href="http://www.google.com/ig">iGoogle</a> 的新增小工具頁面, 查詢台幣歷史匯率, 就可以找到這個gadget. 或者是點選<a href="http://www.google.com.tw/ig/adde?moduleurl=http://historicalcurrencyrate.googlepages.com/currency_ratel_gadget.xml&amp;source=imag">這裡</a>也可以.</p>

<p>另外, 這次我把Gadget的 <a href="http://igooglegadgets.googlecode.com/svn/trunk/">source code</a> 放到 <a href="http://code.google.com/p/igooglegadgets/">google code project</a> 裡了, 請自行取用 <img src='http://blog.djh5e.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p>P.S. 補充一下, flot patch 可<a href="http://historicalcurrencyrate.googlepages.com/jquery.flot.cursor.diff">在此</a>下載</p>

<p><em>UPDATED</em> 因為現在 google gadget 不支援 html-inline mode 了, 所以處理 config 頁的部分修改了一下,
不能使用的朋友請等google gadget cache 更新後應該就會正常了.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.djh5e.org/archives/131/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>
