程式碼高𠅙

顯示具有 goodies 標籤的文章。 顯示所有文章
顯示具有 goodies 標籤的文章。 顯示所有文章

2009/07/04

Firefox 小技巧--將收藏庫開啟於分頁標籤中

Open Firefox Library in a Tab

不曉得有沒有人曾想過,把 Firefox 內的收藏庫 (Library, 管理書籤跟歷史的使用界面),開啟於分頁標籤中,而不是獨立視窗中。

如果你也曾想這麼做,那就這麼做吧 -- 在網址列中輸入以下 URL:

chrome://browser/content/places/places.xul

噹噹…

現在收藏庫便開啟於分頁標籤之中了:

Firefox Library in a Tab

Technorati : , , , ,

2009/03/13

搜尋引擎設定也能帶著走

Foxmarks/Xmarks 這類線上書籤同步工具的出現,讓我們在不同的電腦與瀏覽器之間同步書籤。我習慣叫這種應用叫 "書籤帶著走"。但是,不曉得有沒有人和我一樣,想把瀏覽器上的其他設定也帶著走呢?

對我來講,除了書籤之外,"搜尋引擎設定" 也是我想帶著走的。這裡的搜尋引擎,提的是「搜尋工具列」或是「Smart Search」裡面的搜尋引擎。

「搜尋工具列」大家比較清楚,就是網址列旁的搜尋框。而 Smart Search 知道的人或愛用的人可能比較少,有人叫它「智能搜尋」,或叫 Quick Searches,這裡有篇文章介紹;基本上是讓你把書籤當成搜尋引擎使用的一種方式。

過去我一直覺得奇怪,Firefox 為何要有兩套不同的搜尋機制,也不了解這兩者間如何選擇。後來因為有了 ConQuery 及 Context Search 這類套件,讓我可以在右鍵選單上直接使用搜尋功能,這種方便性讓我一直以「搜尋工具列」裡的搜尋引擎作為我的主要搜尋工具。

但是,搜尋工具列裡的搜尋引擎在使用上卻有一個缺點,那就是,他們無法像書籤一樣,可以帶者走… 因此,在 Firefox 2.x 版的年代,我便透過一套叫 FireUploader 的工具,手動將搜尋引擎設定上傳到某個網站,然後再於別台電腦將它們下載回來,但這終究不是長久之計啊!

後來找到一個就叫做 SmartSearch 的套件,這個套件做的事與 ConQuery 或 Context Search 類似,就是讓你可以在右鍵選單上,選擇你要使用的搜尋引擎進行查詢,但不同的地方在於,它的搜尋引擎選單是來自「智能搜尋」的 Quick Searches Bookmarks,這代表著,你的搜尋引擎清單就是書籤連結,是可以「帶著走」的--只要你同時安裝 SmartSearch 及 Foxmarks/Xmarks 即可。

相關連結:

Technorati : ,

2009/01/23

Java SE 6 Update 10 裡面的 Nimbus Look and Feel

Java 視窗應用程式在過去給部分人留下著刻版印象,總是認為那是跑得慢,看來醜的應用程式。不過,這真的只是刻版印象。個人在過去曾經以 Swing 套件,開發了 4 年以上的 Java Client 端應用程式,無論是在啟動速度、執行效能及視覺美觀上,Swing 介面均能達到令人滿意的程度。

而事實上不論是 Sun 或是 Java 社群也一直在 Look and Feel (就相當於佈景主題--Theme 的概念) 下了相當心血。在 Java SE 6 Update 10 裡面,就包括了一個 Nimbus Look and Feel,這是一個簡潔、洗練、具現代感的 Look and Feel。我們先來看看 SwingSet3 在 Windows XP 中的呈現樣式:

SwingSet3Nimbus

是不是還不賴呢? 我們展現一下 Metal Look and Feel 比較一下:

SwingSet3Metal

除了視覺上的輕巧之外,Nimbus Look and Feel 在實質上也是相當輕巧的,因為你在畫面上所看到的各個元件,包括按鈕、捲軸、下拉選單及標題的漸層及陰影等效果,全部是用 Java 2D 向量方式 (而不是透過 bitmap 圖檔) 畫出來的,因此才占用了 56 KB 的空間。

設定 Swing 應用程式使用 Nimbus Look and Feel

這樣漂亮的 Look and Feel,並沒有隨著 Java SE 6 Update 10的到來,而成為 Swing 預設的 Look and Feel。開發人員必須加以設定,才能在應用程式中以它作為佈景主題。隨著需求的不同,設定方式至少有三種。

在應用程式中進行設定--透過程式碼指定,你所要使用的 Look and Feel。這種方式只會將主題套用到應用程式本身,這只需要一行程式碼:

UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

或者,也可以在啟動 Java 程式時,加入以下的 java 啟動參數:

