2008年8月26日 星期二

SERP : Search Engine Results Page

前幾篇文章談了一堆關於Ranking的技術, 最後也就是最重要的就是SERP (Search Engine Results Page), 不管您的PageRank, TrustRank ... 等等指標多好, 如果使用者在搜尋時無法出現在前幾頁, 也就是有較好的SERP的話, 所有的指標都只是白費功夫, 空有好的內容, 但搜尋引擎並不認識你, 可說是非常可惜的事情, 如何才能夠讓您的網頁有優秀的SERP表現呢?

SERP與keyword及網頁結構關係最密切, 而高的PageRank不能保證有好的SERP, 高的流量也不能保證有好的SERP, 如果能夠有好的內容再加上優秀的SERP, 那才是網站成功的保證

當使用者下了一個keyword, 哪些重要因素影響SERP的結果呢?

(1)網頁title

例如本文章的重點在談SERP, 而title就是"SERP : Search Engine Results Page"
如果您的內容無法表現在title tag上, 當然SERP就無法有好的表現, 這也就是上次談到: SEO 三大建議, 希望能夠使用blog結構的原因, 因為可以不需額外功夫就讓內容的title顯示出來

(2)網頁meta data

meta data中的keyword, 與內容中的heading處理, 也可以讓search engine特別注意, 這個在上文Semantic HTML也提到過, 使用正確的tag, 可以讓search engine瞭解您的內容

(3)網址與目錄

如果您的網址或目錄中含有keyword, 如http://www.serp.com/serp-pagerank/serp.html, 如此也可以讓您針對SERP這個keyword有較好的結果, 並且就網址後綴來說, 一般org/net/com 也比ccTLD (Country Code Top Level Domain, 如org.tw/net.tw/com.tw)要好

(4)網頁內容

當然在您文章的內容一定要出現該keyword, 並且真的就是關於該keyword的文章, 否則使用者找到您的網頁也就沒啥意思了

(5)Refresh rate

什麼是Refresh rate? 就是您網站的更新頻繁度, 如果您的網站內容時常更新, 除了能夠讓search engine加快抓取頻率外, 也能夠讓SERP有更好的結果

也許有人會問:到底search engine會多久來抓我的資料? 除了使用http://www.google.com/webmasters/可以讓您上傳sitemap來告知之外, search engine也會自動根據您更新頻繁度來修正抓資料的頻率, 也就是如果每次search engine來抓資料都發現您已經更新, 他會修正縮短抓資料的區間, 如果來抓資料時發現您的網站沒有更新, 則放慢抓資料的區間

因此當您的網頁如果已經被indexing後, 並且您的網站屬於Trust那個區塊, 其實search engine抓資料的頻率有很大因素決定在您手上

標籤: , , , , , , , ,

繼續閱讀

TrustRank, PageRank, SERP

許多站長常常問一個問題 : 為何我的網頁已經建置很久了, 但一直沒被Google index? 另外一個問題也常常被問到 : 為何許多PageRank值比我低的網頁, 搜尋時出現在我的網頁前面?

第一個問題的答案是 : TrustRank, 而第二個問題的答案是 : SERP (Search Engine Result Page)與PageRank不一定成正比

本部落格的網頁最快約10~30分鐘就會被Google抓走, 最慢也在一天內就被Google抓走, 原因是TrustRank

什麼是TrustRank? 詳細資料請看 : Combating Web Spam with TrustRank

由於全球的網頁數目太龐大, 因此Google的Sandbox, TrustBox技術會將網頁區分為兩大區塊-被排除的區塊(Sandbox)與信任的區塊(TrustBox)

哪些網站會被信任? 被Dmoz list的網站, 被Social bookmark熱門推薦的網站, 被TrustRank/PageRank高的網站所連結的網站 ... 這篇文章也提到一些成為TrustBox區塊的方式

另兩篇文章 : What is Google TrustRank (TR)?, The Social Side Of Trustrank 也提出許多提高TrustRank的方式, 本站之前的文章也都提到過

當TrustRank較好時才會快速被抓取, 被抓取後才可能有好的SERP, SERP就與網頁結構有很大的關係, 但是真正決定SERP的因素, 現在還是只能由結果來猜測, 尚無真正能夠證明哪些因素來決定SERP (SERP的研究倒是不錯的研究題目)

不過不管如何, 研究了一堆PageRank, TrustRank, SERP ... 之後, 其實最重要的還是老話一句 - 內容與結構! 就把一些指標暫時放一邊, 好好研究如何產生好的內容與正確使用Semantic HTML比較實在吧!

標籤: , , , , , , ,

繼續閱讀

PageRank, BrowseRank, AlexaRank

在八月初的SIGIR (Special Interest Group on Information Retrieval)研討會上, 出現了BrowseRank: Letting Web Users Vote for Page Importance

這個微軟研究中心的BrowseRank演算法, 大抵是想跟Google的PageRank一別苗頭, 到底這個BrowseRank是否能夠比PageRank來得好呢? 我們來研究一下

大略瀏覽了上述的論文, 發現BrowseRank只是Page-level的AlexaRank, 他的data set來自於瀏覽軟體的使用者資料, AlexaRank由Alexa toolbar所得到的資料來分析, 而BrowseRank由微軟的IE所得到的資料來分析

AlexaRank只是Domain-level ranking, BrowseRank比較仔細一些, 進到Page-level Ranking, Website-level Ranking, 而PageRank是透過link-analysis來取得頁面的重要度

論文題目說: Letting Web Users Vote for Page Importance, 其實是值得商確的, 網友到訪了一個網頁, 未必就認為該頁是重要的, 可能看完後幹聲連連 ...

因此我們可以粗略的說AlexaRank標示了網域的熱門度, BrowseRank標示了網頁/網站的熱門度, PageRank標示了網頁的重要度

到底哪個比較精準, 就牽涉到幾個問題:

(1)比較熱門的網站是否就比較重要?
(2)link數目多就代表比較重要?
(3)不同階層的使用者, 熱門度如何參考?
(4)廣度網站與深度網站, 熱門度如何參考?

當然上面問題沒有正確答案, 學術研究的網站一般不能跟入口網站比熱門度(AlexaRank與BrowseRank), 而新興網站一般不能與歷史悠久的網站比重要度(PageRank), 但是也可能會有例外 (而且例外還不少)

