2010年12月24日 星期五

MapGuide_MapGuide Enterprise 2010 Update2 with WinServer2008

俗話說的好「不更新沒事,沒事不要亂更新」,但是為了"企圖"解決Invalid stream header的問題也只好硬上了。(挺)

昨日先在自家機器(WinServer2003)上測試更新,完全無痛更新,正常關閉程式、正常關閉服務,點完三個更新檔,重啟服務,一切正常到我懷疑他沒更新。到了業主機房就覺得空氣中彌漫著一股"會待很久的FU"。

情境:
1. Win Server2008
2. MapGuide Enterprise2010
3. 預備更新到SP2

情況:
1. 更新WebServerExtensions時"變得"需要安裝光碟,看起來是有遺失檔案?
2. MapGuide studio執行即顯示程式錯誤,被Windows強制關閉。
3. 更新完成後,MapGuide服務正常啟動,但是圖台框架無法正常執行。

解法:
1. 跳出需要檔案時,指向WebServerExtensions的SETUP.ISM。(很簡單,但是很謎,讓我覺得後面還會出大事情。)
2. 重新指定MapGuide studio使用32bit來執行(方法)
3. 重開機,重新依照
a. 關閉MapGuide Enterprise 2010 Server服務
b. 關閉MGE 2010 Service(license服務)
c. 關閉World Wide Web Publishing Service
d. 關閉IIS Admin Service
e. 開啟IIS Admin Service
f. 開啟World Wide Web Publishing Service
g. 開啟MGE 2010 Service(license服務)
h. 開啟MapGuide Enterprise 2010 Server服務
也就是手動正常停止服務,再手動正常的啟動服務。

查資料的過程MapGuide2010感覺還是針對Win Server2003,32bit的環境去開發測試的,似乎Win Server2008還是應該要搭配MapGuide2011版本。

------------------
我的青醬比薩 T.T

2010年12月23日 星期四

MapGuide_2010版出現Invalid stream header exception

最近接連遇到兩台MapGuide伺服器產生『Invalid stream header exception』的錯誤,而發生這個狀況的程式碼竟然是在"site.Open(userInfo)",也就是說嘗試要去連接MapGuide的時候就出現錯誤了,所以不太可能是因為程式的問題,而在重開機以後也恢復了正常。

而今天又突然發生一樣的錯誤,如果去Google『MapGuide Invalid stream header exception』會查到一些類似的描述,意思是:有些情況會造成"某個東西"無法釋放,最後產生這個資料流檔頭異常的狀況。

看起來的解決方法是:
1. 去釋放那些執行緒
2. 更新MapGuide(更新檔哪裡找?)

