Google+ <== 這是 Bookmarklet 連結
使用方式:
- 將上面這個 Bookmarklet 連結,拉到瀏覽器的網址列,或加入書籤。
- 在 網址列 或 書籤 中點選剛加入的 Google+ Bookmarklet,就能將目前瀏覽的網頁,分享到 Google+ 上,以下是分享頁面抓圖。
- 按下 Share 鈕即可分享。
Google 字典一直是我相當喜愛使用的網路服務,簡潔的版面及清晰的解釋及例句,都是我喜歡它的原因…硬要說它有什麼缺點的話,就是沒有看到日文的支援。固然透過 Firefox 或 Chrome,我們可以很容易的瀏覽器中啟用翻譯服務,但若是想要在其他應用程式中也使用到 Google 字典,就必須借助其他方法了。
AutoHotKey 是一個 Windows 下的桌面工具,可以讓我們透過自訂的快速鍵,啟動特定的應用程式、開啟文件、或指定的 URL 等。我們可以利用 AutoHotKey 的功能,在桌面上一鍵啟動 Google 字典及翻譯。
至此大功告成,以後在任何應用程式中,只要先選定 (反白) 要查詢的文字,然後按下 Win + X 組合鍵,就可將選定文字帶至 Google 字典中查詢;此外,你也可以使用 Win + S 啟用 Google 搜尋,或使用 Win + Z 啟用 Google 翻譯。
另外,如果你想要讓 Windows 啟動時就自動執行 AutoHotKey.ahk,可以為 AutoHotKey.ahk 建立一個捷徑,並將捷徑放置在開始功能表裡面的「啟動」目錄即可。
Ahk 代碼:
;; 定義按 Win + S 鍵,啟用 Google 搜尋 #s:: clipboard = ; Empty the clipboard Send, ^c ClipWait, 2 Run http://www.google.com.tw/search?hl=zh-TW&q=%clipboard% return ;; 定義按 Win + X 鍵,啟用 Google 字典 #x:: clipboard = ; Empty the clipboard Send, ^c ClipWait, 2 Run http://www.google.com.tw/dictionary?aq=f&oq=breed&langpair=en|zh-TW&hl=zh-TW&q=%clipboard% return ;; 定義按 Win + Z 鍵,啟用 Google 翻譯 #z:: clipboard = ; Empty the clipboard Send, ^c ClipWait, 2 Run http://translate.google.com.tw/translate_t#auto|zh-TW|%clipboard% return
Technorati : AutoHotKey, dictionary, goodiesh, google, translation
之前為了將系統的多語化,其中一個議題就是要產生各種語系的訊息資源檔。繁簡中文的對譯,只要透過 Word 就行了,要是英日語,就得人工作業。靈機一動,想說何不借助既有的翻譯服務,為 resource 檔提供預設的簡中、英、日翻譯。
就這樣,找到了一些應用 Google Translate API 的討論。試用了之後,多少都有語系編碼的問題。我最後實作了一個版本,可以在輸入正體中文時,正常產出簡中、英、日語系的翻譯。
一開始我是採用 C# 語言測試,程式碼如下:
public static string TranslateText(string fromLang, string toLang, string msg)
{
string target = "http://www.google.com/translate_t?ie=UTF-8&oe=UTF-8&text={2}&langpair={0}|{1}";
string url = String.Format(target, fromLang, toLang, msg);
WebClient webClient = new WebClient();
webClient.Encoding = System.Text.Encoding.UTF8;
string result = webClient.DownloadString(url);
string sign = "<div id=result_box dir=\"ltr\">";
result = result.Substring(result.IndexOf(sign) + sign.Length);
result = result.Substring(0, result.IndexOf("</div"));
return result.Replace("<br>", "\n");;
}
後來又做了一個 Java 的版本,程式碼如下:
public static String translateText(String fromLang, String toLang, String msg) throws IOException{
String target = "http://www.google.com/translate_t?ie=UTF-8&oe=UTF-8&langpair=%s|%s&text=%s";
String url = String.format(target, fromLang, toLang, URLEncoder.encode(msg, "utf-8"));
String result = getUrlContent(url);
String sign = "<div id=result_box dir=\"ltr\">";
result = result.substring(result.indexOf(sign) + sign.length());
result = result.substring(0, result.indexOf("</div"));
return result.replaceAll("<br>", "\n");
}
public static String getUrlContent(String url) throws IOException {
URL u = new URL(url);
HttpURLConnection conn = (HttpURLConnection)u.openConnection();
conn.setRequestProperty("User-agent","Mozilla/4.0");
conn.setRequestProperty("Content-Language","UTF-8" );
conn.connect();
return slurp(conn.getInputStream());
}
public static String slurp (InputStream in) throws IOException {
StringBuffer out = new StringBuffer();
byte[] b = new byte[4096];
for (int n; (n = in.read(b)) != -1;) {
out.append(new String(b, 0, n, "UTF-8"));
}
return out.toString();
}
測試程式長得像這樣:
public static void main(String []argv) throws IOException{
System.out.println(GoogleTranslate.translateText("zh-TW", "zh-CN", "書不同文、車不同軌、世界不大同!"));
System.out.println(GoogleTranslate.translateText("zh-TW", "en", "書不同文、車不同軌、世界不大同!"));
System.out.println(GoogleTranslate.translateText("zh-TW", "ja", "書不同文、車不同軌、世界不大同!"));
}
稍微說明一下我的測試心得。
首先,就是使用 Google Translate 時,最好是明確指定你所用的輸入編碼及輸出編碼,即上面 URL 連結中的 ie=UTF-8&oe=UTF-8。若不明確指定,Google 可是會依據你的輸入語言,而決定輸出編碼。例如,你輸入的語言是 "zh-CN",它預設會採用 gb2312 編碼回應。這會造成處理上的困擾。
其次,由於 .NET 與 Java 平台內建皆採用 UTF-8 編碼,因此在我們指定輸入編碼及輸出編碼時,當然是優先考量 UTF-8。
最後,如果你用 Eclipse 做測試,你可能會發現 console 裡有部分亂碼。請依照下圖,在 Run/Run Configurations... 裡面做設定,將 Console Encoding 指定為 UTF-8:
最後就能產出正常的顯示了。
因為在 iThome 看到一位與我有一面之緣、熱衷 Flex 的高手,透過分析 Google Trends 資料,寫了一篇名為「RIA四雄群起:以Google Trends評析現有RIA四大技術(Flex、Silverlight、JavaFX、Curl)」的 blog。由於其中各種技術熱門程度的差異實在太大,激起了我進一步自行探索的動力。
第一件使我產生懷疑的是,文中指出 Flex 技術是 2004 年發行 1.0 版,我到 Wikipedia 查了一下資料,是 2004 年 3 月。那時候 Flex 還是 Macromedia 所提出的一個 Server 端方案,需配合貴死人的 Server 端執行。而由圖一可以明顯看出,Flex 的趨勢線在 2004 年初就一直處於高檔,直覺跟…好吧--年紀--告訴我這不合理。
圖一:未經校正的 Google Trends 查詢:Flex, Silverlight, JavaFX, Curl
而第二件讓我覺得更不合理的是,如果你直接透過 Google 查詢 Curl,可以發現十之八九都與 RIA 無關。這樣的查詢流量怎能將它全部歸到 Curl for RIA 這一塊呢。
我相信 Flex 這將近 0.9 的 Search Volumn Index,並非指 Macromedia/Adobe 的 Flex 技術;同樣的,Curl 大多的查詢流量也與 RIA 無關。為了進行檢驗,我將查詢語句作了一些修正,以期找出較具代表性的指標。新的查詢為:Macromedia Flex, Microsoft Silverlight, Sun JavaFX, Adobe Flex。
圖二:經過校正的 Google Trends 查詢:Macromedia Flex, Microsoft Silverlight, Sun JavaFX, Adobe Flex
這個查詢中,Flex 的熱門程度可用 Macromedia Flex + Adobe Flex 來代表。基本上可看出,在 2004 年 3 月以前,少有人關注 Flex。而 Microsoft Silverlight 的聲勢,"有段時間" 其實並不小於 Macromedia/Adobe Flex,那 Sun 的 JavaFX,就趴在地上了。
不過,究竟一般網民在查詢時,並不會特別以 Adobe Flex、Microsoft Silverlight 這樣的組字方式去下。以上,我所要說明的是,在以 Google Trends 進行分析時,得對基期或基值進行校正。透過第二個查詢我們已經證明 2004 年 3 月前的 Flex 流量,不能算是 Flex for RIA 這一塊的流量。如果將圖一 Flex 的流量值向下平移 0.9 單位,可以看出 Flex 對 Silverlight 的比值將接近圖二所示。
行文至此,是不是可以建議 Google Trends 提供類似基期/基值校正的功能。不然,就趕快把 Google Treands 的 API 給 release 出來吧!
相關連結:
Technorati : analysis, google, google trends, statistics, web
之前看到有人在「訐譙(ㄐ|ㄝˊ ㄑ|ㄠˊ)」Google 把預設的 RSS 訂閱導到 iGoogle 去,有人說是版本有差,有人說是已改了回來。我的 firefox 則是到現在還是這個樣:只會導到 iGoogle 去。
雖然我也是 iGoogle 的愛用者,但是想放到 Google Reader 裡去細細品嚐的資訊,真的跟想放在 iGoogle 上的資訊不太一樣。強迫用戶只能接受 Google 的指定,未必合理。不過若是做個瀨尿牛丸,真正的把 iGoogle 跟 Google Reader 訂閱做進一步整合,也是可能的解法。
我的想法是,既然放在 iGoogle 上的 google bookmark 會在 google bookmark manager 內被自動置入 homepage folder,那何不如法泡製,將加入 iGoogle 個人化首頁的 feed,也自動放在 Google Reader 內的 homepage folder 中。如果用戶已在 iGoogle 內加入分頁標籤,那更可用頁籤名稱作為 Google Reader 內的 folder 名稱。
另外,在 iGoogle 內閱讀 RSS 文章時,如果也可以選擇將文章開啟在 Google Reader 中,那種感覺也是挺不賴的!