2013年1月25日 星期五

阿~~~~我懂了~~~~~

最近跟人聊天時,我常常說:「很多事情做了才會在某些時刻激發其他的想法,如果我們一值不嘗試新的東西那麼你就放棄了這些可能突然蹦出來的想法」,就像學寫程式,難道你能肯定學寫vb6完全沒有幫助你更快瞭解asp.net嗎?學寫asp.net沒有幫助你更快學會Flex嗎?學寫Flex沒有影響在Java上的思維?學寫Java沒有讓Objective-C觸類旁通?某些成果常常是由很多事情的累積而成的。


但是上面這些跟這篇沒有很大的關係,我只是在騎車回家途中,突然產生一個因為下午測試而讓我現在異常興奮的想法,興奮到一邊騎車一邊突然大叫「阿~~~~我懂了啦~~~~~」


:DDDDDDDD


key:3 kind of service、small data、local identify


這實在是很值得吃個羊肉盧慶祝一下。

ArcGIS Server JS API測試_client端以csv檔案格式於地圖上展點

一個突然蹦出來的會議,只好重新打開很久沒開啟的ASP.NET專案,開始對那些新增、刪除、修改的表單做一些很無趣又產量驚人的敲敲打打,但這樣無聊的東西實在是很難連續兩三天,所以今天下午決定挑一個之前有在想、又有趣、又切合目前需求的題目來測試一下,目標:

以ArcGIS Server JavaScript API將client端的點資料展在圖面上,並且有簡單的屬性顯示。

看一下資料格式:


成果:


心得:
1. 測試1600點一次展繪大約1秒,拖動時的手感也還算順暢。
2. JavaScript真的不好維護,常常因為不小心的錯誤找很久。
3. 這樣的功能要能夠防呆,必須要非常嚴謹的程式碼。
4. 沒有回Server喔! :D
5. 是一個感覺很有用的應用,你懂的,ㄎㄎ。


本篇僅紀念js這麼弱的人,半天竟然測出小成果,但是下星期又要回到現實,繼續敲敲打打了。 :D

2013年1月17日 星期四

六週年慶

六週年,以accepted開頭,勢必需要一個有氣勢的延續,取名在家也可以享受高級餐廳的服務大作戰!

前菜:洋蔥燻鮭魚
配菜:白酒蛤蜊+香炒野菇
湯品:海鮮濃湯
麵包:法式吐司
主菜:香煎羊排
飲料:蘋果冰茶
甜點:香蕉布朗尼
六週年快樂。

2013年1月11日 星期五

Android學習_如何開始使用Google Maps Android API v2

前一陣子想要測試一些Google Map的東西,才發現他默默的在2012年12月3日推出了Google Maps Android API v2(官方資料),而原本申請key與使用的方式變的不太一樣。

要讓手機正確出現Google map需要下列步驟:
1. 建立個人的keystore。
2. 由個人的keystore查詢SHA1碼。
3. 利用SHA1碼至Google apis網站申請key。
4. 於eclipse安裝Google Play services。
5. 於要使用Google Map的專案加入google-play-services_lib的Library。
6. 於專案的AndroidManifest與layout.mal加入需要的設定。
7. 利用第一步驟的keystore匯出專案為apk檔案。
8. 以adb安裝上述apk檔案。


詳細步驟:
1. 建立個人的keystore。
A. 開啟DOS命令視窗,找到java的bin資料夾(C:\Program Files\Java\jre6\bin)
B. 輸入keytool指令(keytool -genkey -v -keystore yourkeyname.keystore -alias yourkeyname -keyalg RSA -keysize 2048 -validity 10000)
輸入後,會有一系列的問題,需要注意的是過程中會輸入兩種密碼,網路上書上都推薦怕記不住就用一樣。


2. 由個人的keystore查詢SHA1碼。
A. 還是一樣先開啟DOS命令視窗,找到java的bin資料夾(C:\Program Files\Java\jre6\bin)
B. 使用"既有keystore取得SHA1的語法(keytool -list -v -keystore "C:\Program Files\Java\jre6\bin\yourkeyname.keystore"),鍵入語法後就必須要輸入剛剛建立時所設定的密碼。(語法中加上-v才會顯示SHA1碼)


3. 利用SHA1碼至Google apis網站申請key。
A. 連至申請網站https://code.google.com/apis/console/
B. 若是第一次使用按Create Project。
C. 選擇左邊列表的Services,並且將google Maps Android API v2調整成"on"。
D. 選擇左邊列表的API Access,並且點擊右下角的Create new Android key。
E. 輸入步驟二得到的SHA1與專案的Package名稱(中間以分號分隔),例:SHA1碼;tw.com.maptest。
F. 記住API key。


4. 於eclipse安裝Google Play services。
A. 進入Android SDK Mnanger(eclipse→windows→Android SDK Mnanger)。
B. 安裝Extras的Google Play services。


5. 於要使用Google Map的專案加入google-play-services_lib的Library。
A. 於eclipse→File→import,選擇Android下的Existing Android Code Into Workspace。
B. 由Browse選擇→[android-sdk-folder]/extras/google/google_play_services/libproject/google-play-services_lib
C. 於要使用Google Map的專案按右鍵,選擇Properties。於左側選單選擇Android,並於下方Library上述加入的專案google-play-services_lib。


