2009年7月31日 星期五

修改google blog版面區塊大小

這是我花了一點點時間研究出來的,記錄一下。
假設一開始在blogspot首頁,選自訂->版面配置->修改html。

1.修改blog標題寬度

#header-wrapper {
...
width:660->960px;
...
}

2.修改文章區塊+側邊欄總寬度

#outer-wrapper {
...
width: 660->960px;
...
}

3.修改文章區塊寬度

#main-wrapper {
...
width: 410->710px;
...
}

4.修改blog標題描述的文字寬度

#header .description {
...
max-width:700->1000px;
...
}

2009年7月30日 星期四

使用webProxy+Redirect上被封鎖的網站

有時候某些網站是被網管封鎖住的,或是有些網站是擋住台灣的ip,
這些時候就可以用 proxy的技巧來突破封鎖,不過網管又有可能鎖住proxy,
所以這時就可以選擇用webproxy,不過webproxy的問題在於你要把你瀏覽的網址貼在提供webproxy的網站的欄位裡,有點麻煩。
這時就可以用firefox的套件Redirect來自動做這件事。
先去 https://addons.mozilla.org/zh-TW/firefox/addon/5064 安裝此套件,
接著就去套件設定處新增一個profile,以下以無名為例。




Include Pattern: http://www.wretch.cc/*
Redirect to: http://anonymouse.org/cgi-bin/anon-www.cgi/http://www.wretch.cc/$1


這樣以後只要你要連到無名的網址 (按連結或手動key),都會自動經由此webproxy跳到無名的網頁,如果發現無效,那可能網管連此webproxy也檔住,這就要換一個webproxy的網站試了(上述以anonymouse網站為例,記得還要找出webproxy的轉址的規則)。

BBS:

Include Pattern: http://zterm.applet.googlepages.com/ZTerm.htm
Redirect to: http://anonymouse.org/cgi-bin/anon-www.cgi/http://zterm.applet.googlepages.com/ZTerm.htm


注意
:
使用此webproxy技巧有安全上的疑慮, 若需登入的網頁請自行考量是否用此法瀏覽。

2009年7月29日 星期三

Android 1.5 上使用google map API的設定

在進入Android 1.5後,很多地方都變得不一樣了,google API的使用就特別獨立成一個模擬器設定,見下圖。



所以如果在程式中要使用到google map API,則run模擬器就要選上圖中的d,另外就是程式本身的bulid target也要選擇google APIs,而不是Android 1.5,見下圖。



若這些沒設定好,在import google api的函式庫時則會出現找不到的error。

開發Android時需要準備的金鑰keystore

在開發Android程式時會有兩種情況會需要用到金鑰
A. 要把程式放到實體Android手機上執行時
B. 使用google API時
以下就這兩種情形來說明準備流程

A. 需要準備一組屬於開發者的專有keystore,
1. 先在eclipse裡在project上按右鍵選android tools -> export unsigned app。
2. 使用java提供的keytools (win上是在java安裝目錄下的bin),

keytool -genkey -v keystore developer.keystore -alias developer.keystore -keyalg RSA -validity 20000

上述的developer.keystore可自訂名稱。
3. 使用java提供的Jarsigner工具來替程式(x.apk)簽署金鑰。

jarsigner -verbose -keystore developer.keystore -signedjar x_signd.apk x.apk developer.keystore

4. 測試程式已上金鑰

jarsigner -verify -verbose -certs x_signed.apk

最後再把程式用usb線傳到手機裡安裝即可。

B.當要使用google API時, 要準備一組金鑰來向google申請API的使用,然後把從google那得來的apiKey填到程式裡。若是準備要放在手機上的程式,則要使用開發者個人的金鑰,若是要在模擬機上使用google map等API,則是要使用模擬機的金鑰keystore來申請google apiKey。以下是使用google map API的流程。

1. 找出模擬機對應的debug.keystore,以用來申請google map apiKey,若是要使用在手機上,則跳過1。 win xp上debug.keystore是放在

documents and setting\local settings\application data\android\debug.keystore


2. 利用java的keytool來取得金鑰keystore的MD5 fingerprint,若是開發者金鑰則通常會需要填產生金鑰時的密碼。

keytool -list -keystore x.keystore

3. 把得到的MD5碼填在申請網頁android maps API Key Signup 中的欄位來獲得apiKey。
4. 把apiKey填在res/layout/main.xml裡,

android:apKey="xxxxxxxxxxxxxxxxxx"

5. 開始開發程式。

參考:
http://code.google.com/intl/zh-TW/android/add-ons/google-apis/mapkey.html#getfingerprint

wxwidget中的wxBufferedDC使用方法

wxBufferedDC的目的是為了減少閃碩等畫面更新可能帶來的問題,它有幾個預設的constructer,若是要在wxBufferedDC中自己維持一個bitmap以增進速度,則方法是先new出一個bitmap object

wxDC* dc2 = new wxClientDC(this);
wxBufferedDC dc(dc2, *buffer);

然後在繪圖的function中,把此bitmap的pointer丟進wxBufferedDC的constructer,後再進行繪圖動作

{
wxDC* dc2 = new wxClientDC(this);
wxBufferedDC dc(dc2, *buffer);
.
.
.
dc.UnMask();
delete dc2;
}

此function執行到最後面時會去執行wxBufferedDC的deconstructor,就會自動把bitmap的東西倒進wxClientDC中 (畫到螢幕上),但之前new出來的dc2並不會自動delte掉,這樣程式執行時會有memory leak造成的不穩定情形,所以要在function最後面加dc.UnMask()來手動把bitmap倒進wxClientDC中,再delete掉dc2。

c++ STL中的Deque使用

基本上,deque是個雙向佇列,所以可自由的從最前面或最後面加入元素。當要清空deque時,若使用

deque.clear();

則bulid debug mode下的project會過不了,在release mode下會過但執行時有時會跳出例外。最後我找到的soultion則是使用

deque.erase(deque.begin(), deque.end());

這樣就OK了。