在Eclipse有時會遇到無法copy的問題
雖然找不到比較直接的問題,但有解決方法可以
Window > Preferences > Java > Editor > Typing
取消勾選 Update imports
參考資料:
http://rocking5566.blogspot.tw/2013/03/eclipse.html
2013年4月1日 星期一
2013年3月31日 星期日
GPS 範圍的計算
最近在開發Android的GPS,在使用Google Map API(JS)看過可以在畫面上畫出一個範圍
就像下面這張
但今天我不是要說Google Map API的使用,至於要怎麼使用就請參考
Google Maps JavaScript API 第 3 版
從上面那張圖的座標點都是從資料庫下來的,但是如果是只要在藍色範圍的座標,就可以參考下面SQL Query
找出你資料庫內有小於這個範圍的資料
這邊的 $lat, $lon為你所要設定的中點GPS(經瑋度),$dist為你所要找的範圍(單位:公里)
比較圖
參考資料:
http://zcentric.com/2010/03/11/calculate-distance-in-mysql-with-latitude-and-longitude/
http://www.marketingtechblog.com/calculate-distance/
http://zh.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL
就像下面這張
但今天我不是要說Google Map API的使用,至於要怎麼使用就請參考
Google Maps JavaScript API 第 3 版
從上面那張圖的座標點都是從資料庫下來的,但是如果是只要在藍色範圍的座標,就可以參考下面SQL Query
$query = "SELECT ((ACOS(SIN($lat * PI() / 180) * SIN(gps_lat * PI() / 180) + COS($lat * PI() / 180) * COS(gps_lat * PI() / 180) * COS(($lon - gps_long) * PI() / 180)) * 180 / PI()) * 60 * 1.1515 * 1.609344) AS distance, gps_lat, gps_long FROM `mytable` HAVING distance<=$dist ORDER BY distance ASC"
找出你資料庫內有小於這個範圍的資料
這邊的 $lat, $lon為你所要設定的中點GPS(經瑋度),$dist為你所要找的範圍(單位:公里)
參考資料:
http://zcentric.com/2010/03/11/calculate-distance-in-mysql-with-latitude-and-longitude/
http://www.marketingtechblog.com/calculate-distance/
http://zh.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL
2013年3月27日 星期三
OnItemClickListener 失效
最近有使用到 ListView OnItemClickListener 發現到失效的狀況
搜尋了一下可以用下面這個方法解決
在你的LinearLayout加入下面這段參數,就可以解決失效的問題
搜尋了一下可以用下面這個方法解決
在你的LinearLayout加入下面這段參數,就可以解決失效的問題
android:descendantFocusability="blocksDescendants"
......
2013年3月22日 星期五
FreeBSD 8.x升級9.x
其實這中間一直就想知道了,一直到現在才有機會弄,太混了(打
首先
系統會出現詢問"look resonable",就按Y吧...
接著下載你需要更新的版本這裡我是更新 9.1-RELEASE
接著Install
重新開機!!
重開機後,還需要再Install,將相關組件升級到9.1版
刪除舊的或是不需要的組件(再執行一次freebsd-update install)
升級完成!!您可以查看系統的版本
參考連結:
http://tanet.center.kl.edu.tw/news.php?item.22
首先
freebsd-update fetch freebsd-update install
系統會出現詢問"look resonable",就按Y吧...
接著下載你需要更新的版本這裡我是更新 9.1-RELEASE
freebsd-update upgrade -r 9.1-RELEASE
接著Install
freebsd-update install
重新開機!!
sync;sync;reboot
重開機後,還需要再Install,將相關組件升級到9.1版
freebsd-update install
刪除舊的或是不需要的組件(再執行一次freebsd-update install)
freebsd-update install
升級完成!!您可以查看系統的版本
uname -rs
參考連結:
http://tanet.center.kl.edu.tw/news.php?item.22
2013年3月20日 星期三
Preference
在Android App都有像是"設定"的選單,讓使用者去客制自己的選項
res/xml/setting
我們有時候會看到當選擇了某一項開關,下面的選擇都會被關閉不可選,就是用dependency來指定
只要去指定要follow的key就可以
上面的interval,intervalValues的值就設定在arrary.xml也就是下面
res/value/array.xml
接著建立一個Option Class
onPreferenceChange這個Listener會去Listener當值變化的時候,你可以將你的值紀錄起來,這樣大致上就完成
但這個還是有一個問題,你的系統已經紀錄你的option的變化,但你的所設定的defValue卻沒有相同
這時你還需要加入下面來讓你的defValue一樣
res/xml/setting
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="@string/wifi_setting" >
<CheckBoxPreference
android:key="@string/test1_key"
android:defaultValue="true"
android:title="@string/title1"
android:summary="@string/summary1" />
<CheckBoxPreference
android:key="@string/test2_key"
android:dependency="@string/test1_key"
android:defaultValue="false"
android:title="@string/title2"
android:summary="@string/summary2" />
<ListPreference
android:key="@string/test3_key"
android:dependency="@string/test1_key"
android:entries="@array/interval"
android:entryValues="@array/intervalValues"
android:defaultValue="30"
android:title="@string/title3"
android:summary="@string/summary3" />
</PreferenceCategory>
</PreferenceScreen>
我們有時候會看到當選擇了某一項開關,下面的選擇都會被關閉不可選,就是用dependency來指定
只要去指定要follow的key就可以
上面的interval,intervalValues的值就設定在arrary.xml也就是下面
res/value/array.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="wifi_update_interval">
<item name="10">10 秒鐘</item>
<item name="30">30 秒鐘</item>
<item name="60">1 分鐘</item>
<item name="300">5 分鐘</item>
</string-array>
<string-array name="wifi_update_intervalValues">
<item name="10">10</item>
<item name="30">30</item>
<item name="60">60</item>
<item name="300">300</item>
</string-array>
</resources>
接著建立一個Option Class
public class option extends PreferenceActivity implements OnPreferenceChangeListener {
/*** Debugging ***/
private static final String TAG = "option";
private static final boolean D = true;
String test1_key, test2_key, test3_key;
CheckBoxPreference test1, test2;
ListPreference test3;
@Override
@SuppressWarnings("deprecation")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
test1_key = getResources().getString(R.string.test1_key);
test2_key = getResources().getString(R.string.test2_key);
test3_key = getResources().getString(R.string.test3_key);
test1 = (CheckBoxPreference) findPreference(test1_key);
test2 = (CheckBoxPreference) findPreference(test2_key);
test3 = (ListPreference) findPreference(test3_key);
test1.setOnPreferenceChangeListener(this);
test2.setOnPreferenceChangeListener(this);
test3.setOnPreferenceChangeListener(this);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
// TODO Auto-generated method stub
if(D) Log.e(TAG, "Change preference.key: " preference.getKey().toString());
if(D) Log.e(TAG, "Change preference.key: " newValue.toString());
if(preference.getKey().equals(test1_key)) {
} else if(preference.getKey().equals(test2_key)) {
} else if(preference.getKey().equals(test3_key)) {
}
return true;
}
}
onPreferenceChange這個Listener會去Listener當值變化的時候,你可以將你的值紀錄起來,這樣大致上就完成
但這個還是有一個問題,你的系統已經紀錄你的option的變化,但你的所設定的defValue卻沒有相同
這時你還需要加入下面來讓你的defValue一樣
public class MainActivity extends Activity {
/*** Debugging ***/
private static final String TAG = "MainActivity";
private static final boolean D = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(D) Log.e(TAG, "item.getItemId() " item.getItemId());
switch(item.getItemId()) {
case R.id.menu_settings:
startActivity(new Intent().setClass(this , option.class));
break;
}
return false;
}
private void init_option() {
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(mContext);
test1 = pref.getBoolean("test1_key", true);
test2 = pref.getBoolean("test2_key", false);
test3 = Integer.parseInt(pref.getString("test3_key", "30"));
}
}
2013年1月2日 星期三
Ruby Regular Expressions
我們從這個例子
# 抓出手機號碼
phone = "123-456-7890"
if phone =~ /(\d{3})-(\d{3})-(\d{4})/
ext = $1
city = $2
num = $3
end
可以抓出分別是123, 456, 7890
但在新的一版1.9可以在正規表示內加入參數
但在新的一版1.9可以在正規表示內加入參數
# 抓出手機號碼
match_phone = /(?<ext>\d{3})-(?<city>\d{3})-(?<num>\d{4})/.match(phone)
puts match_phone[:ext]
puts match_phone[:city]
puts match_phone[:num]
參考資料
ihower
http://www.igvita.com/2011/02/03/new-ruby-19-features-tips-tricks/
訂閱:
文章 (Atom)