6. 於專案的AndroidManifest與layout.xml加入需要的設定。
A. 打開AndroidManifest加入必須的設定。
於application標籤之上(注意下述程式碼必須置換yourpackagename成你的package名稱):
<permission android:name="yourpackagename.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="yourpackagename.permission.MAPS_RECEIVE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
於application標籤中加入(注意下述程式碼必須置換GoogleMapAPIKey成剛剛申請到的Key):
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="GoogleMapAPIKey"/>
於application標籤下加入:
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
B. 打開layout.xml,將介面先改為較單純的內容,待測試OK後再更改為自己需要的介面。
<?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.MapFragment"/>
C. java用最單純的內容先進行測試: package yourpackageName; import android.os.Bundle; import android.app.Activity; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }

7. 利用第一步驟的keystore匯出專案為apk檔案。
A. 專案右鍵選擇Android Tools→Export Signed Application Package。
B. 依照步驟可以匯出帶有簽章的apk檔案(過程中必須輸入最初設定的keystore密碼)


8. 以adb安裝上述apk檔案。
A. 利用adb指令(adb install Name.apk)

最後,執行程式,確認手機有連上網路,迎接你的地圖吧。

這篇有幫助到你了話,請留"YA~~~看到圖了"


2013年3月22日由劉佺網友補充如何在不匯出專案的情況下,使用debug.keystore來進行實機測試:
以下為完整留言,感謝他的補充:
不過隨即發現不用匯出成apk這麼麻煩,如果用他預設的debug.keystore去產生api key,就可以直接從eclipse/Run As去選擇自己的裝置
預設的debug.keystore可以從Preferences \ Android \ Build \ Default debug keystore去查詢
步驟二的語法就會變成:keytool -list -v -keystore "C:\Users\使用者名稱\.android\debug.keystore"
預設的debug.keystore的預設密碼是:android;這樣去申請,DEBUG時測試起來就會比較快(非常多 XD),就不用每次都匯出成專案了

剛才測試的時候發現,申請完以後,如果要改成自己之前新建的keystore
1. 先查自定密碼的keystore的SHA1碼
2. 到Google的API Access分頁
3. 選擇右邊的Edit allowed Android apps...
4. 將前半的SHA1碼改掉,分號後面的專案名稱不動
結果API key也不會變動,匯出專案時就可以用自訂的密碼了
實際安裝起來Google Map也可以正常顯示
----------------------------------------------------------------

2013年1月10日 星期四

SQL_程式無法連線到SQL Server相關問題排解

在裝機時其中一個很重要的事情,就是確認程式是否可以正確連線到資料庫,若是無法正常連線,可以逐步測試來確認有可能出問題的設定:

0. 確認輸入之伺服器名稱正確,包含安裝兩台以上之SQL Server是否有增加實體名稱(伺服器/實體名稱)

1. 以本機確認Windows驗證(伺服器/實體名稱)是否可以通過:若是無法通過,應確認SQL Server在安裝時的管理者是否還存在於windows帳號當中,若原設定的管理者被刪除,唯有重建資料庫與重灌一途。

2. 以本機確認SQL驗證(伺服器/實體名稱)是否可以通過:若是無法通過,請用管理者帳號確認該SQL帳號是否已於安全性的登入中正確顯示。

且確認該資料庫是否設定為"SQL Server及Windows驗證模式。


3. 以本機確認SQL驗證(ip/實體名稱)是否可以通過:若是無法通過,至SQL Server組態管理員確認是否有開啟TCP/IP設定。

4. 以本機確認驗證通過後,是否可以正常開啟要查詢的資料庫:若是跳出無法存取資料庫XXX,則確認該SQL帳號是否有給定存取該資料庫之權限。

5. 以另一台伺服器測試SQL驗證(ip/實體名稱),若無法連線:
(1) 至SQL Server組態管理員查看ip設定為何?若有指定之port,連線時必須以"ip/實體名稱,port"來連線。
(2) 至SQL Server組態管理員或服務管理查看SQL Browser服務是否有開啟。
(3) 以telnet測試,該port是否可使用。(安裝請參考)
(4) 確認防火牆是否有開啟,若有開啟確認是否有輸入相關規則。(包含:TCP/1433與UDP/1434)

(5) 若是express版本,沒有指定特定port,而使用動態port,則需增加規則。(讓sqlserver.exe可穿越防火牆)

*.但微軟於官方文件提到:另一種設定具名執行個體到固定通訊埠的方法,就是在防火牆中為像是 sqlservr.exe (針對 Database Engine) 等 SQL Server 程式,建立例外。 雖然這樣做很方便,但是當您使用具有進階安全性 MMC 嵌入式管理單元的 Windows 防火牆時,其通訊埠編號將不會顯示在 [輸入規則] 頁面的 [本機通訊埠] 欄中。 如此一來可能會讓您更難以稽核哪些通訊埠已開啟。其他考量是 Service Pack 或累積更新可能會變更 SQL Server 可執行檔的路徑,因而使防火牆規則失效。

(6) 詢問該單位網路管理員,是否有別的防火牆設備或軟體,請他開啟相關連接埠。


以上,若是還是無法正常連接資料庫,那就回家休息一下。