<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet title="XSL formatting" type="text/xsl" href="/atom.xsl" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-tw">
<title>愛德華日誌</title>
<link rel="self" type="application/atom+xml" href="http://nettrace.blogspirit.com/atom.xml"/>
<link rel="alternate" type="text/html" href="http://nettrace.blogspirit.com/" />
<subtitle>增上螺旋．生命之書</subtitle>
<updated>2008-07-09T00:54:34+08:00</updated>
<rights>All Rights Reserved blogSpirit</rights>
<generator uri="http://www.blogspirit.com/admin/" version="6.0">blogspirit</generator>
<id>http://nettrace.blogspirit.com/</id>
<entry>
<author>
<name>Edward HSIEH</name>
<uri>http://nettrace.blogspirit.com/about.html</uri>
</author>
<title>使用 Google Trends, 你有進行基值/基期校正嗎?</title>
<link rel="alternate" type="text/html" href="http://nettrace.blogspirit.com/archive/2008/07/08/使用-google-trends-你有進行基值-基期校正嗎.html" />
<id>tag:nettrace.blogspirit.com,2008-07-09:1589692</id>
<updated>2008-07-09T00:54:34+08:00</updated>
<published>2008-07-09T00:54:34+08:00</published>
<category term="Research" scheme="http://www.blogspirit.com/ns/types#category" />
<category term="Thinking" scheme="http://www.blogspirit.com/ns/types#category" />
<category term="Web" scheme="http://www.blogspirit.com/ns/types#category" />
<summary> 因為在 iThome 看到一位與我有一面之緣、熱衷 Flex 的高手，透過分析 Google Trends...</summary>
<content type="html" xml:base="http://nettrace.blogspirit.com/">
&lt;p&gt;因為在 iThome 看到一位與我有一面之緣、熱衷 Flex 的高手，透過分析 Google Trends 資料，寫了一篇名為「RIA四雄群起：以Google Trends評析現有RIA四大技術(Flex、Silverlight、JavaFX、Curl)」的 blog。由於其中各種技術熱門程度的差異實在太大，激起了我進一步自行探索的動力。&lt;/p&gt;&lt;p&gt;第一件使我產生懷疑的是，文中指出 Flex 技術是 2004 年發行 1.0 版，我到 Wikipedia 查了一下資料，是 2004 年 3 月。那時候 Flex 還是 Macromedia 所提出的一個 Server 端方案，需配合貴死人的 Server 端執行。而由圖一可以明顯看出，Flex 的趨勢線在 2004 年初就一直處於高檔，直覺跟…好吧--年紀--告訴我這不合理。&lt;/p&gt;&lt;p style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/edwardsayer/2649460535/&quot; title=&quot;Flickr 上 edwardsayer 的 ria-3&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3259/2649460535_021607a888_o.png&quot; alt=&quot;ria-3&quot; height=&quot;302&quot; width=&quot;589&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;TEXT-ALIGN: center&quot;&gt;圖一：未經校正的 Google Trends 查詢：Flex, Silverlight, JavaFX, Curl&lt;/p&gt;&lt;p&gt;而第二件讓我覺得更不合理的是，如果你直接透過 Google &lt;a href=&quot;http://www.google.com.tw/search?hl=zh-TW&amp;amp;ie=UTF-8&amp;amp;&amp;amp;q=Curl&quot;&gt;查詢&lt;/a&gt; Curl，可以發現十之八九都與 RIA 無關。這樣的查詢流量怎能將它全部歸到 Curl for RIA 這一塊呢。&lt;/p&gt;&lt;p&gt;我相信 Flex 這將近 0.9 的 Search Volumn Index，並非指 Macromedia/Adobe 的 Flex 技術；同樣的，Curl 大多的查詢流量也與 RIA 無關。為了進行檢驗，我將查詢語句作了一些修正，以期找出較具代表性的指標。新的查詢為：Macromedia Flex, Microsoft Silverlight, Sun JavaFX, Adobe Flex。&lt;/p&gt;&lt;p style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/edwardsayer/2650291462/&quot; title=&quot;Flickr 上 edwardsayer 的 ria-4&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3117/2650291462_2a164eb09d_o.png&quot; alt=&quot;ria-4&quot; height=&quot;326&quot; width=&quot;597&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;TEXT-ALIGN: center&quot;&gt;圖二：經過校正的 Google Trends 查詢：Macromedia Flex, Microsoft Silverlight, Sun JavaFX, Adobe Flex&lt;/p&gt;&lt;p&gt;這個查詢中，Flex 的熱門程度可用 Macromedia Flex + Adobe Flex 來代表。基本上可看出，在 2004 年 3 月以前，少有人關注 Flex。而 Microsoft Silverlight 的聲勢，&quot;有段時間&quot; 其實並不小於 Macromedia/Adobe Flex，那 Sun 的 JavaFX，就趴在地上了。&lt;/p&gt;&lt;p&gt;不過，究竟一般網民在查詢時，並不會特別以 Adobe Flex、Microsoft Silverlight 這樣的組字方式去下。以上，我所要說明的是，在以 Google Trends 進行分析時，得對基期或基值進行校正。透過第二個查詢我們已經證明 2004 年 3 月前的 Flex 流量，不能算是 Flex for RIA 這一塊的流量。如果將圖一 Flex 的流量值向下平移 0.9 單位，可以看出 Flex 對 Silverlight 的比值將接近圖二所示。&lt;/p&gt;&lt;p&gt;行文至此，是不是可以建議 Google Trends 提供類似基期/基值校正的功能。不然，就趕快把 Google Treands 的 API 給 release 出來吧!&lt;/p&gt;&lt;p&gt;相關連結：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.google.com/trends&quot;&gt;Google Trends&lt;/a&gt;: http://www.google.com/trends&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.adobe.com/devnet/flex/&quot;&gt;Flex&lt;/a&gt;: http://www.adobe.com/devnet/flex/&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.microsoft.com/silverlight/&quot;&gt;Silverlight&lt;/a&gt;: http://www.microsoft.com/silverlight/&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.sun.com/software/javafx/&quot;&gt;JavaFX&lt;/a&gt;: http://www.sun.com/software/javafx/&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.curl.com/&quot;&gt;Curl&lt;/a&gt;: http://www.curl.com/&lt;/li&gt;&lt;li&gt;Google Trends API coming soon: &lt;a href=&quot;http://news.cnet.com/8301-10784_3-9828916-7.html&quot;&gt;http://news.cnet.com/8301-10784_3-9828916-7.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;iThome 原作者文章: &lt;a href=&quot;http://ithelp.ithome.com.tw/question/10005797&quot;&gt;RIA四雄群起：以Google Trends評析現有RIA四大技術(Flex、Silverlight、JavaFX、Curl)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p xmlns=&quot;&quot; class=&quot;zoundry_raven_tags&quot;&gt;  &lt;!-- Tag links generated by Zoundry Raven. Do not manually edit. http://www.zoundryraven.com --&gt;  &lt;span class=&quot;ztags&quot;&gt;&lt;span class=&quot;ztagspace&quot;&gt;Technorati&lt;/span&gt; : &lt;a href=&quot;http://www.technorati.com/tag/analysis&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;analysis&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/google&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;google&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/google+trends&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;google trends&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/statistics&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;statistics&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/web&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;web&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;
</content>
</entry>
<entry>
<author>
<name>Edward HSIEH</name>
<uri>http://nettrace.blogspirit.com/about.html</uri>
</author>
<title>PMOG 簡易練功外掛</title>
<link rel="alternate" type="text/html" href="http://nettrace.blogspirit.com/archive/2008/05/07/pmog-簡易練功外掛.html" />
<id>tag:nettrace.blogspirit.com,2008-05-08:1545669</id>
<updated>2008-05-08T00:03:50+08:00</updated>
<published>2008-05-08T00:03:50+08:00</published>
<category term="Developing" scheme="http://www.blogspirit.com/ns/types#category" />
<category term="Goodies" scheme="http://www.blogspirit.com/ns/types#category" />
<category term="Web" scheme="http://www.blogspirit.com/ns/types#category" />
<summary> 前一陣子收到了 PMOG 的啟用信，便依照「電腦玩物」的說明，趁著工作空檔試玩了一下。突然想到，在一般的 game...</summary>
<content type="html" xml:base="http://nettrace.blogspirit.com/">
&lt;p&gt;前一陣子收到了 PMOG 的啟用信，便依照「電腦玩物」的說明，趁著工作空檔試玩了一下。突然想到，在一般的 game 系統，都有一些超級玩家或高手，懂得利用外掛程式來練功，那這個 client 端基於 Firefox 的遊戲平台，要寫一個練功的外掛應該也不是難事吧!&lt;/p&gt;&lt;p&gt;PMOG 平台裡面，透過 Datapoint 來代表玩家的經驗值。增加 Datapoint 最簡單的方式，就是瀏覽不同網域的網頁。如果我們要透過這樣的規則來練功，代表我們每天要想辦法去到不同的網域。而哪來那麼多不同的網域呢來瀏覽呢？&lt;/p&gt;&lt;p&gt;透過 Google 查詢，我找到一個 &quot;Random Link&quot; 連結，每當你瀏覽這個連結時，它會將你導到不同的網址。因此，你可以把這個連結放到 Firefox 的書籤工具列，每次按一下，就會連到不同的網頁。&lt;/p&gt;&lt;p&gt;接下來，就是想辦法讓上面的程序自動化。有時間、有時間精神的高手可以寫個 Firefox Extension。比較偷懶一點，就可以透過 Greasemonkey script 來達到這個功能。以下是我所使用的 user script：&lt;/p&gt;&lt;pre class=&quot;prettyprint&quot;&gt;// ==UserScript==// @name           automatic random link// @namespace      http://isong.blogspot.com/// @description    visit random web pages automatically// @include        *// ==/UserScript==setTimeout(function() {  location.href = &quot;http://random.yahoo.com/bin/ryl&quot;;}, 5000);                                &lt;/pre&gt;&lt;p&gt;只要在 Greasemonkey 中增加此用戶腳本，然後在想練功時啟用此腳本，就可以看到你的 Datapoint 值不斷增加囉!&lt;/p&gt;&lt;p&gt;相關連結：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://pmog.com/&quot;&gt;PMOG&lt;/a&gt;: Passively Multiplayer Online Game 官方首頁&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://playpcesor.blogspot.com/2008/02/firefoxpmog.html&quot;&gt;電腦玩物&lt;/a&gt;: 現實網路尋寶冒險，Firefox上的被動式多人線上遊戲：PMOG -- 完善的 PMOG 遊戲說明&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://zh.wikipedia.org/w/index.php?title=Greasemonkey&amp;amp;variant=zh-tw&quot;&gt;Greasemonkey&lt;/a&gt;: 可自訂你的網頁瀏覽體驗&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://addons.mozilla.org/zh-TW/firefox/addon/748&quot;&gt;Greasemonkey Firefox 附加元件&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://userscripts.org/&quot;&gt;Userscripts.org&lt;/a&gt;: 可在這裡找到許多給 Greasemonkey 使用的用戶腳本&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://random.yahoo.com/bin/ryl&quot;&gt;Random Link&lt;/a&gt;: Yahoo! 所提供的隨機網頁連結&lt;/li&gt;&lt;/ul&gt;&lt;p xmlns=&quot;&quot; class=&quot;zoundry_raven_tags&quot;&gt;  &lt;!-- Tag links generated by Zoundry Raven. Do not manually edit. http://www.zoundryraven.com --&gt;  &lt;span class=&quot;ztags&quot;&gt;&lt;span class=&quot;ztagspace&quot;&gt;Technorati&lt;/span&gt; : &lt;a href=&quot;http://www.technorati.com/tag/firefox&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;firefox&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/funny&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;funny&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/game&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;game&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/greasemonkey&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;greasemonkey&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/pmog&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;pmog&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;
</content>
</entry>
<entry>
<author>
<name>Edward HSIEH</name>
<uri>http://nettrace.blogspirit.com/about.html</uri>
</author>
<title>用 JavaScript 來修飾你的超連結</title>
<link rel="alternate" type="text/html" href="http://nettrace.blogspirit.com/archive/2008/04/21/用-javascript-來修飾你的超連結.html" />
<id>tag:nettrace.blogspirit.com,2008-04-21:1535018</id>
<updated>2008-04-22T20:17:08+08:00</updated>
<published>2008-04-22T20:17:08+08:00</published>
<category term="Developing" scheme="http://www.blogspirit.com/ns/types#category" />
<category term="Goodies" scheme="http://www.blogspirit.com/ns/types#category" />
<category term="Web" scheme="http://www.blogspirit.com/ns/types#category" />
<summary> 網頁之間的互相引用、評論，是當代網誌的形式之一，而造就的結果就是正文之中充斥著超連結。...</summary>
<content type="html" xml:base="http://nettrace.blogspirit.com/">
&lt;p&gt;網頁之間的互相引用、評論，是當代網誌的形式之一，而造就的結果就是正文之中充斥著超連結。&lt;br/&gt;&lt;br/&gt;這樣的書寫風格本身並沒有所謂的好或不好。在我的日誌中，也存在不少此類用法。問題是，如果同一篇日誌中，重複提及一個特定的網頁，而該網頁又值得透過超連結參引，那麼重複編製超連結的動作，也會令人覺得繁瑣。&lt;br/&gt;&lt;br/&gt;為此，我想到設定一種 &quot;形式&quot;，再加上 JavaScript，來為正文中的特定字眼加上連結。&lt;/p&gt;&lt;p&gt;構想是，在每篇網誌的最後，加上一段 &quot;相關連結&quot; 或 &quot;參考資料&quot;，段落名稱是什麼不重要，重點是：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;將連結以無序清單的形式標明，每一清單項目以連結開頭&lt;/li&gt;&lt;li&gt;以冒號+空白 (&lt;code&gt;&quot;: &quot;&lt;/code&gt;) 來區分連結及解說文字，例如：&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://isong.blogspot.com/&quot;&gt;愛頌過生活&lt;/a&gt;: 就是過日子，人生不需太多大道理!&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.w3.org/DOM/&quot;&gt;DOM&lt;/a&gt;: Document Object Model (DOM); W3C 的官方說明&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;上例中的 &quot;愛頌過生活&quot; 及 &quot;DOM&quot; 字串，會被當作匹配條件，在正文的段落 (&amp;lt;p&amp;gt;...&amp;lt;/p&amp;gt; 包起來的部分) 中，比對相符的字眼。若出現相符的字串，將被 JavaScript 套上超連結。&lt;/p&gt;&lt;p&gt;用來轉換文字成超連結的 JavaScript 程式碼如下：&lt;/p&gt;&lt;pre xml:space=&quot;preserve&quot; class=&quot;prettyprint&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;var init = {  cmds: [],  run: function(){    for(i = 0; i &amp;lt; this.cmds.length; i++)      this.cmds[i]();  }}function getText(anchor){   return anchor.text ? anchor.text : anchor.innerText;}function fixPostElements(){   var uls = document.getElementsByTagName(&quot;ul&quot;);   for(var i = 0; i &amp;lt; uls.length; i++)      insertResourceLink(uls[i].parentNode)}function insertResourceLink(element) {  var links= {};  var lis = element.getElementsByTagName(&quot;li&quot;);  for (var i = 0; i &amp;lt; lis.length; i++){    if(lis[i].innerHTML.indexOf(&quot;: &quot;) != 0){      as = lis[i].getElementsByTagName(&quot;a&quot;);      for(j = 0; j &amp;lt; as.length; j++)        links[getText(as[j])] = as[j].href;    }  }  var ps = element.getElementsByTagName(&quot;p&quot;);  for(key in links) {    var regKey = new RegExp(key, &quot;g&quot;);    for(var i = 0; i &amp;lt; ps.length; i++) {      ps[i].innerHTML = ps[i].innerHTML.replace(regKey,         &quot;&amp;lt;a href=&quot;+ links[key] +&quot;&amp;gt;&quot; + key +&quot;&amp;lt;/a&amp;gt;&quot;);    }  }}init.cmds.push(fixPostElements);&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;p&gt;將上面的程式碼置於 HTML 的 head 區塊，在 body tag 中加上 onload=&quot;init.run()&quot;，於撰寫網誌時採用本文規範的形式，即可達所述的效果。&lt;/p&gt;&lt;p&gt;一篇符合本文形式規範的網誌文章，可參考 &quot;&lt;a href=&quot;http://isong.blogspot.com/2008/04/prism-for-firefox-3-beta-5-url-link.html&quot;&gt;PRISM for Firefox 3 beta 5 url link opening issue&lt;/a&gt;&quot;。事實上，筆者正是在撰寫該文時，因對重複的超連結編製深感不耐，才產生此構想的。&lt;/p&gt;&lt;p&gt;附帶一提，如果讀者採用 Google Reader 或其他 RSS 閱讀軟體，那麼你將無法看到此 JavaScript 的效果，因為 RSS feed 中並不含 JavaScript 轉譯碼… 這樣的設計，或許可以解釋為：「為親自造訪本站的讀者，所提供的一點加值服務 ^__^」。&lt;/p&gt;
</content>
</entry>
<entry>
<author>
<name>Edward HSIEH</name>
<uri>http://nettrace.blogspirit.com/about.html</uri>
</author>
<title>Prism for Firefox 3 beta 5 url link opening issue</title>
<link rel="alternate" type="text/html" href="http://nettrace.blogspirit.com/archive/2008/04/18/prism-for-firefox-3-beta-5-url-link-opening-issue.html" />
<id>tag:nettrace.blogspirit.com,2008-04-18:1532090</id>
<updated>2008-04-18T08:36:58+08:00</updated>
<published>2008-04-18T08:36:58+08:00</published>
<category term="Goodies" scheme="http://www.blogspirit.com/ns/types#category" />
<category term="Web" scheme="http://www.blogspirit.com/ns/types#category" />
<summary> 今天將自用的電腦換成還在 beta 中的 Firefox 3，順手就裝了可以「將網頁變成桌面程式」的擴充套件...</summary>
<content type="html" xml:base="http://nettrace.blogspirit.com/">
&lt;p&gt;今天將自用的電腦換成還在 beta 中的 Firefox 3，順手就裝了可以「將網頁變成桌面程式」的擴充套件 Prism。它的功能一如產品網頁描述，可以在桌面產生一個 URL 連結，也可以顯示 tray icon。&lt;/p&gt;&lt;p&gt;我首先轉換的應用網站便是 Gmail，轉換成完後，點選桌面 Gmail 捷徑，帶出一個沒有任何修飾 (不會讓你分心) 的 Gmail 應用程式視窗。怪的是，在我的環境 Windows XP + 這樣的組合下，在 Prism 的 Gmail 網頁中開啟 URL 連結時，它開啟的外部瀏覽器竟是 IE，而不是我所期望的 Firefox。在 Firefox 「工具/選項/進階」中將 firefox 設定成系統預設瀏覽器也沒有用。&lt;/p&gt;&lt;p&gt;本想試試 Linky 這個專門用來改進連結開啟方式的擴充套件，但在 Prism 中卻無法安裝。我沒去細究那是 Prism 本身，還是 Linky 或 Firefox bata 3 的版本關係，總之就是不能用。&lt;/p&gt;&lt;p&gt;查了一下 firefox command line arguments, 看到了 -setDefaultBrowser 這個選項，可以將 firefox 設定成系統預設瀏覽器。於是我試著在 DOS 指令視窗中輸入以下指令：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;C:&amp;gt;cd &quot;Program FilesMozilla Firefox 3 Beta 5&quot;&lt;br/&gt;C:Program FilesMozilla Firefox 3 Beta 5&amp;gt;firefox -setDefaultBrowser&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;沒想到這麼一來，當我再次於 Prism 的 Gmail 網頁中開啟連結時，竟然就能將連結開啟於 Firefox 中了。&lt;/p&gt;&lt;p&gt;相關連結：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://labs.mozilla.com/2007/10/prism/&quot;&gt;Prism&lt;/a&gt;: 將網頁變成桌面程式&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://mail.google.com/mail/&quot;&gt;Gmail&lt;/a&gt;: Google 所推出的 webmail 服務&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://developer.mozilla.org/en/docs/Command_Line_Options&quot;&gt;firefox command line arguments&lt;/a&gt;: 說明 firefox 啟動參數&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://gemal.dk/mozilla/linky.html&quot;&gt;Linky&lt;/a&gt;: firefox 延伸套件&lt;/li&gt;&lt;/ul&gt;&lt;p xmlns=&quot;&quot; class=&quot;zoundry_raven_tags&quot;&gt;  &lt;!-- Tag links generated by Zoundry Raven. Do not manually edit. http://www.zoundryraven.com --&gt;  &lt;span class=&quot;ztags&quot;&gt;&lt;span class=&quot;ztagspace&quot;&gt;Technorati&lt;/span&gt; : &lt;a href=&quot;http://www.technorati.com/tag/bug+fix&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;bug fix&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/firefox&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;firefox&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/firefox+3&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;firefox 3&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/prism&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;prism&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/tweak&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;tweak&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;
</content>
</entry>
<entry>
<author>
<name>Edward HSIEH</name>
<uri>http://nettrace.blogspirit.com/about.html</uri>
</author>
<title>Miro 1.2.* 無法啟動的 Bug 及 Quick Dirty Fix</title>
<link rel="alternate" type="text/html" href="http://nettrace.blogspirit.com/archive/2008/04/12/miro-1-2-無法啟動的-bug-及-quick-dirty-fix.html" />
<id>tag:nettrace.blogspirit.com,2008-04-12:1527740</id>
<updated>2008-04-12T17:28:41+08:00</updated>
<published>2008-04-12T17:28:41+08:00</published>
<category term="Developing" scheme="http://www.blogspirit.com/ns/types#category" />
<category term="Goodies" scheme="http://www.blogspirit.com/ns/types#category" />
<category term="Web" scheme="http://www.blogspirit.com/ns/types#category" />
<summary>  Miro  這套以 XUL Runtime 為基礎的網路影片撥放軟體，有著優良的使用介面及易用豐富的影片搜尋功能，在網路上已經有不少  blogger...</summary>
<content type="html" xml:base="http://nettrace.blogspirit.com/">
&lt;p&gt;&lt;a href=&quot;http://www.getmiro.com/&quot;&gt;Miro&lt;/a&gt; 這套以 XUL Runtime 為基礎的網路影片撥放軟體，有著優良的使用介面及易用豐富的影片搜尋功能，在網路上已經有不少 &lt;a href=&quot;http://blogsearch.google.com.tw/blogsearch?hl=zh-TW&amp;amp;ie=UTF-8&amp;amp;um=1&amp;amp;q=miro&amp;amp;btnG=搜尋網誌&amp;amp;lr=lang_zh-TW&quot;&gt;blogger 介紹&lt;/a&gt;過，我就不再贅言。&lt;/p&gt;&lt;p&gt;如果你也是 &lt;a href=&quot;http://www.getmiro.com/&quot;&gt;Miro&lt;/a&gt; 的愛好者，或是看過介紹後躍躍欲試，卻同我一樣遭遇以下畫面：&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/edwardsayer/2407398674/&quot; title=&quot;Flickr 上 edwardsayer 的 Miro StartUp Error&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3039/2407398674_57349bc143_m.jpg&quot; alt=&quot;Miro StartUp Error&quot; height=&quot;150&quot; border=&quot;0&quot; width=&quot;240&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;除了程式視窗外框、骨架外，所有內容都沒有顯示出來。那麼底下提供一個 quick dirty fix，或許可以解你想看影片的燃眉之急。&lt;/p&gt;&lt;p&gt;首先，找到 C:Program FilesParticipatory Culture FoundationMirocomponentspybridge.py 這個檔案。找到其中一段程式碼：&lt;/p&gt;&lt;pre xml:space=&quot;preserve&quot;&gt;   keyElement.setAttribute('keytext', _('Spacebar'))&lt;/pre&gt;&lt;p&gt;由於這行程式中的 _(Spacebar) 在執行期會運算成 &quot;空白鍵&quot; 這個中文字串，進一步造成 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128) 的錯誤。因為並未深入了解 Miro 完整的 localization 架構，這是一個目前看來我無法完整解決的問題。因此我採用一個 quick dirty fix，將上面那行改成如下：&lt;/p&gt;&lt;pre xml:space=&quot;preserve&quot;&gt;   keyElement.setAttribute('keytext', 'Spacebar')&lt;/pre&gt;&lt;p&gt;注意，由於程式是 python 語言，因此請不要改變以上程式碼的縮排。儲存檔案，重新開啟 Miro，那麼你應該可以重新找尋、欣賞喜好的影片了。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/edwardsayer/2407398696/&quot; title=&quot;Flickr 上 edwardsayer 的 Miro OK Now&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3194/2407398696_9550237aa3_m.jpg&quot; alt=&quot;Miro OK Now&quot; height=&quot;183&quot; border=&quot;0&quot; width=&quot;240&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Note: 本方法僅在 Window Miro 1.2, 1.2.2 版上試驗過。&lt;/p&gt;&lt;p xmlns=&quot;&quot; class=&quot;zoundry_raven_tags&quot;&gt;  &lt;!-- Tag links generated by Zoundry Raven. Do not manually edit. http://www.zoundryraven.com --&gt;  &lt;span class=&quot;ztags&quot;&gt;&lt;span class=&quot;ztagspace&quot;&gt;Technorati&lt;/span&gt; : &lt;a href=&quot;http://www.technorati.com/tag/bug&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;bug&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/bug+fix&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;bug fix&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/miro&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;miro&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/video&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;video&lt;/a&gt;, &lt;a href=&quot;http://www.technorati.com/tag/web&quot; class=&quot;ztag&quot; rel=&quot;tag&quot;&gt;web&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;
</content>
</entry>
<entry>
<author>
<name>Edward HSIEH</name>
<uri>http://nettrace.blogspirit.com/about.html</uri>
</author>
<title>Java: 淺談 OSGi 標準</title>
<link rel="alternate" type="text/html" href="http://nettrace.blogspirit.com/archive/2004/10/10/java_淺談_osgi_標準.html" />
<id>tag:nettrace.blogspirit.com,2005-03-25:82154</id>
<updated>2008-04-03T20:31:31+08:00</updated>
<published>2008-04-03T20:31:31+08:00</published>
<category term="Developing" scheme="http://www.blogspirit.com/ns/types#category" />
<category term="Taiwanese bloggers" scheme="http://www.blogspirit.com/ns/types#tag" />
<category term="java" scheme="http://www.blogspirit.com/ns/types#tag" />
<category term="osgi" scheme="http://www.blogspirit.com/ns/types#tag" />
<category term="module" scheme="http://www.blogspirit.com/ns/types#tag" />
<category term="framework" scheme="http://www.blogspirit.com/ns/types#tag" />
<summary>  OSGi  起源於1999 年三月，是由一些家用閘道器相關產業廠商所組合而成的組織，目前約有八十餘家廠商加入。包括了...</summary>
<content type="html" xml:base="http://nettrace.blogspirit.com/">
&lt;p&gt;&lt;a href=&quot;http://www.osgi.org/&quot;&gt;OSGi&lt;/a&gt; 起源於1999 年三月，是由一些家用閘道器相關產業廠商所組合而成的組織，目前約有八十餘家廠商加入。包括了 IBM、Sun、BMW、Motorola、Nortel、Nokia、 Philips、Panasonic、Sony、Toshiba、Echelon 等。目前最新的標準是OSGi Specification 3.0。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.osgi.org/osgi_technology/&quot;&gt;&lt;img src=&quot;http://www.osgi.org/images/osgi_arch.jpg&quot; align=&quot;right&quot; height=&quot;201&quot; border=&quot;0&quot; width=&quot;240&quot;/&gt;&lt;/a&gt; 當初制定OSGi 標準的最主要的目的，是要為遠端的服務提供者 (Service Provider) 與本地端的設備 (Device) 之間提供完整的點對點服務傳送解決方案。因此，OSGi 定義了一個開放性的平台，使得遠端軟體服務供應商所提供的應用程式 及加值服務，能視使用者需求，隨時下載至靠近用戶的閘道器 (Gateway) 上，並且自動安裝執行，而這裡所指的閘道器通常是連接家庭網路(Home Network)、辦公室網路 (Office Network) 與廣域網路間的一個裝置，如機上盒 (Set-top Box;STB)、ADSL數據機、纜線數據機 (Cable Modem)、住宅區閘道器 (Residential Gateway)等。透過這個開放性的平台，不同廠商所開發出的服務軟體及設備都能互相溝通及搭配使用。&lt;br/&gt;&lt;/p&gt;&lt;p&gt;在 OSGi 網站上的 &lt;a href=&quot;http://www.osgi.org/about/faqs.asp&quot;&gt;FAQ&lt;/a&gt; 中，指出 OSGi 應用方向包括：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Services in the Home:&lt;/li&gt;&lt;li style=&quot;LIST-STYLE-TYPE: none&quot;&gt;&lt;ul&gt;&lt;li&gt;Communication&lt;/li&gt;&lt;li&gt;Information/entertainment&lt;/li&gt;&lt;li&gt;Safety and security monitoring&lt;/li&gt;&lt;li&gt;Energy management and metering&lt;/li&gt;&lt;li&gt;Appliance diagnostics and servicing&lt;/li&gt;&lt;li&gt;Telemedicine and healthcare monitoring&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Services in the Car:&lt;/li&gt;&lt;li style=&quot;LIST-STYLE-TYPE: none&quot;&gt;&lt;ul&gt;&lt;li&gt;Navigation&lt;/li&gt;&lt;li&gt;Emergency assistance&lt;/li&gt;&lt;li&gt;Mobile commerce&lt;/li&gt;&lt;li&gt;Information/entertainment&lt;/li&gt;&lt;li&gt;Vehicle diagnostics&lt;/li&gt;&lt;li&gt;Location-based services&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Again, we see java succeeded in J2ME. We can see many big-name companies in the OSGi member name list which include many companies come from many industries.&lt;/p&gt;&lt;p&gt;最近 OSGi 在軟體業最為人雀躍的發展，莫過於 &lt;a href=&quot;http://www.eclipse.com/&quot;&gt;Eclpise&lt;/a&gt; Java IDE 支援 OSGi 標準。這是一個有趣的現象，本來是設計給其他產業的運用，卻在軟體業也有不凡的表現。這也讓我想起 Java 的發展歷史，本來也是為了 embedded 系統而設計，卻意外的在 internet 竄起的年代獲得各方的矚目，更在 enterprise application 中立於不敗之地...&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://nettrace.blogspirit.com/archive/2004/04/java-jmx-java-management-extensions.html&quot;&gt;&lt;img src=&quot;http://www.osgi.org/images/osgi_framework.jpg&quot; align=&quot;right&quot; height=&quot;193&quot; border=&quot;0&quot; width=&quot;193&quot;/&gt;JMX&lt;/a&gt; 與 &lt;a href=&quot;http://en.wikipedia.org/wiki/OSGi&quot;&gt;OSGi&lt;/a&gt; 在功能上的許多重疊之處，在國外已經有人討論過 (例如 &lt;a href=&quot;http://www.manageability.org/blog/stuff/equinox-eclipse-microkernel&quot;&gt;Eclipse Embeds OSGi Based MicroKernel&lt;/a&gt; 及 &lt;a href=&quot;http://www.laurentm.com/10Goto10/archives/eclipse/000116.html&quot;&gt;JMX vs. OSGi - The New Flavor of the Eclipse Runtime&lt;/a&gt;)。不過我認為重點是：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;JMX 本來設計的用途就只為了管理，我們不該把他拿來 (over use) 作為開發應用程式的元件 (那是 EJB 或 JavaBeans 該做的事)。但 OSGi 卻可以!&lt;/li&gt;&lt;li&gt;JMX 多數用於 server 系統中，而 OSGi 卻不限於所開發的應用程式。你可以用它開發 embedded 系統、desktop 程式，甚至是 server 程式。&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;OSGi 不但提供了與 &lt;a href=&quot;http://nettrace.blogspirit.com/archive/2004/04/java-jmx-java-management-extensions.html&quot;&gt;JMX&lt;/a&gt; 相似的容器管理能力，甚至它本身就是一套精密的 Framework。OSGi 採用Micro-Kernel 的架構，可以提供無限延伸的功能。OSGi 的 Bundles 線上更新功能、以及應用程式之微量記憶體執行能力，都是開發應用程式的利基。&lt;/p&gt;&lt;p&gt;OSGi 與 J2EE 在設計上，我覺得完全是兩種思維模式：J2EE 的思維是 build on large scale，OSGi 的思維是 build on dynamic scale。OSGi 以小搏大...&lt;/p&gt;&lt;p&gt;OSGi Resources:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div class=&quot;delPost&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://www.osgi.org/&quot; class=&quot;delLink&quot;&gt;Welcome to the OSGi Alliance&lt;/a&gt; &lt;span class=&quot;delLink&quot;&gt;- OSGi official web site&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;delPost&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://www.alphaworks.ibm.com/tech/optimalgrid&quot; class=&quot;delLink&quot;&gt;alphaWorks : OptimalGrid&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://gravity.sourceforge.net/servicebinder/&quot; class=&quot;delLink&quot;&gt;ServiceBinder - Automatic service dependency management in OSGi&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;&lt;a href=&quot;http://www-306.ibm.com/software/wireless/smf/&quot; class=&quot;delLink&quot;&gt;IBM Service Management Framework - IBM Software&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;delPost&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://oxygen.sourceforge.net/&quot; class=&quot;delLink&quot;&gt;Oxygen project homepage&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;delPost&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://oscar.objectweb.org/&quot; class=&quot;delLink&quot;&gt;Oscar - An OSGi framework implementation&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;&lt;a href=&quot;http://www.knopflerfish.org/&quot; class=&quot;delLink&quot;&gt;Knopflerfish OSGi&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;註:&lt;/p&gt;&lt;p&gt;目前我看到與 OSGi 有關的 JSR 為：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;JSR 8: Open Services Gateway Specification (OSGi)&lt;/li&gt;&lt;li&gt;JSR 232: Mobile Operational Management&lt;/li&gt;&lt;/ul&gt;
</content>
</entry>
<entry>
<author>
<name>Edward HSIEH</name>
<uri>http://nettrace.blogspirit.com/about.html</uri>
</author>
<title>該學那些程式語言2008版</title>
<link rel="alternate" type="text/html" href="http://nettrace.blogspirit.com/archive/2007/12/19/該學那些程式語言2008版.html" />
<id>tag:nettrace.blogspirit.com,2008-01-09:1459323</id>
<updated>2008-01-09T06:17:01+08:00</updated>
<published>2007-12-19T05:45:00+08:00</published>
<category term="Developing" scheme="http://www.blogspirit.com/ns/types#category" />
<category term="essay" scheme="http://www.blogspirit.com/ns/types#tag" />
<category term="programming" scheme="http://www.blogspirit.com/ns/types#tag" />
<summary> 這主題向來是討論區上常被提出的問題，一言以蔽之，選擇最好的或最受歡迎的…...</summary>
<content type="html" xml:base="http://nettrace.blogspirit.com/">
這主題向來是討論區上常被提出的問題，一言以蔽之，選擇最好的或最受歡迎的…&lt;br /&gt; &lt;br /&gt; 選擇最受歡迎的，站在你自己的角度來看，它可以提高你在市場上的身價，讓你找的到工作，可以填飽肚子。而站在別人的角度來講，你開發出來的系統容易讓別人接手，開發系統時可用的支援較多，市場的接受度較高，不用重新教育使用者。&lt;br /&gt; &lt;br /&gt; 選 擇最好的，一方面是可以接觸新思維，提供不同的視野。另一方面，則是期望有一天，最好的可以變成最受歡迎的。而早期投入者，多少可以收到 &quot;傳教士&quot; 般的尊崇待遇。還記得以前 XML 剛出來時，大力推廣 XML 的勞虎，在網路上廣泛傳送其免費電子書《無廢話 XML》，而今多少學習 XML 的網民，還是感念其恩德啊!&lt;br /&gt; &lt;br /&gt; 那麼，以下便是我的選擇。我會說明其主要應用，及個人對它的觀感。&lt;br /&gt; &lt;br /&gt; &lt;span style=&quot;font-weight: bold&quot;&gt;最受歡迎：&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; C/C ++：這應該是正統資訊工程科系都必修的語言吧，它的應用不但能讓你直指核心(C)，也能讓你站在物件的具像高度(C++)，思考系統的構成。像是系統程 式、原生應用程式、軔體、Driver 等，皆是 C/C++ 應用所及之處。尤其台灣電子產業相對發達，在各種掌上型、智慧型裝置不斷推陳出新的今天，對C/C++的人力資源有高度需求。不過這個語言(尤其 C++)因為承載太多歷史包袱，各種實作變體太大，開發時常需用很多 tricks，在應用時需要付出較多心力，在程式語言本身及各種環境歧異的細節上!&lt;br /&gt; &lt;br /&gt; Java：如果你唸資工 系，但學校 C/C++ 課程非必修，那麼至少 Java 是必修課程吧! Java 除了較少用在系統程式外，其他領域幾乎都占有一席之地。由於 Java 具有良好的物件導向基礎，當代許多企業應用皆採 Java Solution，尤其是在 SOA/ESB/EAI 等領域。採用 Java Solution 的好處是自由度高，但缺點就是很多事情沒有標準作法，或支援標準作法的解決方案太多，往往要花費不少時間在選擇如何架構系統上。&lt;br /&gt; &lt;br /&gt; C# &amp;amp; VB.NET：這能讓你賺錢! 可以讓你快速的寫出漂漂亮亮的應用程式! 能讓你與微軟的企業系統做 完美的結合。像是 BI(OLAP、Reporting、Data Mining)那一塊，是 Java 在應用上比較需要費心的。而 .NET 相對於 Java 較緊緻的技術堆疊，能讓開發者較專注於應用程式的開發上。缺點是，離開了微軟平台的世界，就幾無用武之地。&lt;br /&gt; &lt;br /&gt; PHP/Ruby：如果你想 run 自己的 business，或想建立一個像黑米、放P、挖女孩那樣的網站，相信我，這是一個很好的選擇。不過由於目前這兩個語言主要用途只在 Web 開發上，因此特別要注意典範的轉移，或是其原來專精的部分不再具有優勢。&lt;br /&gt; &lt;br /&gt; 就 典範轉移：我的意思是，PHP/Ruby 除了在 Web 開發上已有成功的 killer apps 之外，其實它們能做的事，其他語言或平台也都能做，除非它們能在別的應用領域一樣成功，否則對其未來發展仍是一項危機。而就 &quot;其原來專精的部分不再具有優勢&quot;，這並非不可能發生，請見以下的 ECMAScript 說明。但好消息是，至少在 2007 年，這兩個語言的排名在 &lt;a href=&quot;http://www.tiobe.com/tpci.htm&quot;&gt;TIOBE&lt;/a&gt; 上的排名都是往上升的。&lt;br /&gt; &lt;br /&gt; &lt;span style=&quot;font-weight: bold&quot;&gt;最好的：&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; Python： 真正的跨平台，除了跨 Windows, Linux 這類原生作業平台外，它也有 Java 及 .NET 虛擬機器的移植版本。在 Java 與 .NET 競相誇炫平台能力之際，Python 仍能堅守語言本身的原味之美，是令人讚賞的。也因如此，Python 的應用領域眾多，從 Web、文字及檔案處理、科學到研究等，幾乎無所不包。事實上，很多研究平台內定的 scripting language 就是 python，像是用於統計的 SPSS、用於資料探勘的 Clementine 等。&lt;br /&gt; &lt;br /&gt; D：被視為是 &quot;C++ done right!&quot; 的一個程式語言，支援了許多 C++/Java/C# 共有的特徵(OOP)，但卻也有些特徵是其他語言所欠缺(或尚在研議中)像 Out function parameters,Nested functions,Function literals,Closures,Resizeable arrays...。在現今 VM 當道的年代，D 仍編譯為 native executable，可見其定位，是比較接近 C/C++ 的。也就是適合拿來撰寫系統程式、原生應用程式、伺服器程式，以及網路應用程式等。不過，對於 D 被廣泛接受仍有重大疑慮，因直至目前為止還不知有任何較大型的專案採用 D 語言開發。相較於 Ruby 也沒有像 RoR 那樣的殺手級應用出現。&lt;br /&gt; &lt;br /&gt; &lt;span style=&quot;font-weight: bold&quot;&gt;最受歡迎+最好的：&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; ECMAScript&lt;span class=&quot;wikiword&quot;&gt;/JavaScript&lt;/span&gt;/ActionScript：JavaScript 與 ActionScript 都朝 ECMAScript 標準靠攏。本來 &lt;span class=&quot;wikiword&quot;&gt;JavaScript&lt;/span&gt; 是被某些人唾棄的一無是處，以為它只會在瀏覽器上作作表面功夫的語言，但一朝 Ajax 的應用得到普遍的喜愛&lt;span class=&quot;wikiword&quot;&gt;，JavaScript&lt;/span&gt; 的行情也就跟著水漲船高。但如果只是這樣，對於 ECMAScipt 最新標準的推廣倒不見得有多大助益。特別是後來 &lt;span class=&quot;wikiword&quot;&gt;ActionScript&lt;/span&gt; 也遵循 ECMAScript 標準，而且號稱 &lt;span class=&quot;wikiword&quot;&gt;ActionScript&lt;/span&gt; 3.0 是非常遵循，這就好玩了。因為 &lt;span class=&quot;wikiword&quot;&gt;ActionScript&lt;/span&gt; 是應用在 Flex/Flash player 中，而瀏覽器中主要執行的指令語言是 &lt;span class=&quot;wikiword&quot;&gt;JavaScript&lt;/span&gt;， 而這兩者都是當代 Thin Client/RIA 的主流，因此我們可以說 ECMAScript Family 幾乎已成為 Universal Client Lauguage。&lt;br /&gt; &lt;br /&gt; 再 者，認為 JavaScript 只會在瀏覽器上作作表面功夫其實並非事實。早期 Netscape Enterprise Server 及 BroadVision One-to-One Server，在 JSP 尚未出現前，伺服器上執行的指令語言就是 JavaScript。而前文提到現在是 VM 當道的年代，現在 ActionScript 的 engine 也已成為一個 VM，叫 AVM，且已貢獻給 Mozilla，成立 Tamarin 專案，將來若用於 Firefox 中，網頁內的 JavaScript 跑起來說不定會跟飛的一樣。&lt;br /&gt; &lt;br /&gt; 若是真有人拿 AVM 來寫伺服器，說不定會光復 JavaScript 在 Server 端的失土哦 (好吧! 天方夜譚)! 說真的，AVM Server 版若成(例如成為 Apache 的一個 module)，要威脅 Java 或 .NET 既有地位是比較困難，因為這兩個平台既有應用多、進化動力也強；但對其他 Server 端的 Scripting Language 絕對是個威脅。想想看，若你能在 Server 端及 Client 端同時使用 ECMAScript，那使用 Ruby 或 PHP 的誘因是否會漸漸變弱呢！而 Ruby 會紅，並不是語言本身之美所致，而是出了一個 Ruby on Rails Framework，而 framework 裡面的 concepts 是很容易 porting 到別的語言或平台中的。&lt;br /&gt; &lt;br /&gt; &lt;span style=&quot;font-weight: bold&quot;&gt;其他：&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; 看 了以上個人挑選出來的清單，看啊看的，現在還是程序導向和物件導向語言的天下。難道沒有其他不一樣思考面向的東西嗎? 有的，而且我們也還滿常用，像是 SQL，或是各式 Markup Language 了(雖然不是程式語言)。還有那些用在工程、模擬、統計分析、人工智慧上的，你沒有那個環境或從事相關職業，是幾乎無從著手的語言，而這些當然就不算在推 薦之內。&lt;br /&gt; &lt;br /&gt; &lt;span style=&quot;font-weight: bold&quot;&gt;結語：&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; 一項語言要被廣為接 受，在過去，我一直以為大廠的支援是個必要因素，但 PHP(XOOPs, Nuke...) 及 Ruby(RoR) 這種透過 Community 及 Killer Application 來帶動風潮的成功案例，似乎也印證了 &quot;世界是平的&quot; 的論點，在這個網路世代，不只大企業，小企業及個人一樣有機會。Killer Apps 與 Success Stories，可能比大廠背書更有價值。&lt;br /&gt; &lt;br /&gt; 而 對於你的選擇，我想，如果要做個尋常的程式開發人員，我會建議你 ECMAScript Family 一定要學，那 Java 或 .NET 再選一種。若你是個不尋常 (開發特殊應用的軟體) 的程式設計師，通常也就沒什麼好選了，因為應用的型式就決定了我們的選擇。
</content>
</entry>
</feed>