所以也很難去比較AlexaRank,PageRank,BrowseRank到底哪個好, 後續有更多資料再來分享啦...

標籤: , , , , , , , ,

繼續閱讀

2008年8月25日 星期一

Pagerank 演算法研究

Larry Page在1996年間發明了Pagerank的演算法, 爾後又與Sergey Brin在Stanford發表了"The Anatomy of a Large-Scale Hypertextual Web Search Engine", 這個Web Search Engine就是現在使用的Google, Pagerank詳細內容到1998年才發表, 並且直到2001年才取得專利

Page Rank公式如下



(以上公式圖形由http://www.sitmo.com/latex/產生)

以上d指damping factor, 其值在0~1, 一般設為0.85
PR(Vi)為Vi這個頁面的PR值
In(Vi)為連進Vi這個頁面的link數目
Out(Vj)為Vj這個頁面連出去的link數目

也就是說如果有3個頁面A,B,C

A如果連到B,C
B如果連到C

如果A的PR=4
則PR(B)=(1-0.85) + 0.85 * 4/2 = 1.85

而PR(C)=(1-0.85) + 0.85 * (4/2 + 1.85) = 3.4225

B,C會平均繼承A的PR值, 但C會單獨繼承B的PR值

Pagerank是一種link-analysis algorithm, 是根據citation analysis而來, 原本使用在學術期刊論文被引用次數的技術

在Pagerank之後, 1999年Kleinberg發表了HITS algorithm(Hyperlink-Induced Topic Search), HITS決定兩個值: authority value & hub value, 並且是在query time計算, 而不是像Pagerank是在indexing time計算, Teoma就是使用HITS (目前被Ask.com收購)

相對於link-analysis algorithm的content-analysis algorithm, 於另外文章再討論

不管是Pagerank或是HITS, 都是iterative ranking algorithm, 非常耗費演算時間及資源, 因此許多研究者提出了不同的方式來加速計算時間:

1999年 Efficient Computation of PageRank(Haveliwala and et al.)

2002年 Pagerank Computation and the Structure of the Web:Experiments and Algorithms(Arasu and et al.)

2002年 I/O Efficient Techniques for Computing PageRank(Chen and et al.)

2003年 Scaling Personalized Web Search(Jeh and et al.)

2003年 Exploiting the Block Structure of the Web for Computing PageRank (Kamvar and et al.)

2003年 Extrapolation Methods for Accelerating PageRank Computations (Kamvar and et al.)

2004年 Parallel PageRank computation on a gigabit PC cluster (Manaskasemsak and et al.)

2006年 Parallel adaptive technique for computing PageRank (Rungsawang and et al.)

2007年 Improvement of Pagerank for Focused Crawler (Yuan and et al.)

但是不管怎麼加速演算法, 其iterative ranking algorithm的特性不會改變, 但可能會加入content-analysis algorithm的一些特性來走向semantic web

而Pagerank公式內的Out(Vj), 使得一些做SEO的人注意到HTML中的nofollow特性, 來進行一些link quality的改善

標籤: , , , , ,

繼續閱讀

2008年8月20日 星期三

網路行銷/網路營銷 : SEO 三大建議

在許多網站上可以看到諸如: "如何快速提升Pagerank", "Pagerank 7的快速捷徑" ...等等的文章或影片, 但是仔細去看這些網站的Pagerank竟然都是低於3或甚至降到0, 他們教您購買軟體, 他們教您快速增加backlink, 他們教您如何以短短幾分鐘的作業去提升PR值, 但是經事實證明, 不但無法達成目的, 還可能造成反效果, 在本篇文章中, 我們很誠實的告訴您真正被Google認可的方式 ...


在前幾篇文章已經提出許多觀念, 您可以去回顧一下:

Internet大破譯(五): 看不見的網路行銷戰場
善用PageRank指標提升企業競爭力
搜尋引擎的運作背後
網路行銷 : SEO 五大要素
網路行銷 : SEO 十大守則
網路行銷/網路營銷 -- 內容為王

除了以上一些觀點之外, 我們再提供三項實務的建議, 當然這些不管是五大要素, 十大守則, 或是三大建議, 最後回歸的都是 Content (內容), 沒有價值的內容創造不出有價值的網站

但是有價值的網站需要讓search engine瞭解, 並讓讀者可以搜尋到您的內容, 這也是所有搜尋引擎希望所有webmaster能夠協助的地方: 在search engine還不夠智慧的情況下, 讓search eninge能夠真正反應讀者想要尋找的內容

哪三項實務的建議呢?

(1)建立部落格

以目前的網頁結構來說, blog是最適合search engine抓資料的, 因為tag/category/publish date等等要素, 讓文章與文章之間會自然產生關聯, 這些關聯會讓片段的文章形成一串互相有關的內容, 這些關聯可以讓search engine知道如何index這些片段, 也可以讓讀者去一層層找到需要的資料, 因此如果您的網站沒有blog的結構, 應該盡快構思如果組織您的內容去建立有價值的blog

(2)善用網路社交工具

什麼是網路社交工具? network bookmark (網路書籤)就是一個例子, 建立部落格後僅是在您的內容上建立關聯, 而使用網路書籤可以讓blog間串聯起來, 並且讓更多人來看到您的內容, 並且網路書籤的tag可以將這些關係標準化, search engine可以很輕易的index相關內容

(3)使用Semantic HTML

什麼是Semantic HTML? 根據wikipedia的Semantic HTML解釋, Semantic HTML不是一般webmaster能夠瞭解的, 但是有另外一篇比較淺顯的說明您可以參考: Writing Semantic HTML

Semantic HTML的目的就是讓您的內容可以清楚呈現給search engine, 因為search engine並不瞭解您的內容, 但是透過HTML tag, 他可以知道這段文字是屬於哪個類別

總而言之, 其實以上三大建議, 是希望您的網站在結構關聯上, 能夠替search engine做更清楚的描述, 如此一來search engine瞭解您的網站, 也同時讓讀者知道搜尋到的是否是需要的內容

真正的Search Engine Optimization (SEO)是在協助search engine, 而不是在欺騙search engine


許多人都說做SEO要偷偷做, 不要讓search engine知道您的作法, 其實只要是正確的SEO作業, search engine反而是鼓勵的, 因為您可以改善他們的搜尋效能

在內容上提升, 在結構與關聯上修正, 才是真正在進行SEO, 請大家光明正大的進行, 如此一來才可以讓讀者找到需要的資料而不是一堆不相干的垃圾

標籤: , , , , , , , , , , , ,

繼續閱讀

2008年8月19日 星期二

SEO : 搜尋引擎無法索引Flash檔案?


以往大家都認為盡量不要使用Flash, 因為Flash檔案文字內容無法被搜尋引擎抓取, 但是這種情況已經會逐漸改善, 根據Adobe的SWF說明資料, Adobe已經陸續提供技術給搜尋業者, 以防止Flash會被網站開發者排除使用...

雖然如此, 但是目前使用的搜尋引擎只有Google, 並且目前讀取SWF資料的技術尚未純熟, 因此還是盡量不要整頁使用Flash, 並且需依照Google對於Flash/Image的Guideline:

(1)Googlebot does not execute some types of JavaScript. If your webpage uses JavaScript to load a Flash file, we may not be able to discover and index the contents of that file.

不要使用Javascript去載入Flash
如果使用Javascript載入Flash, 這個Flash就無法順利被index

(2)We currently do not attach content from external resources that are loaded by your Flash files. If your Flash file loads another file - such as an HTML file, an XML file, or another SWF file - we may index the contents of those files, but we won't consider that content to be part of the content in your Flash files.

不要使用Flash去載入另外檔案
如果使用Flash載入其他檔案, 這個被載入的檔案就無法順利被index

(3)We're currently unable to index the bidirectional language content (for example, Hebrew or Arabic) in Flash files.

第三點跟我們比較無關

除此之外, Yahoo只是承諾使用Adobe提供的技術, 並未正式使用, 而Microsft Live Search等也尚未有任何相關訊息

雖然Flash檔案會逐步被搜尋引擎接受, 但在使用上還是要注意許多細節, 提供Flash與Non-Flash版本, 才能夠讓您的網站美觀之外, 還能夠俱備搜尋引擎的可讀性

後續可能發展, 將密切觀察後再跟各位報導啦 ...

標籤: , , , , ,

繼續閱讀

2008年8月12日 星期二

使用手機或PDA離線瀏覽Google Map (之3)


(以上為手機使用MGMaps的狀況)

上兩篇文章(使用手機或PDA離線瀏覽Google Map之2 )談完後, 您應該對產生地圖的概念已經清楚了吧! 現在來談如何安裝到手機 (以Nokia N95為例子, 其他設備大同小異)

(1)選取MGMaps選單的Settings (如下)


(2)Settings->Map Types來Add Custom Map, 客製自己的地圖類型

(設完記得儲存)

(3)輸入Map Type Name與Map Type URL如下
Map Type Name隨您高興輸入, Map Type URL輸入http://mt.google.com/mt

(設完記得儲存)

(4)回到Settings->Map Browsing


(5)勾選Stored Maps, Offline Mode, 並輸入手機上存放地圖的路徑

(設完記得儲存)

完成以上後, 再回到MGMaps ... 奇怪! 地圖沒有出現啊?

記得按"0"去切換地圖type, 並使用Go to到您地圖的範圍

祝您使用愉快啦!

標籤: , ,

繼續閱讀

使用手機或PDA離線瀏覽Google Map (之2)


(上圖是MapCacher)

繼上篇文章談到使用手機或PDA離線瀏覽Google Map的大步驟後, 這篇文章來談MapCacher及gMapMaker的用法

MapCacher的主要目的是抓出您要的地圖範圍, 也就是經緯度資料

gMapMaker的主要目的就是把您要的地圖範圍, 根據您的設定, 抓下詳細地圖資料

MapCacher用法如下:

先到MapCacher網址, 也就是http://www.mapcacher.com, 如上圖

(1)如圖上標示的1, 先找到您要的地圖, 並以滑鼠點選出地圖範圍

(2)設定Zoom Level, 一般來說設12~17最恰當, 但視您的行動設備的儲存空間來調整, 範圍越大(如10~18)則需要空間越大, 用gMapMaker產生地圖時間越長

(3)設定詳細程度, 使用medium speed, medium detail, 或視您的需要設定

(4)設定地圖類型, 您可以使用Google Map, Yahoo Map或其他地圖

(5)設定完成後, 按下Generate, 則會開始產生檔案, 並要您存檔(*.map), 存起來後當執行gMapMaker時候使用

到目前為止, 只是產生了一些經緯度數字, 地圖細節還沒有產生

接著就來執行gMapMaker, 如下圖



Cache Folder : 設定您要暫存地圖的位置

Use Proxy : 一定要勾取, 因為如果不勾取, Google Map等provider會暫時將你的ip停權

Operating Mode : MGMaps Mode, use a .map file

(其他就不需再設定, 其他設定後續再談...)

按下Go後, 就選擇您剛剛使用MapCacher產生的map檔案, 就讓他慢慢跑啦, 所需時間視您標示的範圍而定

等執行完成後, 地圖檔案就準備好啦, 下篇再來談行動設備的設定 ...

標籤: , ,

繼續閱讀

2008年8月5日 星期二

使用手機或PDA離線瀏覽Google Map


(以上是於機場使用Google Map)

以前在旅遊時需要攜帶一堆地圖, 當需要資訊時手忙腳亂的東翻西找, 看起來真的是相當滑稽, 現在感謝Google以及一群優秀的工程師, 讓一大堆資料可以全部裝到手掌大的行動設備上, 現代人旅遊真的越來越方便了, 如果您還不知道如何好好利用這些先進的設備, 趕緊看看以下文章吧 ...

現在的行動設備的作業系統分成兩大陣容: Microsoft作業系統與Symbian作業系統, 這些系統又分成許多版本不同的系統, 在尋找好用的軟體時需要注意版本的相容性

目前在HP iPAQ 6315, Sony Ericsson P800, Nokia N95測試了以下幾個行動設備的地圖軟體:
(1)Mobile Google Map (For Symbian, Pocket PC)
(2)Power Navigator (For Symbian)
(3)Mobile GMAPS (For Symbian, Pocket PC)

以上的軟體都允許Online及Offline來瀏覽地圖或與GPS設備來定位, 但是其中以Mobile GMAPS最簡易並且精準, 並且由於它是Java程式, 可以安裝在Microsoft及Symbian的設備上

但Mobile Google Map在安裝於某些版本的PPC時無法安裝, 並且要使用offline的程序太過複雜, 而Power Navigator無法安裝在Nokia N95上, 而安裝於SE P800時, 由於地圖需使用MapEditor自製地圖, 搭配使用GPS時, 常常出現定位不精準的狀況

以下就是Nokia N95使用內建GPS實際在遊艇上測試的狀況, 發現精準度幾乎100%


以下是安裝步驟:

(1)安裝MGMAPS軟體-依照您的行動設備的檔案傳輸方式把mgmaps下載後傳到行動設備安裝

(2)下載gMapMaker, 並安裝到PC備用

(3)使用MapCacher抓下地圖定位範圍

(4)使用剛剛安裝在PC的gMapMaker及步驟(3)的檔案來產生地圖(依您地圖的範圍需等待一些時間)

(5)然後把步驟(4)的地圖檔案放到行動設備相對應的MGMapsCache目錄下,並設為隱藏目錄

(6)設定mgmaps軟體在您的行動設備為offline

如此一般就可以使用來定位啦(在土耳其伊斯坦堡實際測試)...如下







初次使用者最常在(4)(5)(6)出錯, 後續再來詳細介紹各分解動作 ...

[MapCacher使用說明] [安裝到手機]

標籤: , ,

繼續閱讀

2008年5月28日 星期三

近期語意技術探討(一)


(圖片來源:http://gridinoc.name)

2008年可以說是語意技術發燒的一年, 並且近年來不管是研究單位或是新創公司, 對於語意相關技術的重視與投資可謂不遺餘力, IEEE Intelligent Systems也在今年初刊登了不少關於語意技術的文章, 我們來看看到底語意已經發展到什麼程度 ...

語意技術對於一般使用者是感覺不到的, 您並不知道到底哪個東西應用了語意技術, 頂多您會覺得電腦好像變聰明了, 但是如果運用得不好, 您可能會覺得怎麼電腦這麼笨, 電腦的聰明與愚蠢就完全取決於到底是否正確的運用Semantic Technology(語意技術)、Artifical Intelligence(人工智慧)、Nature Language Processing(自然語言處理)、Ontology(本體論)...等等

在W3C的網站就舉了幾個語意技術的使用案例

例如其中BT(英國電訊)的案例, 根據Forrester研究顯示排名前3500的大公司, 花費在整合的費用是$6.3 million並且其中的31%花在整合外部公司, 而電信類的公司花在整合外部公司的比例高達70%

BT就將Semantic運用在SOA(Service-Oriented-Architecture)上, 讓他們的外部夥伴使用Internet與BT的B2B Gateway聯接, 輕易的自行處理作業支援相關運作, 如此一來減輕了支援成本, 也加速了作業效率

這個技術使用SOA來將整個系統分成Presentation Tier、Service Tier、Data Tier, 透過Service Tier的Semantic Broker去抓取異質系統的資料, 然後呈現在外部公司的系統上或是瀏覽軟體上, 如此一來BT本身的不同系統整合起來了, 外部公司使用各種不同系統也都可以順利的透過這個B2B Gateway來整合

在目前語意技術的運用上, 幾乎離不開Web2.0與SOA, 就其中Markup與Mashup的特性來發揮, Markup讓資料可以分析、交換(如XML、RDF、RuleML), 而Mashup可以讓服務混搭, 因此幾乎所有的技術都繞著Markup與Mashup走, Semantic/Web2.0/SOA幾乎就是Internet三位一體的趨勢

目前在歐洲的語意研究上, 以Neon-ProjectSEKTDIP為主, 各自都發展許多不同的語意技術與工具, 下次再仔細說明囉 ...



標籤: , , , , , , , ,

繼續閱讀

2008年5月23日 星期五

如何在Blogger For Domain使用繼續閱讀功能

使用Blogger服務的人都有一個困擾, 那就是文章無法分成"上半段"與"下半段", 也就是無法在首頁只顯示每篇文章的上半段, 並顯示『繼續閱讀』來展開下半段, 我在網路上尋找許多解答, 大多的方式不是只適用一般的blogger(不適用blogger for domain), 不然就是需要一大堆work, 如果您想在Blogger For Domain使用繼續閱讀功能, 這裡有一個簡單得嚇人的方式...

首先在blogger的template-->Edit html中的CSS部分加入以下的code(且稱為code-1):

/*.....繼續閱讀的語法開始..........*/
<MainOrArchivePage>
span.fullpost {display:none;}
</MainOrArchivePage>
<ItemPage>
span.fullpost {display:inline;}
</ItemPage>
/*.....繼續閱讀的語法結束..........*/



然後找到<div class="post-body">
在相對應的</div>上方加上如下的code(且稱為code-2):

<MainOrArchivePage>
<a href="<$BlogItemPermalinkURL$>"><img src="您的繼續閱讀圖案路徑" border=0 alt="繼續閱讀"></a>
</MainOrArchivePage>



然後在setting-->formatting下的Post Template內輸入以下的code(且稱為code-3):

<span class="fullpost">
<span>


以後您在編寫新的文章時, code-3會自動出現在編寫內容中, 只要文章夾在span的tag內, 都會變成下半段, 而在span tag之上的內容, 就是上半段啦, 本部落格就是使用Blogger的blog for domain, 看您運作起來是否跟本部落格一樣啦!

標籤: , ,

繼續閱讀

2008年5月7日 星期三

勞力密集的高科技網路業


(圖片來源:http://www.explorepahistory.com/)

照理說高科技主要目的是在節省人力,讓需要人力的作業透過科技來快速處理,但是在層層環節還無法暢通的情況下,你所認為的高科技背後,可能就像上圖一樣 ... 看似一切自動化的假像下,其實後面是一堆人在揮汗作業著 ...

你認為在YouTube、無名影音等網路影音服務,是誰在監看哪些內容是不合規定的?

你認為酷訊網站翻書客等垂直整合查詢的資料是怎麼來的?

你認為SEO(Search Engine Optimization)廠商用什麼方式讓你的網站提高搜尋出現機率的?

答案揭曉...

YouTube、無名影音等網路影音服務,除了靠使用者檢舉之外,是靠人去監看哪些內容是不合規定,然後予以刪除。當資料量越來越大時,不是陷入無法控制的局面就是必須投入更多的人力。

垂直整合查詢的服務必須事先以Information retrieval的技術,分析取得資料的HTML TAG來確認抓取資料的格式,這當然就必須人力介入以提高準確度,但是當抓取資料的對方修改網站結構,所有資料就亂了譜了,所以當資料結構變更頻繁時,勢必投入更多的人力來修正。

而SEO就更是勞力密集了,雖說有一堆SEO軟體的協助,但是SEO軟體分析結果還是必須由人來決定哪些要修改?要採取哪些動作?然後背後一堆人來登錄網路目錄,並且大多再靠人力來監看結果。

為啥這麼累? 因為許多技術還不純熟,因為資料的互通還卡在許多關卡,因為只有人來作判斷才能確保最後結果。

哪些技術還不純熟? 影音內容與文字內容的語意技術,目前還無法讓電腦正確自動判讀影音內容或文字的語意,大多市面上的技術都還無法保證百分之百的準確。而資料互通雖然有XML與Web Services的技術,但是對方不開放的情況下,仍舊無法達到自動互通的結果。

想像一下,你用滑鼠一點,有這麼多的內容讓你免費取用,但是其背後正躲著一群人努力忙碌的產生較正確的資料,這個畫面是有些滑稽,如果資料量越來越多,整個勞力密集的高科技網路業會怎樣呢?

標籤: , , ,

繼續閱讀

當Real Player可以下載網路影音檔案 ...


Real Player新版免費下載軟體於2007年推出,他可以在網路上觀看YouTube等線上影音時下載非DRM(Digital Rights Management)保護的各類網路影音檔案,並且內建燒錄軟體可以把下載的檔案,方便的燒錄成CD或DVD。這個功能確實造福了廣大的使用者,但是卻也引發了一場一觸即發的戰爭 ...

Real Player提供的這個功能雖然不算創新,原本就有許多軟體或技巧可以將網路影音下載,但是總需要額外的安裝或步驟,但是現在連電腦白癡都可以一個按鍵把所有檔案搬回家,這個功能可能造成的問題,想起來就有些可怕 ...

到底哪裡可怕?

原本在網路分享的影音檔案,只是希望使用者透過網路平台來觀看,但是現在使用者可能下載後重新製作與燒錄,造成了Copy Rights更多的問題。原本透過網路平台以帳號密碼來觀看的公播版,如果沒有DRM機制,已經完全沒有保障了。

並且此舉,對於提供網路影音平台的業者,如YouTube、I'm TV、無名影音...等等,也會造成不小的衝擊,會造成廣告效益降低以及網路平台更加繁忙。

以往使用者在使用YouTube,可能一一的觀看各個網路影片,多少都會停留在頁面,而頁面上的廣告也才會有曝光度,但現在使用如果使用Real Player下載影片,他可以快速瀏覽了數十個影片,但都不在頁面觀看,等待下載完成後才在Real Player界面上觀看,此舉就造成了YouTube的流量提高了,但卻使得廣告效益降低了...

雖然Real Player的這項貼心功能實在讓使用者稱讚,但卻也帶來了更多著作權與版權的問題,並且是否會在網路影音平台造成風暴呢? 持續觀察才能知道了!

標籤: , , ,

繼續閱讀

2008年5月1日 星期四

Buffalo MiniStation 2.5吋500G測試報告


Buffalo Technology近日推出2.5吋500 GB Ministation turbousb攜帶式USB硬碟,提供了一個大容量/重量輕/抗衝擊的儲存解決方案。經過幾天的暴力測試,在傳輸速度/穩定度等表現,均在水準之上。

MiniStation內建高轉速高效能的2.5”SATA硬碟,除了高規格的日製硬碟外,MiniStation還採用了由BUFFALO獨自研發,全球首創的「TurboUSB技術」,讓實際傳輸速度可高達40MB/s。

MiniStation的Bumper Body外殼採用耐摔和減少撞擊力的材質,內部架構也加入了特殊材質來更加保護硬碟。而為讓常跑來跑去的使用者更方便攜帶,MiniStation的USB線可環繞著產品本身來收納,不會像其他品牌那樣一條線晃來晃去的,MiniStation還會隨附BUFFALO所獨有的Secure LockWare軟體來將您的檔案加密保存。

Buffalo MiniStation 2.5吋500G TurboUSB規格如下:
-介面:USB2.0 / 1.1
-upstream port:USB Mini-B socket
-sector容量:512Bytes
-seek time:13ms以下
-資料傳輸速度:USB2.0:最大480Mbps
-電源:USB BUS POWER(由電腦供應)
-電源管理:支援(WindowsXP SP1以上版本)
-消耗電力:最大2.5W
-外觀:W127×H83×D21mm(不包括突起部分)
-重量:約225g
-保固 : 全機兩年保固

在ASUS-D672 PC (Pentium D CPU 2.8G,1G RAM)Windows XP SP2平台下
經過ATTO Disk Benchmark測試結果如下

在未啟用Turbo USB前Write達到27MB/s,Read達到34MB/s,經enable TurboUSB之後,Write達到32MB/s,Read達到41MB/s,經過ATTO Disk Benchmark測試TurboUSB結果如下


並經過實際大量檔案傳輸下,傳輸速率都維持在20MB/s左右,並且機身不會因長期使用而發燙,因此在效能/尺寸/穩定度上,都算是相當不錯,目前價格大約在新台幣$9,500左右。

標籤: ,

繼續閱讀

2008年1月15日 星期二

PC與隨身碟檔案安全防護 : TrueCrypt

在之前文章提到過PGP Key 的使用與管理 , 可以將檔案安全加密或使用PGP DISK來建立加密volume, 不過由於PGP軟體自8.0以後已經不是免費軟體(除非你還能取得PGP 8.0軟體), 因此在此再介紹另外一款加密檔案的免費軟體: TrueCrypt, 這裡介紹的內容將有一般正常的作法, 與隨身可攜而且簡便的使用方式

一、安裝與中文化方式如下

(1)首先去下載TrueCrypt檔案

下載連結: http://www.truecrypt.org/downloads.php

裡面有windows的zip檔案及Linux的tar.gz檔案, 看您自己環境去選擇

再來下載中文化檔案: http://www.truecrypt.org/downloads/thirdparty/localizations/langpack-zh-tw-1.0.0-for-truecrypt-4.3a.zip

(2)把TrueCrypt zip檔案解壓縮後, 去執行安裝 (執行TrueCrypt Setup.exe)

(3)安裝完成後, 把中文化檔案解壓縮後, 把Language.zh-tw.xml放到您安裝TrueCrypt的目錄下 (預設是 C:\Program Files\TrueCrypt)

(4)開始執行TrueCrypt, 選擇Settings->Language->選擇繁體中文 (如下圖)



(5)這樣你就看到了TrueCrypt的中文畫面了 (如下圖)




二、TrueCrypt的使用

再來介紹TrueCrypt的使用, 基本上TrueCrypt在您的硬碟中以加密方式(密碼或加上金鑰檔)建立一個檔案, 您可以把這個檔案載入變成電腦的一個獨立邏輯單元, 這個獨立邏輯單元就如同一個硬碟, 但是要打開這個硬碟必須有正確的密碼或者加上金鑰檔

(1)如下圖選擇建立一個加密區 (一個檔案型態,可以在PC或隨身碟)




(2)選擇標準TrueCrypt加密區, 或隱藏的TrueCrypt加密區, 按下一步
(其實沒有必要選隱藏, 不然到時候反而找半天 ...)



(3)選擇加密區的檔案名稱
例如我建立在G:\TrueCrypt\mycrypt.dat
不打附檔名也可以, 但是打一個自己習慣的附檔名, 讓自己以後知道這是TrueCrypt的加密區檔案, 比較不會搞亂




(4)加密選項 (不熟悉加密演算法的話, 就直接下一步吧...)
等使用很熟悉之後, 再來改變加密方式




(5)設定這個加密區的空間大小




(6)設定您的密碼 (千萬要記得密碼喔!)



(7)將加密區格式化 (僅把您設定的檔案格式化, 不要擔心整個硬碟會不見)




(8)建立完成囉, 就按下結束離開







現在開始來使用這個加密區 :

(1)如下圖先選要建立成哪個代號(也就是磁碟代號)
然後選您之前建立的加密檔案, 如剛剛我建的 G:\TrueCrypt\mycrypt.dat
然後按下載入 (當你不需使用時記得卸載下來)




(2)再去看看我的電腦, 就多出H:磁碟機了 ...
放在H:這裡面的檔案就會加密, 沒有密碼或金鑰檔就進不來啦




三、讓TrueCrypt變成可攜式

最後, 也許有人會問 ... 那如果我把隨身碟當成加密區
使用另外一台電腦沒安裝TrueCrypt怎麼辦? 還要再安裝一次嗎?

根本不需要, TrueCrypt幫你想好了

如何讓TrueCrypt跟著隨身碟跑呢?

(1)如下圖, 只需選擇工具->可攜版設定




(2)選擇隨身碟放置TrueCrypt的位置, 按下建立 ... TrueCrypt就在你的隨身碟上了



但是, 如果使用攜帶式的方式還要每次載入與卸載 ...未免太麻煩了

因此您可以在"隨身碟放置TrueCrypt的目錄"下, 建立兩個檔案 (只適用windows環境):

將以下程式碼以小作家編寫, 存成 mount.wsf


<job id="mount">
<script language="jscript">
var oShell = WScript.CreateObject('WScript.Shell');
oShell.Run('\\TrueCrypt\\TrueCrypt.exe /q /a /b /m rm /v "mycrypt.dat"',1,true);
</script>
</job>


將以下程式碼以小作家編寫, 存成 unmount.wsf


<job id="mount">
<script language="jscript">
var oShell = WScript.CreateObject('WScript.Shell');
oShell.Run('\\TrueCrypt\\TrueCrypt.exe /q /d /b',1,true);
</script>
</job>


在以上mount.wsf中的紅色部分就是您的加密檔案, 依您習慣來修改即可
把mount.wsf, unmount.wsf, mycrypt.dat, TrueCrypt.exe, Language.zh-tw.xml 等檔案都放置在隨身碟同一個目錄

如此, 隨身碟插上各不同PC, 只需執行mount.wsf ->輸入密碼

不使用時只需執行unmount.wsf即可

這樣就不需每次都要出現TrueCrypt複雜的界面了...容易吧 !

標籤: , ,

繼續閱讀

2008年1月8日 星期二

如何使用MS SQL的Stored Procedure與Trigger

上篇大致說明了MySQL的Stored Procedure與Trigger, 現在來談談Microsoft的SQL server (以SQL 2000為例, 2003/2005則大同小異)

雖然都是database的stored procedure與trigger,但是語法卻不同,另人頗為頭痛

Microsoft SQL的stored procedure主要以Transaction SQL語法 (T-SQL),除了procedure語法差異外, SQL語法本身也略有不同 ...


MS SQL使用 SELECT TOP 20 * FROM MY_TABLE

MySQL使用 SELECT * FROM MY_TABLE LIMIT 0,20

以上都是挑選資料中的前20筆資料

MS SQL使用LCASE,UCASE,INSTR,MID等函數來處理字串, 但MySQL與Oracle則使用LOWER, UPPER, LOCATE, SUBSTRING ... (MySQL string function reference, MySQL 5.0 reference)

Microsft走的路線以T-SQL及VB語法的方式, 因此只要T-SQL/VB熟悉, SQL server就易如反掌了 ... 因此筆者都以ANSI-SQL, T-SQL, VB, PHP這些概念將MySQL, Oracle, MS SQL一次通通學習起來

(1)Stored Procedure

建立SQL Server的stored procedure首先打開SQL Server Enterprise Manager, 選取預存程序, 按下滑鼠右鑑 ->新增預存程序 (畫面如下)



我們來建立一個簡單的例子:

CREATE PROCEDURE TEST_ADD
@emp_no varchar(10)

AS

SET NOCOUNT ON

BEGIN TRAN
INSERT testtable (emp_no) VALUES (@emp_no);
COMMIT TRAN
GO

以上紅色的字是依需要修改

有了這個stored procedure後就可以執行
EXEC TEST_ADD('0000000001')

SET NOCOUNT ON主要是希望不需回覆筆數
也就是"停止在部份結果集中傳回顯示Transact-SQL 陳述式或預存程序所影響之資料列數的訊息"

但是如果你希望執行本機stored procedure去操作遠端機器database

就必須改成

CREATE PROCEDURE TEST_ADD
@emp_no varchar(10)

AS

SET NOCOUNT ON
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
SET XACT_ABORT ON

BEGIN TRAN
INSERT LinkedServerName.master.dbo.testtable (emp_no) VALUES (@emp_no);
COMMIT TRAN
GO

並且不能在SQL Server Enterprise Manager下去新增stored Procedured
而要在Query Analyzer (前文提過)

以下是使用到Linked Server必須宣告的:

SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
SET XACT_ABORT ON

(2)Trigger

建立SQL Server的Trigger首先打開SQL Server Enterprise Manager, 選取要建立trigger的table, 按下滑鼠右鑑 ->所有工作 -> 管理觸發程序 (畫面如下)



然後鍵入

CREATE TRIGGER trigger_name ON tableName
FOR INSERT

AS

SET NOCOUNT ON
DECLARE @newSeq_id VARCHAR(10)
SELECT @newSeq_id = (SELECT seq_id FROM Inserted)
UPDATE TableName2 set counter=counter+1 where seq_id = @newSeq_id

以上就是做: 當表格有任何資料插入, 則去另一表格對應欄位去累加

如果如同上面說的, 要運作到遠端的Linked Server, 除了要建立linked server外, 程序要改成:

CREATE TRIGGER trigger_name ON tableName
FOR INSERT

AS


SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
SET NOCOUNT ON
SET XACT_ABORT ON

DECLARE @newSeq_id VARCHAR(10)
SELECT @newSeq_id = (SELECT seq_id FROM Inserted)
UPDATE LinkedServerName.master.dbo.TableName2 set counter=counter+1 where seq_id = @newSeq_id

以上只是大略敘述使用方式, 至於UPDATE/INSERT/DELETE以及更深的T-SQL就要自己再研究啦 ...


標籤: ,

繼續閱讀

如何使用MySQL的Stored Procedure與Trigger

MySQL在5.0版後增強了資料庫stored procedure(5.0)與trigger(5.0.2)的功能, 根據MySQL自己的定義:

A stored procedure is a procedure (like a subprogram in a regular computing language) that is stored (in the database).

Correctly speaking, MySQL supports "routines" and there are two kinds of routines: stored procedures or functions.

也就是MySQL支援routines: stored procedure與functions, 而針對table的INSERT/UPDATE/DELETE動作,更加入了trigger


這幾個更新功能讓MySQL更具備大型資料庫的架勢, 以下就來談談如何測試這幾個功能:

(1)Stored Procedure

使用MySQL的stored procedure有幾個方式:

dos command/phpmyadmin/EMS的MySQL Manager

首先以DOS command進入MySQL



接著可以打入 show procedure status; 來看看有無既存的stored procedures



現在我們進入使用test這個database (MySQL預設已經有的資料庫)

use test;
show tables;
desc tbl;

看到了tbl這個表格的結構 ...



現在我們建一個stored procedure

先使用宣告 delimiter 來告訴MySQL結束字元是 //

然後打入以下

Create procedure mytest1()
update tbl set f3=concat(f1,f2);



這樣去呼叫mytest1後, 就把f1,f2兩個字串串起來存到f3了 !

再來建立一個傳變數的stored procedure



(2)Trigger

首先看看表格結構: tbl與tbl2



再來建立trigger, 並看看效果
當有資料插入tbl時, 把f1欄位也插入到tbl2的f1欄位



看看我們剛建入的trigger




因此只要對於SQL有認識, 使用stored procedure與trigger應該不成問題...
但是頭痛的是...MySQL與MS SQL的語法又略有差異, 因此下次也來談談MS SQL, 以及為何要使用stored procedure及trigger ... 待續了

標籤: ,

繼續閱讀

2007年12月20日 星期四

物件導向關聯式資料庫

關聯式資料庫管理系統( RDBMS, Relational Database Management System, 如mySQL, MSSQL等)是大家比較熟悉的資料庫系統,以database-table-field-record等概念來集合成資料,以field間的relation來建立table互相的關聯。但是這樣的形態有一個與實際世界的gap,也就是物件的class特性,因此而出現了物件導向的資料庫系統(OODBMS, Object-Oriented Database System, 如Caché)。

RDBMS與OODBMS的拉鋸戰,總是RDBMS勝出,最主要是因為有ER-Model及易懂的SQL等完整而簡易的工具來操作,因此雖然與實際世界有gap,但比較容易學習。

OODBMS是啥?看看以下的展示:
http://www.maddash.net/videos/intersystems/cache_demo/

也可以由這裡去找OODB的資源:
http://odbms.org/

另外的一個理論就是Object-Relational Database,使用RDBMS來建立OO的概念,這種作法就牽涉到Object-Relational Mapping,將物件與關聯式資料庫間做對映。

以上RDBMS、OODBMS、ORDBMS三種技術,到底有哪些優缺點呢?下次再談 ...

標籤: , ,

繼續閱讀

2007年12月12日 星期三

於Windows XP環境安裝dotProject (二)

上一篇文章已經探討過在Windows XP使用AppServ 2.5.9來安裝dotProject繁體UTF8中文版,如何正常顯示Gantt圖的方式,現在再來討論dotProject其他需要修正的地方,也就是發送email錯誤的修正。

要正式啟用dotProject,需要先做以下步驟:

(1)先更改admin的資料,包括正確的email address
(2)建立公司、建立部門、將admin設到某公司某部門下
(3)建立專案、建立任務

以上主要目的是要測試dotProject是否能正確發送email


(1)新增任務或任務日誌時,勾選發送email,submit出去出現以下錯誤

ERROR 001
Fatal error
: Maximum execution time of 30 seconds exceeded in C:\AppServ\www\dotProject\classes\libmail.class.php on line 461

當你去設定系統管理->系統配置,修改為SMTP發送,並輸入正確SMTP Server後,問題仍舊一樣 ...

(2)而在新增ticket(問題跟蹤單)時,送出email通知也出現以下錯誤

ERROR 002
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\AppServ\www\dotProject\modules\ticketsmith\do_ticket_aed.php on line 89

Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\dotProject\modules\ticketsmith\do_ticket_aed.php:89) in C:\AppServ\www\dotProject\classes\ui.class.php on line 510



ERROR 003
Fatal error: Maximum execution time of 30 seconds exceeded in C:\AppServ\www\dotProject\classes\libmail.class.php on line 465

關於ERROR 001:
表示在libmail.class.php無法去發出email
我們打開libmail.class.php (在dotProject/classes下)發現

$this->transport = dPgetConfig('mail_transport', 'php');
$this->host = dPgetConfig('mail_host', 'localhost');

他並沒有去抓dotProject的config,直接設成php方式接localhost

關於ERROR 002:
do_ticket_aed.php亦使用libmail.class.php方式發送email,也沒有去抓dotProject的config

關於ERROR 003:
去修改dotProject的系統設定maximum timeout也沒有用

由以上可以知道dotProject這個版本的發送mail方式並不統一
在dotProject的系統管理下去設定SMTP並不能解決問題

最後的測試結果,在盡量不修改dotProject程式情況下,以下為解決方式:

(1)修改php.ini
[mail function]
; For Win32 only.
SMTP = yourSMTPServer
smtp_port = 25

(修改完重新啟動Apache Server)

(2)修改do_ticket_aed.php (在dotProject/modules/ticketsmith下)

原程式碼
mail($ticketNotification[$priority], $AppUI->_('Trouble ticket')." #$ticket ", $message, "From: " . $CONFIG['reply_to'] . "\nContent-type: multipart/alternative; boundary=\"$boundary\"\nMime-Version: 1.0");

修改成
mail($email, $AppUI->_('Trouble ticket')." #$ticket ", $message, "From: " . $CONFIG["reply_to"] . "\nContent-type: multipart/alternative; boundary=\"$boundary\"\nMime-Version: 1.0");

(3)將libmail.class.php修改
原程式碼
var $charset = "us-ascii";
var $ctencoding = "7bit";
var $receipt = 0;

修改成
var $charset = "utf-8";
var $ctencoding = "8bit";
var $receipt = 0;

(4)修改ticketsmith下的view.php
在if (@$type_toggle @$priority_toggle @$assignment_toggle)
的前面加上以下程式碼

$author2 = $author;
$position = strpos($author2,"<");
$position++;
$author3 = substr($author2,$position);
$author4 = rtrim($author3, ">");

然後把兩行
mail($ticketNotification[$priority], $AppUI->_('Trouble ticket')." #$ticket ", $message, "From: " . $CONFIG['reply_to'] . "\nContent-type: multipart/alternative; boundary=\"$boundary\"\nMime-Version: 1.0");

修改成
mail($author4, $AppUI->_('Trouble ticket')." #$ticket ", $message, "From: " . $CONFIG['reply_to'] . "\nContent-type: multipart/alternative; boundary=\"$boundary\"\nMime-Version: 1.0");

經測試,送出正確email
但尚有些問題待解決,如ticketsmith的followup.php的錯誤,如發送email通知時,如何發出通知給task所有人/被指派人或ticket所有人/被指派人 ... 過陣子再談了。

標籤: ,

繼續閱讀

於Windows XP環境安裝dotProject (一)

dotProject是一款開放源的專案管理系統,由dotProject.net團隊所開發設計。他的功能主要用來管理專案執行時的績效與時程,並且俱有詳細的權限管理與模組結構,更重要的是可以使用多國語系,在繁體與簡體中文的支援上,除了pdf列印尚未解決之外,其他中文顯示都比其他同類產品來得方便使用。

dotProject除了有官方正式版外,尚有繁體與簡體的更正版與語言包,但是經測試結果,在不同的PHP環境與不同的作業系統,相同版本的dotProject需要不同程度的修正。因此在此,先以Windows XP環境搭配AppServ/Apache2Triad兩種伺服環境來說明安裝的程序。

Windows XP下使用AppServ來安裝dotProject繁體中文版

Appserv 2.5.9版 : http://prdownloads.sourceforge.net/appserv/appserv-win32-2.5.9.exe?download

dotProject繁體中文版 (dotProject_2.1_RC2_20070529_UTF-8_Chinese版本): http://rt.openfoundry.org/Foundry/Project/Download/?Queue=238

(1)把以上軟體下載解壓縮後備用

(2)安裝AppServ (假設安裝於 c:\appserv目錄下,主機為localhost)
設定MySql character set為utf-8 unicode

(3)把dotProject目錄(dotProject_2.1_RC1_20070423_UTF-8_Chinese_by_Markwu)複製到c:\appserv\www目錄下,更名為dotProject以方便使用

(4)開啟http://localhost/phpmyadmin
登入後新增資料庫,名稱為dotProject,選擇utf8_bin語系

(5)開啟http://localhost/dotProject
按下"Click Here To Start Installation and Create One!"
按下"Start Installation"

(6)在Database User Name輸入root
在Database User Password輸入你安裝AppServ時設定的密碼
按下"Install db & Write cfg"
會出現兩個Warning:

Warning: include_once(C:\AppServ\www\dotProject/includes/config.php) [function.include-once]: failed to open stream: No such file or directory in C:\AppServ\www\dotProject\db\upgrade_permissions.php on line 7

Warning: include_once() [function.include]: Failed opening 'C:\AppServ\www\dotProject/includes/config.php' for inclusion (include_path='.;C:\php5\pear') in C:\AppServ\www\dotProject\db\upgrade_permissions.php on line 7

以上Warning尚無重要影響,可暫不理會

(7)刪除或重新命名c:\AppServ\www\dotProject\install目錄

(8)進入http://localhost/dotproject/ 重新整理頁面
出現登入畫面,輸入帳號 admin、密碼 passwd

呵呵....出現如下畫面



(8)選擇projects->Gantt
出現如下畫面,甘特圖無法顯示




甘特圖無法顯示主要有幾個因素: memory與php library沒有正確設定

memory問題牽涉到兩個地方: php.ini與dotProject system configuration

(9)先來解決memory問題
到php.ini (位置在 c:\windows目錄下) 找到
memory_limit = 8M

修正為:

memory_limit = 16M (或32M, 64M, 128M, 256M)

16M應該大致都沒有問題

然後到開始->設定->控制台->系統管理工具->服務
把Apache 2.2重新啟動

(10)回到http://localhost/dotproject/
選擇projects->Gantt,重新整理畫面

應該可以看到以下畫面




(11)如還沒出現甘特圖,再到dotProject的System Admin->System Configuration
把Memory Limit for Gantt設為16M (與php.ini的memory_limit設成相同數值)

再看看甘特圖是否正常顯示
(修改php.ini記得重新啟動Apache)

就Windows XP/AppServ環境下,應該可以正常顯示

(12)現在把英文轉到中文
到dotProject的User Admin->edit (如下圖)




選擇edit preferences (如下圖)




把locale改成Traditional Chinese (Taiwan) (如下圖)




再看看甘特圖是否正常顯示中文 (如下圖)



標籤: ,

繼續閱讀

2007年12月5日 星期三

PGP Key 的使用與管理