更新檔的說明文件裡(http://images.autodesk.com/adsk/files/AutodeskMapGuideUpdate2Readme.pdf),其中有一項修訂是:(1219841.01) TCP/IP connections were not always being released and
occasional invalid stream header errors occurred,所以看起來在MapGuide2010第二版的更新中已經修正了這個問題。

如果本篇沒有被移除,表示我更新後沒有再遇到相同的問題,請安心服用。

MapGuide_更新檔哪裡找?

什麼樣的軟體、遊戲,都很難在內部測試就知道所有的問題,遊戲常常會來個封測,然後在公測,最後才是正式上線,但是對於軟體好像就沒有,尤其是越專業的軟體,越不容易被取代的時候,他們總是推出一些"經過嚴密測試,但是還是有很多問題的產品",就跟我們接專案,也是"經過嚴密測試,但是還是交出『極可能』有些問題的系統",當然問題很多,比如自己就是測試人員、時程只以專案期間為考量、人力只以現有人月來考量之類的。一不小心就開始碎碎念了。

有些廠商會做線上更新,只要使用者連上線就可以更新到最新版本,有些則沒有,需要使用者自己去注意有沒有新的更新檔上線了。而通常會去看有沒有更新檔,通常都是遇到無法解決的問題,最終歸類該問題是軟體本身的臭蟲。

所以,最近遇到了MapGuide Enterpirse 2010版的問題,覺得是MapGuide本身的問題,所以開始找更新檔,結果....好難找。

為了讓自己下次快點找到,記載一下:
1. 連到官方網站(http://usa.autodesk.com),台灣歐特克我是沒看到任何相關資訊。
2. 選取Support的Support & Documentation。

3. 進入後,點選下標的一項Service Packs & Downloads。

4. 進入後,會看到很多軟體的圖示,不用找,因為MapGuide是屬於小小眾市場,直接到最下面的下拉式選單。

5. 接下來點選Updates & Service Packs囉。

6. 然後就看到超想下載的更新檔一堆!


更新檔位置(http://usa.autodesk.com/adsk/servlet/ps/dl/index?siteID=123112&id=2334435&linkID=9242179),或許哪天他的連接ID會變,就自己找一下囉。

目前MapGuide2010版的更新是出到第二版,前面歷經1版及1b版,因為2011已經上市了,之後2010應該也不會再出。看看2011已經出第一版更新了,XD。

2010年12月15日 星期三

Android筆記_如何申請Google Map API Key(模擬器用)

本來12月1日很開心的發了一篇文章,想說12月要有好的開始,認真的記載學習日誌,沒想到又被報告、簡報、文件、教育訓練搞的頭腦頓頓的,今天抽空對之前的程式做一個小整理,才又驚覺已經15日了,雖無法過之前高點,也不能讓2010年最後一個月變低點,趕快發一下之前就截好圖的簡單記載。

--------本文----------

在Android開發中,『地圖』是很重要的一塊,許多以前幻想的功能,都可以跟著你的行動裝置進而實現,以往GPS+地圖最常想到的都是導航、巡覽等等的事情,而設備通常不是一般大眾會去買或是會去擁有的,但現在GPS已經變成行動裝置,或是說智慧型手機一個必備的設備之ㄧ。

若是提到地圖,當然就不能不提Android發啟者Google的Google Map了!

想要在手機上顯示Google Map,就必須要先有使用Google Map API的鑰匙,而這邊又分為兩種,一個是真的於手機上使用,另一個就是在模擬器中使用。

本篇主要記載如何在模擬器中使用,直接看步驟:
1. 先於Eclipse找到debug.keystore的位置(Eclipse→Windows→Preferences→Android→Build)


2. 執行cmd,找到Java的bin資料夾(若你也是使用XP,位置是:C:\Program Files\Java\jre6\bin)

3. 輸入取得MD5的指令,可以取得MD5的編碼。(以下C:\Documents and Settings\57237\.android\debug.keystore為第一步驟查到的路徑位置)

keytool -list -alias androiddebugkey -keystore "C:\Documents and Settings\57237\.android\debug.keystore"
-storepass android -keypass android


4. 進入Google Map API Key的申請網站(http://code.google.com/intl/zh-TW/android/maps-api-signup.html),並且輸入剛剛取得的MD5編碼。

5. 就可以取得Android Maps API的金鑰。

6. 將取得的Map API Key貼到com.google.android.maps.MapView的android:apiKey。

註:該金鑰是針對MD5編碼所產生的,所以要開發的電腦都必須要自行申請,使用別人的金鑰是無效的。

等買了手機就可以發一篇,如何申請Google Map API Key(實機用),XD。

2010年12月13日 星期一

Ola認為的基本功─了解戰友及部屬

我們這輩子從大概半歲開始就會接觸許多千奇古怪的人,

一開始是爸爸媽媽、然後親戚鄰居、再來是幼稚園的小朋友....

接著就開始過著所謂的群體生活....

幼稚園,小學、國中、高中、大學、研究所、工作....

在這當中,我們常常需要與別人合作達成一些目的,

幼稚園的積木城堡

小學的大隊接力

國中的籃球比賽

大學的社團活動

研究所的專題研究

工作上的各式專案

----------------------------------------------

這些活動若是成功,通常都有一種人,並不特別厲害,但他懂大家..

「他是飛毛腿,給他第一棒!讓我們領先矛頭」

「他運球刁鑽視野又廣,讓他當控衛!」

「這個專題很奇特,你鬼才,可以給我一點意見嗎?」

所以,我以為每一個團體要能夠運作順暢、各安其命,

必須要有一個懂人的人,有時候我們稱他叫做領隊、團長或是長官。

-----------------------------------------------

說來困難、但又基本,懂得你的部屬,懂得你的戰友,

想想,如果你是教練,給你一支球隊,你第一件事情是什麼?

數數你有幾顆球?比對球衣的顏色?還是確認籃網有沒有破掉?

我想你的答案應該是『我要知道我的球隊有些什麼樣的"人才"』

當真的了解,才有可能在安排上妥適,在調度上自如,

在失去的時候,了解"真正"失去了什麼樣的"實質戰力",

並且了解影響層面的深度與廣度,

懂得恐懼也是實力的一部分。

-----------------------------------------------

現在,想想你的長官、同事及部屬,想想辦公室的所有人,

你可以細數每個人的"能力"嗎?

如果現在有一個專案,請你組出夢幻團隊,你確認適當的位子,放上適當的人了?

我想實情是,你根本不瞭解其他人的能耐,

而如果你連現在手上的牌都看不清楚,還能知道要補甚麼牌嗎?

----------------------------------------------

我們常說無意比故意更恐怖,因為他連事情的重點都抓不到....

所以,自以為懂的懂更讓人覺得是一個笑話。

你今天笑了嗎?

2010年12月1日 星期三

Android筆記_聽Broadcast與發送Broadcast

在課程一開始就說明Android應用程式有四大區塊:
1. Activity
2. Broadcast receiver
3. Service
4. Content provider

上一堂課終於進入了第二個區塊,也就是Broadcast,廣播顧名思義就是"告訴大家這邊有事情發生"?

感覺就很像上面這張圖,手機會去告訴現在發生了什麼事情,比如說簡訊進來了、電話進來了,而發送廣播的源頭可以來自於手機本身,或是某一個自製的Activity,就像是可以發送一個"Ola Good"的廣播;有註冊接收的Activity就會產生相對的反應(手舉起來)~~~ \@o@/

有幾個重點:
1. Broadcast並不是對有去接收該事件的人發送,而是對整個手機進行發送,他沒有預設要發送給誰。
2. 我們除了可以去收手機本身定義的Broadcast,也可以自己發送自己的。
3. 如果註冊了要接收某個Broadcast,在沒有反註冊前都會不斷的接收,也不會進入GC(GarbageCollection)流程。
4. Broadcast可以由Activity發送,也可以由Service發送。

所以,要怎麼發送?註冊接收?取消接收(反註冊)?

發送:
傳送一個名為OLA_ON_SERVICE_001的Broadcast

String OLA_BROATCAST_STRING = "OLA_ON_SERVICE_001";
Intent i = new Intent(OLA_BROATCAST_STRING);
i.putExtra("STR_PARAM1", "廣播訊息");
sendBroadcast(i);


註冊接收:
註冊去接收OLA_ON_SERVICE_001。

String OLA_BROATCAST_STRING = "OLA_ON_SERVICE_001";
IntentFilter mFilter01 = new IntentFilter(OLA_BROATCAST_STRING);
mReceiver01 = new mBroadcastReceiver(); //←實作一個BroadcastReceiver來篩選
registerReceiver(mReceiver01, mFilter01);


反註冊接收:

unregisterReceiver(mReceiver01);


***大衛老師建議:在OnResume註冊、在OnPause反註冊。