-Dswing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel

如果你想將 Nimbus Look and Feel 設定成整台電腦中,所有 Swing 程式的預設主題,則可以在 /lib/swing.properties 這個檔案中,加入底下這行:

swing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel

如果上述的設定檔不存在,你可以自行新增一個。

在 jEdit 中設定 Nimbus Look and Feel

除了以上方式之外,有些應用程式可以透過 UI 介面,讓你設定應用程式的 Look and Feel。例如 jEdit 的這個以 Java 開發而成的編輯器,就可以在 Utilities/Global Options... 主選單所開啟的 Options 視窗中,選擇 Appearance 設定 Look and Feel。以下是套用 Nimbus 之後的外觀:

jEditNimbus

附上一張預設樣式 (Metal) 作比較:

jEditDefault

設定 NetBeans 使用 Nimbus Look and Feel

一直覺得 Sun 是一家有著偏執傾向的公司,他們似乎有著一種,不管別人如何批評,想要做的,便會全力以赴做到好的企業精神。因此這幾年來在 NetBeans IDE 上的進展是有目共睹的 (雖然,我還是 Eclipse 的愛用者啊! ),而我也因此相當看好 JavaFX 未來的發展…。OK,回歸正題,我想社群裡面 NetBeans 的愛好者應該也不少,要設定 NetBeans 使用 Nimbus Look and Feel 也很簡單,只要找到 NetBeans 的安裝目錄,在 etc 子目錄下的 netbeans.conf 設定檔中,找到 netbeans_default_options 設定,在設定中加上 --laf Nimbus 即可。例如,我的設定是這樣子的:

netbeans_default_options="-J-Dorg.glassfish.v3.installRoot=\"C:\java\glassfish-v3-prelude-b15b\" -J-Dcom.sun.aas.installRoot=\"C:\java\glassfish-v2ur2\" -J-client -J-Xverify:none -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m -J-Dnetbeans.logger.console=true -J-ea -J-Dapple.laf.useScreenMenuBar=true -J-Dsun.java2d.noddraw=true --laf Nimbus"

以下是套用 Nimbus 之後的外觀:

NetBeansNimbus

再附上預設外觀看看:

NetBeansDefault

其實,隨著應用的不同,你很難找到一套一體適用於所有應用情境的 Look and Feel,不過,這又是另一個主題了,我就此打住。

2008/11/07

正妹牆螢幕保護程式

foxsaver-beauty1

辦公室前面擺了一個 40 幾吋的電漿螢幕,放置不用殊為可惜。與同事閒聊之際,突然靈機一動,何不拿來展示正妹牆,24 下時輪播,慰勞整天辛勞的宅男工程師。

有了這個想法,首先想到了就是要找個能播放 media rss 的螢幕保護程式。試了幾個,包括:

效果都出不來。決定拿 FoxSaver 一試 -- 嘿,別看太久,年輕人會流鼻血的。

FoxSaver 是 Firefox 的一個 Extension,可以把 Firefox 變成螢幕保護程式。從它的選項來看,圖片來源可以來自本機目錄,RSS 或一般網頁。由於這個 Extension 還在實驗中,在 addons.mozilla.org 網站上需要登入才能安裝。我在安裝之後,使用上是沒有大問題。重點來了,怎麼設定 FoxSaver 讀取正妹牆 RSS 呢。一圖勝千言,請見右圖 。

如此之後,在 Firefox 狀態列上的 FoxSaver 按鈕上點右鍵,選擇「FoxSaver 開始」就行了。

當然,也有人推薦用 PicLens/Cooliris 來觀正妹牆,除了可以自己操刀,將正妹們拉遠拉近觀看外(是不是第一次感受到那種呼之即來,揮之即去的操作感 >_<|||),要透過 Cooliris 來達到類似螢幕保護程式的效果,記得按一下三角型的播放鈕,這 -- 不就變成美女自動送上門的桌上版了嗎。

2008/04/21

用 JavaScript 來修飾你的超連結

網頁之間的互相引用、評論,是當代網誌的形式之一,而造就的結果就是正文之中充斥著超連結。

這樣的書寫風格本身並沒有所謂的好或不好。在我的日誌中,也存在不少此類用法。問題是,如果同一篇日誌中,重複提及一個特定的網頁,而該網頁又值得透過超連結參引,那麼重複編製超連結的動作,也會令人覺得繁瑣。

為此,我想到設定一種 "形式",再加上 JavaScript,來為正文中的特定字眼加上連結。

構想是,在每篇網誌的最後,加上一段 "相關連結" 或 "參考資料",段落名稱是什麼不重要,重點是:

  1. 將連結以無序清單的形式標明,每一清單項目以連結開頭
  2. 以冒號+空白 (": ") 來區分連結及解說文字,例如:
    • 愛頌過生活: 就是過日子,人生不需太多大道理!
    • DOM: Document Object Model (DOM); W3C 的官方說明

