2006年2月24日 星期五

FireFTP 的中文顯示

FireFTP 的中文顯示一直有問題,今天就花了點時間瞭解 FireFTP 的程式,想要將他改成可以支援顯示中文,不過到目前為止還沒成功,只有進站訊息可以正常顯示以外,中文目錄就還沒辦法正常顯示,所以這種也只能算是「自爽」用的,看起來比較順眼而已。

底下是我修改後顯示的畫面。

2006年2月15日 星期三

結婚紀念日

每年的結婚紀念日我都不會忘,當初不知怎麼挑日子的剛好就是情人節的隔天 2/15,這樣的日子會忘記才怪,每年都會一堆人在幫忙提醒你結婚紀念日快到了喔,趕緊挑選禮物吧!

假如問我為何結婚,當初也沒想哪麼多,反正只是一張紙,身邊多了一個人而已,還有就是嘿...嘿...嘿...,一切盡在不言中。

寫 Blog 也不知道要寫什麼,今年還是一樣,不知道要送什麼禮物,準備打混摸魚的混過去。 ^_^||

2006年1月31日 星期二

無力感...

可能是老了,不在有之前的活力了,最近對於寫套件顯得有點提不起勁。

從不知道修改的這個套件到底是好還是不好,套件有沒有錯誤,那邊需要改進,會有回應的從來就只有那麼幾個,或許...不想了。 @_@|||

或許吧,最近這個版本釋出後,我大概就會收手不做了,既然做這個是興趣,而已經讓我做到趣味索然,那我就不想做了。

這個套件目前應該還缺少匯出與匯入設定跟自訂詞彙編輯,至於會不會做,看心情吧,會不會釋出,也看心情,不過應該會給幾個朋友用吧。

2006年1月11日 星期三

燦坤 - 記憶體 金士頓 DDR 400 1G $2,999

昨天在網路上看到有人貼出說「燦坤」的記憶體在特價,當天即跑去看了,結果發現情況不太一樣,雖然也是金士頓 DDR 400 1G 不過價格不同,網路貼的價格是 $2,699 ~ $2,799,不過我到現場問得價格是 $2,999,但還是比一般的便宜,這一兩天有要買記憶體的可以參考看看。

對了,根據店員的說明,好像只有這一兩天而已,過了就沒有了。

2005年12月14日 星期三

有誰想要玩魔獸世界?

Edit: 啟動碼已經送出了。 ^_^

很不小心的得到了一組魔獸世界的啟動碼,得到的緣由請看「魔獸世界 包月大放送」,想要的請留言吧,還有我只有一組,只有這麼一組。

2005年11月9日 星期三

我的 Blog 的價值

