指定 Google maps API script 的編碼

是的,Google maps API 的 javascript 預設編碼是 utf-8,如果你的網頁編碼是 big5 或其他的,你應該要同時調整 javascript 的輸出編碼,否則你可能會遇到奇怪的錯誤。
方法就是加上隱藏的參數 oe,以 big5 為例:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=your_key&amp;oe=big5" type="text/javascript"></script>

或許你也跟我注意到了,這兒並不是使用 &,而是使用 &amp;,並不是我故意寫錯,而是官方提供的範例就是如此,而且 IE6、IE7、Firefox 都可以接受…

plugin_syntaxhighlighter

在 blogger 使用 dp.syntaxhighlighter 的話,你會發現根本無法生效,主要是因為 blogger 把換行符號都替換成 <br/> 了,而且還沒有設定可以決定是否要替換。
很幸運地,有人已經提出解決方法:yehyeh: Blogger dp.SyntaxHighlighter斷行問題解決方法

只是,我已經套用blogger-ext2了,於是想說,是不是可以寫一個blogger-ext2的 plugin 來解決這個問題。
非常感謝jQuery的強大功能,不到半天就完成了,最重要的是,不用像上面解決方法一樣,寫了一堆 code。

// Register dp.SyntaxHighLighter
// Dependency:
//   jQuery-1.2.1
//   blogger-ext2-core (最新版,0.7.x 的樣子)
//   dp.syntaxhighlighter-1.5.1
BloggerExt.SH = function() {
// Plugin 會由此開始
if( dp!='undefined' ) {
// 找到 pre, textarea 下所有 br,然後替換成換行符號,收工。
jQuery("pre > br").each( function() { jQuery(this).replaceWith( "\n" ); } );
jQuery("textarea > br").each( function() { jQuery(this).replaceWith( "\n" ); } );
dp.SyntaxHighlighter.ClipboardSwf = 'http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
}
};
BloggerExt.SH.user_pref = function() {
var prefs = [];
return prefs;
};
BloggerExt.SH.update_pref = function(prefs) {
};
BloggerExt.register('SH', { SH: true} );

使用範例:

<script type="text/javascript" src="jquery-1.2.1.pack.js"></script>
<script src="blogger_ext2.js" type="text/javascript"></script>
<script type="text/javascript" src='http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/shCore.js'></script>
<script type="text/javascript" src='http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/shBrushCSharp.js'></script>
<script type="text/javascript" src='http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/shBrushVb.js'></script>
<script type="text/javascript" src='http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/shBrushPhp.js'></script>
<script type="text/javascript" src='http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/shBrushJScript.js'></script>
<script type="text/javascript" src='http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/shBrushSql.js'></script>
<script type="text/javascript" src='http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/shBrushXml.js'></script>
<script type="text/javascript" src='http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/shBrushPython.js'></script>
<script type="text/javascript" src='http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/shBrushCss.js'></script>
<script type="text/javascript" src='http://syntaxhighlighter.googlecode.com/svn/tags/1.5.1/Scripts/shBrushCpp.js'></script>
<!--假設你已經把上面代碼存為 plugin_syntaxhighlighter.js 了 -->
<script type="text/javascript" src='plugin_syntaxhighlighter.js'></script>

SyncToy

AllwaySync是可以用,但卻有限制,如果一次同步超過 20000 個檔案,抱歉,請買原版,現在有特價,約美金 20 元。該買嗎?
我不死心地再找了一次,突然想起前一陣子丟在桌面的 SyncToy,既然是Microsoft的好意,不如裝起來試試吧。
喔!
不錯用呢~ (對不起,不附圖片了…因為,豆漿濃…)
使用的體驗與 AllwaySync 接近,而且比 AllwaySync 聰明,會自動判定檔案是否被更名,而不會傻傻的刪除,再重新複製。
好東西,下載網址:SyncToy: a free powertoy download for file synchronization
p.s. 官方說法 XP/Vista 適用,經過我的實驗,Windows 2000 也可以用,只要有裝 .Net framework 2.0 即可。

Prism 的網路設定

如果你已經安裝了Prism 0.8(下載),而環境正好有該死的 Proxy 的話(是的,目前Prism 0.8不提供網路設定的選項),那麼你可以試著修改 C:\Documents and Settings\your_username\Application Data\Prism\Profiles\xxxxxxx.default\prefs.js,在後面加上這幾行:

  1. 如果是自動偵測的話,
    user_pref("network.proxy.type","4");
  2. 如果已經知道 proxy 位址與 port的話,
    user_pref("network.proxy.http","localhost");
    user_pref("network.proxy.http_port","3128");
    user_pref("network.proxy.type","1");
  3. 如果知道Proxy自動設定網址的話,
    user_pref("network.proxy.autoconfig_url", "http://isawp1.msi.com.tw:80/wpad.dat");
    user_pref("network.proxy.socks_version", 0);
    user_pref("network.proxy.type", 2);