上例中的 "愛頌過生活" 及 "DOM" 字串,會被當作匹配條件,在正文的段落 (<p>...</p> 包起來的部分) 中,比對相符的字眼。若出現相符的字串,將被 JavaScript 套上超連結。

用來轉換文字成超連結的 JavaScript 程式碼如下:

<script type="text/javascript">
var init = {
  cmds: [],
  run: function(){
    for(i = 0; i < this.cmds.length; i++)
      this.cmds[i]();
  }
}

function getText(anchor){
   return anchor.text ? anchor.text : anchor.innerText;
}

function fixPostElements(){
   var uls = document.getElementsByTagName("ul");
   for(var i = 0; i < uls.length; i++)
      insertResourceLink(uls[i].parentNode)
}
function insertResourceLink(element) {
  var links= {};
  var lis = element.getElementsByTagName("li");
  for (var i = 0; i < lis.length; i++){
    if(lis[i].innerHTML.indexOf(": ") != 0){
      as = lis[i].getElementsByTagName("a");
      for(j = 0; j < as.length; j++)
        links[getText(as[j])] = as[j].href;
    }
  }
  var ps = element.getElementsByTagName("p");
  for(key in links) {
    var regKey = new RegExp(key, "g");
    for(var i = 0; i < ps.length; i++) {
      ps[i].innerHTML = ps[i].innerHTML.replace(regKey,
         "<a href="+ links[key] +">" + key +"</a>");
    }
  }
}
init.cmds.push(fixPostElements);
</script>

將上面的程式碼置於 HTML 的 head 區塊,在 body tag 中加上 onload="init.run()",於撰寫網誌時採用本文規範的形式,即可達所述的效果。

一篇符合本文形式規範的網誌文章,可參考 "PRISM for Firefox 3 beta 5 url link opening issue"。事實上,筆者正是在撰寫該文時,因對重複的超連結編製深感不耐,才產生此構想的。

附帶一提,如果讀者採用 Google Reader 或其他 RSS 閱讀軟體,那麼你將無法看到此 JavaScript 的效果,因為 RSS feed 中並不含 JavaScript 轉譯碼… 這樣的設計,或許可以解釋為:「為親自造訪本站的讀者,所提供的一點加值服務 ^__^」。

2007/01/02

我的一點 Thunderbird 使用訣竅

自從進入目前公司後,我便一直以 Thunderbird 作為我的 email client,算算時間也三年半以上。這一路走來,我發展了許多 Tunderbird 的應用密技,我想有許多可能是別人沒想過要這樣用的,特別發表出來,與各位分享。

(一) 利用 Message Filter, 將所有不在 Personal Address Book 中的來信,全部移到 Junk 信件夾


因為垃圾信實在太多,只好使出這招釜底抽薪的方式。如果是業務、專案上的初次來信,通常事先會透過電話連絡。此時只要手動自 Junk 中移回 Inbox,再將寄件人加入 Address Book,下次即不會再跑到 Junk box 中。

(二) 快速安裝 extension 的方式


在 https://addons.mozilla.org/thunderbird/ 裡面找到所要安裝的 extensions 後, 在網頁的 Install Now 按鈕上選右鍵,選 "複製連結網址"。然後打開 Thunderbird  的 Add-ons 管理員,按 Install,在 Select an extension to install 檔案對話窗中,在檔名文字欄位按 Ctrl+V 貼上 extension URL,再按下開啟,就會進行安裝程序。

(三) 用 7-zip 來修改 extension 的安裝資訊

如果你也是嚐鮮一族,已在使用 Thunderbird 2.0,那麼你將遭遇最大的問題極可能是 extension 版本的不支援。如果你願意碰碰運氣,可採用下面這種作法:

1. 以 7-zip 開啟 extension 的 xpi 或 jar 檔案
2. 在壓縮檔案的 install.rdf 按右鍵選編輯
3. 7-zip 會以你設定的編輯器開啟 install.rdf,找到類似以下這一段,將其中的 em:maxVersion 元素值調整到你的 Thunderbird 版本以上,例如 2.*,然後存檔,關閉編輯器

       
           
                {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
                1.0
                1.5.*
           

       


4. 7-zip 將提示你檔案已被修改過,是否要更新壓縮檔之訊息,請選擇確定,然後重新安裝 extension 即可。

(四) 用 Plaxo 同步通訊錄

不曉得你有沒有因為重灌電腦而遺失通訊錄的經驗呢?重灌電腦時,我通常會記得備份信件,但是聯絡人卻老是因忘了備份通訊錄而流失。

Plaxo 是一個線上服務,提供通訊錄、行程、作業及記事管理等諸多功能。對於 Thunderbird 而言,最實用的地方在於它提供通訊錄同步的 extension。我把 Plaxo 當成是我的通訊錄管理員,因為它支援了匯整、備份、同步聯絡人的功能:

  • 匯整:我把 MSN、Yahoo!、GMail 上所有的連絡人全數匯入 Plaxo 中
  • 備份:經上述匯整後,Plaxo 成為我唯一一個需要維護通訊錄的地方。因為在資料存在 Server 上,只在 Plaxo 還在,我永遠不怕通訊錄再次流失
  • 同步:因為使用多台電腦,而且我在不同的地方都裝有 Thunderbird,我可以透過 Plaxo 同步不同機器上的連絡人

在 Thunderbird 2.0 上安裝 Plaxo,由於 Plaxo Thunderbird Extension 目前只支援到 Thunderbird 1.5,所以請用前述的方法以 7-zip 來修改 extension 的安裝資訊。另外,個人覺得 Plaxo Toolbar 的設計極醜。若要隱藏 Plaxo Toolbar,可在選單列上選擇 PlaxoPreferences,將 Plaxo Preferences 對話窗中的 Show Toolbar check box 取消即可。

(五) 使用 Duplicate Contacts Manager 移除重複連絡人

當我使用 Plaxo 合併 MSN、Yahoo!、GMail 上的連絡人時,常會造成連絡人重複。透過 Duplicate Contacts Manager 這個 extension,可以快速找出重複聯絡人,並選擇保留與移除的項目。在移除重複連絡人後,從選單列執行 PlaxoSync,你會發現 Plaxo 通訊錄裡面重複的連絡人也被移除了。

(六) 將寄件備份與收件資料夾合併

我將寄件備份放在 Sent 信件夾中,Inbox 用來保留最新的信件。每隔一段時間,我會將 Inbox 裡的信件移到 Sent 信件夾。如此,在 Sent 資料夾中採用 Thread 模式檢視時,我獲得一個類似 GMail 的 Message Thread 介面,可以很方便的看到發信與回信的脈胳。

(七) 將老舊的信件移存到不同的信件夾中

將較老舊的信件,以年為單位封存到不同的信件夾之中,可以避免掉 Thunderbird 同一信件夾不得大於 4G 的限制。

(八) 使用 Remove Duplicate Messages 移除重複信件

有時在不同的信件夾間複製或移動信件後,會造成同一資料夾內信件重複的狀況。使用 Remove Duplicate Messages 這個 extension,可以快速的刪除重複的信件。在信件刪除完畢後,別忘了在該資料夾上執行 Compact,如此才能真正的減少信件檔案的儲存空間。

(九) 善用 To(收件人) 或 Subject 信件表頭欄位分類信件
我知道 Thunderbird 2.0 已正式加入對 Tag 的支援。但是我所採用的方式,不但適用於 Thunderbird 1.x,而且比之 Tag 的操作更為簡易。作法很簡單:在編輯新信時,我會把 To 欄位拿來輸入分類關鍵字,我稱為 To tags。例如,這篇 blog 就是在 Thunderbird 中編寫的。我將此信件的 To 欄位分別加上 blog, note, thunderbird 三行。如果是內收信件,就需要 TB Header Tools Extension 這樣的 extension 才能更改信件表頭。對於內收信件,我通常會透過修改 Subject 的方式,來分類信件,如 [Project:Company].... 這樣的格式。

(十) 善用 Search  Folder  建立分類檢視

Draft 信件夾原本放置外寄信件的草稿,在我為信件加上 To tags 後,它變成個人記事資料夾。我進一步為 Draft 信件夾建立各種查詢條件的 Search  Folder 來設定分類檢視。例如我有個 Search  Folder 名為 "部落記事",其查詢條件為 "to Contains blog";另有個 "生活記事" 則對應為 "to Contains diary"。當然,透過 Search Folder 可建立更複雜的查詢條件。

同樣的,專案的分類檢視也可透過建立 Search Folder 為之,只是查詢條件會變成 "subject Contains Project:Company" 這樣的型式。

(11) 拿 Drafts 信件夾當記事薄

之所以拿 Drafts 信件夾當記事薄,而非別的信件夾的原因是:預設 Thunderbird 所有新信存檔時都會存放在 Drafts 信件夾中。你可以在 Drafts 信件夾重複編輯信件,而不用擔心它會跑到別處。要 Tag 分類的功能,可用上述的 To tags;要樹狀分類的功能,則可用 Subfolder 結合 Search Folder。

當初會想用 Thunderbird 來做記事管理,另一個原因是它的 Rich Editor 功能實在做的太好。而信件又可夾帶附檔,加入圖片。再說,除非你只用 Web Mail,否則電腦裡極可能需要一套 email client,既是如此,那何不就把它的應用效益最大化,這樣又少了需要另外安裝記事軟體的需求。