在一個 Bolg 上看到一個滿好玩的網站 (http://www.business-opportunities.biz/projects/how-much-is-your-blog-worth/),計算你的 Blog 的價值,呵呵我當然也要來算一下。

當然,這個是趣味為主,不用太在意結果。 ^_^

2005年11月3日 星期四

Firefox 擴充套件 (Extension) 寫作入門之九

擴充套件的認證
  • 參考網址
    • http://www.mozdevgroup.com/docs/pete/Signing-an-XPI.html
    • http://www.mozilla.org/projects/security/pki/nss/tools/certutil.html
  • 取得 NSS 工具
    • ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_10_RTM/
  • 建立 (購買) 憑證
  • 利用 NSS 工具來封裝 xpi

Firefox 擴充套件 (Extension) 寫作入門之八

測試與除錯
  • 參考網址
    • http://kb.mozillazine.org/Setting_up_extension_development_environment
  • 測試 - 土法煉鋼
  • 除錯 - JavaScript Console
    • http://kb.mozillazine.org/JavaScript_Console
function myDump(aMessage) {
var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
.getService(Components.interfaces.nsIConsoleService);
consoleService.logStringMessage("My extension: " + aMessage);
}

Firefox 擴充套件 (Extension) 寫作入門之七

多語、國際化
  • XUL
    • 建立 .ent (或 .dtd) 檔
      <!ENTITY  button.label     "Click Me!">
      <!ENTITY button.accesskey "C">
    • 引入
      <!DOCTYPE window SYSTEM "chrome://packagename/locale/filename.ent">
    • 使用
      <button label="&button.label;" accesskey="&button.accesskey;"/>
  • JavaScript
    • 建立 .properties 檔
      key=value
    • 引入:使用 nsIStringBundleService/nsIStringBundle 或在 XUL 中建立 <stringbundle>
      <stringbundleset>
      <stringbundle id="strRes" src="chrome://sample/locale/sample.properties"/>
      </stringbundleset>

      var strRes = null;
      strRes = document.getElementById("strRes");
      alert(strRes.key);

Firefox 擴充套件 (Extension) 寫作入門之六

擴充套件之安裝設定
  • chrome.manifest
    • http://developer.mozilla.org/en/docs/Chrome_Manifest
  • 範例
content packagename uri/to/files/ [flags]
locale packagename localename uri/to/files/ [flags]
skin packagename skinname uri/to/files/ [flags]
overlay chrome://URI-to-overlay chrome://overlay-URI [flags]

Firefox 擴充套件 (Extension) 寫作入門之五

擴充套件之安裝設定
  • contents.rdf
    • http://developer.mozilla.org/en/docs/Creating_toolbar_buttons
      # 5 The list of commonly overlayed windows with toolbars
  • 範例
<?xml version="1.0"?>

<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:chrome="http://www.mozilla.org/rdf/chrome#">

<RDF:Seq about="urn:mozilla:package:root">
<RDF:li resource="urn:mozilla:package:myextension"/>
</RDF:Seq>

<RDF:Description about="urn:mozilla:package:myextension"
chrome:displayName="My Extension"
chrome:author="author"
chrome:contributor="contributor"
chrome:name="myextension"
chrome:description="My Simple Extension."
chrome:extension="true">
</RDF:Description>

<RDF:Seq about="urn:mozilla:overlays">
<RDF:li resource="chrome://browser/content/browser.xul"/>
</RDF:Seq>

<!-- overlay for Firefox. -->
<RDF:Seq about="chrome://browser/content/browser.xul">
<RDF:li>chrome://tongwen/content/overlay.xul</RDF:li>
</RDF:Seq>
</RDF:RDF>

Firefox 擴充套件 (Extension) 寫作入門之四

擴充套件之安裝設定
  • install.rdf
    • http://developer.mozilla.org/en/docs/Install_Manifests
    • 產生 GUID - http://developer.mozilla.org/en/docs/Generating_GUIDs
    • Target Application GUIDs
Firefox      {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
Thunderbird {3550f703-e582-4d05-9a08-453d09bdfdc6}
  • 範例
<?xml version="1.0"?>

<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">

<Description about="urn:mozilla:install-manifest">
<em:id>myextension@mysite.com</em:id> <!-- (Firefox 1.5 ~ ?) -->
<em:id>{22870005-adef-4c9d-ae36-d0e1f2f27e5a}</em:id> <!-- (Firefox 1.0) -->
<em:version>1.0</em:version>
<em:type>2</em:type>

<!-- Target Application this extension can install into,
with minimum and maximum supported versions. -->
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>1.0+</em:minVersion>
<em:maxVersion>1.5</em:maxVersion>
</Description>
</em:targetApplication>

<!-- Front End MetaData -->
<em:name>Sample!</em:name>
<em:description>A test extension</em:description>
<em:creator>Your Name Here</em:creator>
<em:homepageURL>http://www.foo.com/</em:homepageURL>
</Description>
</RDF>

Firefox 擴充套件 (Extension) 寫作入門之三

擴充套件之安裝設定
  • 參考網址
    • http://developer.mozilla.org/en/docs/Building_an_Extension

  • 安裝方式的演進
    • install.js (XPInstall) (Mozilla Suite)
    • install.rdf + contents.rdf (Firefox 1.0.x)
    • install.rdf + chrome.manifest (Firefox 1.5.x ~ ?)
  • install.js
    • http://www.mozilla.org/projects/xpinstall/browser_xpi.html
    • http://xulplanet.com/references/objref/#xpinstall

2005年10月27日 星期四

Firefox 擴充套件 (Extension) 寫作入門之二

擴充套件之檔案結構
  • 檔案格式
    • .xpi -> zip
    • .jar -> zip

  • 目錄結構
extension.xpi:
/chrome/
/chrome/chromeFiles/
/chrome/chromeFiles/content/
/chrome/chromeFiles/content/
/chrome/chromeFiles/locale/
/chrome/chromeFiles/locale/en-US/
/chrome/chromeFiles/locale/zh-TW/
/chrome/chromeFiles/skin/
/chrome/chromeFiles/skin/classic/
/components/ Component and XPT Files (>=1.7)
/defaults/
/defaults/preferences/ Default Preferences (>=1.7)
/plugins/ NPAPI Plugins (>=1.8)
chrome.manifest Chrome Registration Manifest (>=1.8)
install.rdf Extension/Theme Install Manifest
install.js

2005年10月24日 星期一

Firefox 擴充套件 (Extension) 寫作入門之一

擴充套件之寫作基礎:
  • 基本技能:
    • HTML
    • JavaScript:DOM (Document Object Model)
    • XML:XUL、RDF、DTD
  • 進階技能:
    • CSS
    • XPCOM (Cross Platform Component Object Model)

什麼是擴充套件?這應該不用說明了吧,只要有在用 Firefox 的都知道。

在開始撰寫擴充套件時,首先需要了解擴充套件所使用的程式語言,如上面所列的,這樣才能進一步踏進擴充套件寫作之門。

Firefox 的擴充套件十之八九都是使用 JavaScript、XUL 與 CSS 寫成的,就連 Firefox 的外觀與瀏覽網頁的動作也都是這幾樣語言所組成的 (除了 Firefox 的 Gecko 核心外)。所以,在沒有這方面的基礎上,擴充套件的內容對你也只是一堆看不懂得「火星文」。

這邊要說明一點,JavaScript 並不等同 Java,兩者的語法與架構幾乎完全不同,唯一相同的大概是名字裡都有 Java 這四個英文字。

附註:
在 Firefox 的安裝目錄中 (例如:C:\Program Files\Mozilla Firefox\) 有個 chrome 目錄,裡面有幾個 *.jar 的檔案,你可以使用壓縮工具,例如:7-zip 這類的工具解開其中的 browser.jar 就可以發現裡面幾乎都是一些 *.js 與 *.xul 的檔案...

2005年10月23日 星期日

Firefox 擴充套件 (Extension) 寫作入門之前言


記得大約是去年的這個時候,第一次動手修改 Firefox 的擴充套件「同文堂」,當初會動手修改是想要借此磨練撰寫 JavaScript 的功力,還有就是遲遲等不到「同文堂」的改版。

當 初的「同文堂」就只有簡體轉繁體或繁體轉簡體單字轉換功能而已,而缺乏詞彙轉換功能。兩岸三地經過這麼多年的隔閡,兩者之間的遣辭用句都有所不同,每每看 到「軟件」、「打印」等字就覺得很怪異,也就開始嘗試將詞彙轉換的功能加入,這也讓我正式踏入擴充套件的寫作之路。在修改「同文堂」的日子裡,我要特別感 謝 vertex 網友的協助,有了他才有現今的「新同文堂」,他花了不少的功夫在詞彙轉換對照表與測試上。

好了,閒話到此為此,上面有幾個我常去逛的網站,這些是我在撰寫擴充套件時,最主要的參考資料來源,大家有空可以過去逛逛。

2005年10月20日 星期四

遇見 Mac mini

前一陣子終於忍不住跑去蘋果專賣店去買了 Mac mini,看到它那小巧玲瓏的身軀,令我喜愛不已,話雖如此,還是很少拿起來用,主要都是擺著好看。

直到十月初,開始嘗試將它運用在工作上。剛開始遇到的第一個問題是使用習慣,一些快速鍵的定義、滑鼠的操作與軟體的使用都跟 Windows 不太一樣,還記得第一次在使用 Mac OS X 時,我還花了大半的時間摸索要如何切換輸入法呢。

漸 漸的開始習慣 Mac 的操作後,就開始想將 PC 上常用的軟體移到 Mac 上來使用,但是我常用的那些軟體幾乎都沒有出 Mac 版的,於是就開始尋找替代軟體。不可諱言,Mac 上的軟體的資源真的比 Windows 要少得多,費了不少功夫才稍微將我需要的軟體找到,目前還有一些工具不知道要到那邊尋找呢。

正當我要開始享用這顆 "蘋果" 時,卻發現它常常當機,Mac 不是幾乎不當機的,怎麼我的這顆蘋果這麼容易當,到底是那個地方出了問題,整顆蘋果除了記憶體是額外添加的,但也是在蘋果專賣店買的,別人難得一見有四國 語言的當機畫面,我到是常常看到,更有甚著,直接死當,連那個當機畫面都不會出現。還有一次,直接在桌面上出現 console 的訊息,這會不會太誇張了,怎麼會這樣呢?!

直到昨天實在受不了了,記得 Mac OS X 的安裝光碟有一個 hardware test 的工具可以用,就用這個來查查到底是那邊出了問題。啟動後開始測試,主機板 OK,儲存裝置 OK,記憶體...失敗,記憶體測試才沒多久就失敗,不會吧!

關 機,小心翼翼的將 Mac mini 的外殼打開,取出記憶體,望著被脫掉外殼的 Mac mini,晃著手中的記憶體,心想怎麼辦,難道要插回原本那只有 256 MB 的記憶體嗎?不甘心,Mac OS X 在那少少的記憶體中實在無法發揮應有的實力,再插一次試試看,若真的不行只好放棄。嗚嗚~~~

這一次用了我自己認為真的可以將記憶體插好 的方式,雙手用力一按,聽到喀的兩聲,仔細巡視一下是否插好了,心想應該可以了。緊接著再執行一次硬體測試,隨著時間一分一秒的過去,硬體測試也逐漸推進 到了記體體測試的部份,此時心想上天保佑,千萬要過測試啊,不然真的要換回原本那小小的記憶體了。

看 著螢幕上那測試的進度條一點一點了增加,心中一點一點的增加信心,到現在都沒問題,應該是沒問題了。突然螢幕一花,出現五顏六色的線條,不由得一楞,不會 吧,在這最後關頭失敗了,還導致螢幕亂掉。自己告訴自己,再等等看,看看會不會好,真的不行才直接從開機。等了一會兒,螢幕恢復到正常的測試畫面,此時我 才想起,記得剛剛測試開始前看了一下硬體測試的項目,最後一項是 VRAM 的測試,也就是顯示卡的記憶體的測試,該不會 VRAM 的測試是這樣的畫面,眼前突然一閃,螢幕又出現另一幅五顏六色的畫面,看樣子,VRAM 的測試是這樣子沒錯。

測試終了,OH ~~~YA~~~通過測試了,通過測試了耶,好高興喔!終於不用換回那小小的記憶體了。之後花了一段時間,重新安裝整個 Mac OS X,心想應該是不用重裝整個 Mac OS X,這好像是 Windows 的遺毒,不過因之前記憶體出錯,不知道有沒有將錯誤的資料寫入硬碟中,抉擇之下,還是重裝了。最後,只等往後使用上會不會常常當機就知道這次的測試有沒有 真正成功。

PS: 終於打完了,我同事給我一個評語,真像在看週記啊! XD

2005年8月9日 星期二

留職停薪

最近想要休息一陣子,也就跟公司辦理留職停薪,不過有同事對我說:「假如不是想走人,請假就好,留職停薪幾乎是離職的客氣方式。」在詢問人資之後,我也有這樣的感覺,留職停薪後,基本上已經跟該公司毫無關係了。

記得在詢問人資時,人資就回我說:「直接辦離職啦,不要在辦什麼留停.. 沒啥意思。」我當時有點錯愕為什麼人資會給我這樣的建議,人資接著就說:「辦留停的人通常都不會回來的。」

在辦理留職停薪後,人資就會將個人的勞健保轉出,勞保除了退休金外沒有多大的關係,而健保自己就要想辦法找地方投保了,不然看病沒有健保,你就會覺得人生是黑白的。

後來想想,跟公司投保的勞健保一轉出後,就跟公司幾乎沒有什麼瓜葛了,也難怪同事跟人資會這麼對我說。所以,辦理留職停薪後,就可以拍拍屁股走人了,不過,想要回到原公司就要看看當初有沒有跟公司談好了。

至於我嘛....再說吧! ^_^

2005年8月1日 星期一

RTFM

RTFM

维基百科,自由的百科全书

RTFM 是一個英文縮寫字,意思是:「去讀那些他媽的手冊」( "Read The Fucking Manual" ),這句話通常用在回覆那些只要查閱文件就可以解決,拿出來提問只是浪費別人時間的問題。而為了避免這個縮寫字因為用了 fuck 這個字而攻擊性、火藥味太重,RTFM也被解釋成「去讀那些愚蠢的手冊」(Read The Foolish Manual);有的時候也解釋成「去讀那些友善的手冊」(Read The Friendly Manual)或「去讀那些寫得不錯的手冊」(Read The Fine Manual)。另外,有時候就乾脆把「F」拿掉,直接寫成RTM(去讀手冊,Read The Manual)。

在某些加入大英國協的國家中,許多黑客則傾向使用RTBM,同樣意指「去讀那些天殺的手冊」( Read The Bloody Manual ),原因是在這些國家中,Bloody 與 fuck 一字同意,不過在美國則較少有這種用法。

與這個字類似的黑客用語還包括 RTFS :「去讀該死的源碼」(Read The Fucking Source) 或 RTFB :「去讀該死的二進位碼」(Read The Fucking Binary)。前者也常常以星際大戰中的台詞「用原力啊,路克」(Use The Force, Luke)改寫成「用源碼啊,路克」(Use The Source, Luke),而縮寫成 UTSL, 這樣的寫法因為具有幽默的趣味,以及假設是是程式開發者並沒有提供完善的手冊,而降低使用 RTFM 一字時的攻擊性,特別是,在應用 RTFB 的場合,往往是因為程式執行檔案已經過於老舊,而且欠缺文件,唯一能夠了解程式的方法就是直接閱讀機器碼,使用太過攻擊性的詞彙,實在不妥。另外,在Slashdot網站上,也可以看到類似的RTFA(去讀天殺的文章,Read The Fucking Article),這個字用在回應某些沒有看清原文內容,就發表沒有關係的留言的人。在1996年開始在Usenet上也可以看到STFW(去搜尋天殺的網站吧,Search The Fucking Web)這類的字,另外一個版本是UTFG(去用天殺的Google搜尋一番吧,Use the Fucking Google)。

2005年7月20日 星期三

在 FreeBSD 上編譯 cvsnt-2.5.01.2025

搞了好久,終於將 cvsnt 編譯完成,還真是難搞啊。
首先先設定編譯環境,不然有些 lib 與 include 會找不到。
setenv CPPFLAGS "-I/usr/include -I/usr/local/include -I/usr/X11R6/include"
setenv LDFLAGS "-L/usr/lib -L/usr/local/lib -L/usr/X11R6/lib"
接著確認有無安裝 /usr/ports/net/mDNSResponder,假如有會讓 configure 誤判導致編譯失敗,所以先移除再說 (只要有裝 KDE 的基本上一定有)。

至於還需要哪些程式,這就不清楚了,我糊里糊塗的裝了許多 ports 中的東西,所以自己試試看吧。

剩下的步驟,這就沒什麼好說的了,只要底下三個步驟就完成了。
./configure
make
make install