Apache SSL on Windows

新版的Apache Windows 版最近加上了 SSL 支援,建立憑證的方法跟在 Linux 下一樣,需要的話可以參考:鳥哥的Linux私房菜:建立 SSL (https) 網站
指令大致都一樣,只有一點點不同:

cd "C:\Program Files\Apache Group\Apache2\conf"
mkdir ssl.key
..\bin\openssl genrsa -out ssl.key\server.key 1024
mkdir ssl.crt
..\bin\openssl req -new -x509 -key ssl.key\server.key -out ssl.crt\server.crt -config .\openssl.cnf

接著修改你的 httpd.conf/mod_ssl.conf ,修改完成以後,重新安裝 Apache 到”服務”裡面去:

..\bin\apache -k stop
..\bin\apache -k uninstall
..\bin\apache -D SSL -k install

接著重新啟動,就完成了。

..\bin\apache -k  start

Vim folding

今天無聊把玩Vim的 :help,想起了以前有試過,但忘記的功能 – folding~
可是跟以前記得的用法好像不太一樣,總之,現在的用法很簡單:

set foldmethod=syntax

(Python或Boo的話,可以用

set foldmethod=indent

這樣就行了。其他的用法請參考 :help。)
你會看到Vim已經依照語法自動幫你把相關的 function/class 都折疊起來了。
接著就可以用 zo 打開,zc 關閉,zO 打開目前 folding 裡面的所有 folding,zC 則是關閉目前 folding 裡面的所有 folding~

如何使用 Box.Net API?

當然,已經有人開發好 Library 的話,那麼直接使用是最快的。
所以第一步就是上 Box Enabled – Sources 看看,是否有合用的。
目前已經有 PHP、Python、Action Script 3 的版本可以使用。
找不到的話,第二步就是去 Box Enabled – Projects 找找看是否有人正在寫。
再不成,那麼就是要自己寫了。
官方的文件其實相當齊全,你可以參考Box Enabled – Documents。
你有三種方式可以存取:SOAP、XML POST、REST
我這裡以REST來舉例:

  1. 取得 API key:你得先註冊成 developer,建立你的 project,才能取得 API Key。
  2. 要使用任何功能前,你必須先取得 Ticket,訪問 http://www.box.net/api/1.0/rest?action=get_ticket&api_key=your_api_key (your_api_key請自行帶入),Parse 收到的XML,取得 ticket,這裡有輸出結果的範例。
  3. 利用 Ticket 進行 login,這個動作實際上就是 POST 這些資訊
    dologin=1
    __login=1
    login=your_email
    password=your_password

    到 http://www.box.net/api/1.0/auth/your_ticket 這個網址去。

  4. 取得 auth_token:登入完成以後,就可以訪問 http://www.box.net/api/1.0/rest?action=get_auth_token&api_key=your_api_key&ticket=your_ticket,再 Parse 收到的 XML,取得 auth_token,同樣地,這兒有很好的釋例。
  5. 拿到的 auth_token,接下來想幹麼就可以幹麼了。例如,上傳檔案,你只要 POST 檔案(your_file)到 post 到 http://upload.box.net/api/upload/your_auth_token/your_file 就可以了。

事實上,有 SOAP (就是Web Service)的話,在某些語言來說,是很方便的,例如 .Net 就可以直接利用 Add web reference 或是利用 wsdl 指令列工具來產生代碼:wsdl /language:cs http://box.net/api/1.0/soap?wsdl …

About Box.Net

Box.Net是這兩年來蠻紅火的一個網路硬碟服務,特色是夠大:1G,而且可以分享。
為什麼會知道這個,是因為以前同學的介紹,當時我還以為他家裏要開站呢~結果才發現是Box.Net,也因此開始使用,不過實在用的不多。
最近想到可以拿這個東西來作備份,於是上Box.Net看看,發現有For Deveoper的 API,看了一看,用的軟體還真不少,像是FireUploader…等等。不過好像沒有適當的 library ?於是決定自己看Documentation來幹一個,語言就用最近看到的Boo吧~
於是就申請了專案:BooBoxNet,也去 Google code開了專案:BooBoxNet,浩浩蕩蕩的開始。今天終於有了點成果,再次回到官方網站,卻發現已經有Library了?!這還真是尷尬…算了,反正都寫了,也沒打算寫很大,能作簡單的 Upload、刪除就行了~這幾天應該就可以完工了。