2010年9月28日 星期二

單純重複耗時 VS 複雜變化迅速

從學生時代就問過很多人這個問題:你喜歡「單純、重複、已知、只要花時間就可以完成的的事情(工作)」還是「複雜、有變化、抓到訣竅或方法就有可能快速完成的事情(工作)」。

出社會工作以後,因為產業我自然而然地把掃描、數化、工廠式的生產成果的事項歸類成第一種,而把所謂的"程式開發"歸類成第二種;約莫一年半前,我跟同事說:我覺得每天重複做已知的事情好像蠻幸福的,不像你現在突然有一個BUG,搞不好解個一星期還有問題;而在重視所謂的"專案管控"的公司(我想每個公司應該都很重視),自然而然會認為這樣的案子是井然有序的,慢慢的覺得執行案子的工程師也是井然有序,做事情有條有理;反觀系統案?似乎剛好背道?

不管怎樣,我開始覺得如果可以做這樣的工作,或許會很快樂?

昨天,我坐在座位上埋頭苦幹,為的是系統要跟別的系統介接,我突然覺得自己好像工廠,好像可以估出時間了,在做的事情對於自己會的東西已經開始相對單純、可重複,甚至可以說花時間就可以完成?但是好像沒有快樂的感覺,只覺得空空的。

這不是我希望的腦袋放空就只要做的快樂工廠模式嗎?

我覺得這個我還是要想想,關於這個與關於我的工作。

2010年9月23日 星期四

管理大師們說的話

在天下雜誌第455期(2010年9月8日~2010年9月21日)有一個主題「管理大師給未來領袖的六堂課」(P68~P76),由蕭富元整理,看完以後感觸頗深。

--------------以下接摘錄天下雜誌455期-----------
第一堂(杜拉克):建構經營哲學。要了解經營哲學必須先了解:我們的使命、我們的核心能力、我們擅長什麼?我們應該做什麼?誰是我們的顧客?誰不是我們的顧客?我們希望達成什麼事業成果?我們應該抱持什麼樣的理論?組織最重要的是觀察會造成的負面社會衝擊,以及可變為商機的社會問題。這兩件事情重要的原因是:組織第一原則是不傷害社會、第二原則是幫助社會。

第二堂課(彼得.聖吉):新時代組織應該學會學習。「組織唯一持久的競爭優勢是,比競爭者有更快速的學習能力」。

第三堂課(查爾斯.韓第):哲學思考。組織的每一位守護者,都需要一位蘇格拉底來挑戰他們的思維,藉此幫助他們思考與釐清。

第四堂課(史蒂芬.柯維):領導與管理如何並重。領導是賦能的藝術,你無法「領導」事物,也無法「管理」人員;你只能控管事物領導(賦能)他人。除非組織重視人,讓他們在四個領域中有所滿足:給公平的酬勞(身體)、體貼的對待(感情)、讓他們發揮創造力(心智)、讓他們以有道德、有原則的方式服務人類(靈魂);否則他們多半會選擇反抗,充其量只是願意服從。唯有被尊重、才會選擇由衷合作、真誠投入、甚至有創造力的勤奮工作。

第五堂課(肯.布蘭查):僕人式的領導。領導者是率領人們朝向某處,傑出的領導者暨領導、又服務,構築一個具說服力的願景和明確走向。告訴員工,這是什麼樣的組織(目的)、組織將朝向何處(未來)、旅程中將以什麼為指引(價值觀)。傳統金字塔應該倒置,領導者照顧員工的需求,鼓舞並支援員工如老鷹般的翱翔。

第六堂課(葛史密斯):管理專業員工。專業人員主要是看領導者能提供什麼才能,而不是具備什麼才能:1.鼓舞工作熱忱、2.提供學習機會、3.珍惜員工時間、4.協助建立人脈。

-----------------------------------------------------------
這個專題文章短短七頁,卻敘述了很多道理。我們常常會被所謂的"官"來評價,但是我們有嘗試給他們打分數嗎?其實我不太相信有幾個人可以做到其中一位大師所講的,可是是不是也可以檢視一下有人努力在做嗎?
問自己:
一、我們的領導人對於組織了解嗎?懂得擅長什麼?講的出使命?
二、我們的組織有想要維持或是開創"學習能力"嗎?
三、嘗試當蘇格拉底去激盪領導者思維的人,有讓他們的腦袋稍微轉動嗎?
四、領導者在領導你還是管理你?你有覺得你只是一顆棋一個物質嗎?
五、你的領導者暨領導又服務?指著明確的方向(即便不認同)?並且注意你的需求?
六、你的組織珍惜過你的時間嗎?
-----------------------------------------------------------

或許一輩子唯一能領導的只有自己,或許不會當上領袖,但是如果你看到好的領袖,好好的跟著他也是一種幸福,我們要有判斷是非的能力,即便很多事情很多地方都沒有是非;或是睜著眼睛看墨汁說「白」

2010年9月20日 星期一

MapGuide+Flex = ? Part7

從今年8月6日開始,因為一個突然蹦出的小小想法,開始了這一個主題的實作。最近因為伺服器無預警的掛了,所以我決定把這一個月的成果整理一下,也剛好在這邊畫下一個逗點。

系統環境:圖形伺服器:MapGuide2010、前端使用者介面:Flex3、空間資料庫:Oracle11g、Remote Object服務專案:VS2008+Flourine。

開發歷程:
Part1(2010/08/06):以MapGuide2010為圖形伺服器,前端利用Flex呈圖,開發簡易的地圖瀏覽器,內含動態坐標、滑鼠點擊取得坐標及滾輪操作地圖三功能。
Part2(2010/08/09):重新整理Part1所完成的功能,將其包裝成一個自訂物件(OlaViewer),並新增框選放大與平移功能。
Part3(2010/08/13):參考ArcGIS的Flex公版,美化前述成果;並增加隨視窗縮放地圖、滑鼠指標隨功能變更與屬性查詢(圖查文)三功能。
Part4(2010/08/20):新增定位功能(文查圖)。
Part5(2010/09/01):將地圖讀取從單一圖塊改為多圖塊讀取。
Part6(2010/09/01):以PV3D製作3DViewer,並於該3DViewer增加屬性查詢功能。
Part7(2010/09/20):也就是本篇。以Part5開發的多圖塊讀取為基礎,重新將Part1~Part4的功能整合為獨立OlaViewer物件,且重整Part6成果為Ola3DViewer物件,並新增關於操作、關於系統、關於作者說明,最後以更像ArcGIS Flex公版的版型包裝。

以下為操作畫面:

2010年9月16日 星期四

獨樂樂不如眾樂樂之超級協力腳踏車

今天下班的時候,眼神呆滯、腦袋空白、手婉下意識的轉動油門、煞車、轉動油門、煞車,突然間!眼前的一幕讓我突然有了精神!!

心裡想著「帶了這麼久的相機終於有東西拍了!!XDDD」。

這台車從外觀看就是一個行動會議桌,左邊一排人,右邊一排人,然後主席的位置是一個車掌小姐,一直叫大家加入她們,台詞大概是「謝謝你們拍照,趕快來加入我們,如果你上傳照片到FB的OOXX(沒聽清楚)就可以抽獎,我們這台車完全沒有用燃料,車上有免費的零食跟飲料,趕快加入我們」←大概是這樣。

一群人在車上其實也沒什麼好驚訝的,但是!仔細看看照片中乘客的腳,有沒有覺得他很像在做運動?沒錯!他在騎腳踏車,左右兩排的乘客座位都有腳踏車踏墊,所以這是一台10人協力車!XDDD

聽描述可能不會覺得很有趣,但是當下的情況真的蠻熱血的,很想就衝上去跟他們騎個一圈。XD

遇到的地方是信義威秀旁邊,其實我們跟著他們繞了1/4圈但是一直都拍不太清楚,我只能說:「你們騎太快了!!」

如果遊樂園有進這個我應該會去騎一下吧。 XD

2010年9月12日 星期日

201008宜蘭行_day1(下午)_金車威士忌酒廠(圓山)

第一站就來到我離開宜蘭以後才建立的新觀光景點:金車威士忌酒廠,先來看看他在哪裡?


網站:金車威士忌酒廠
住址:宜蘭縣員山鄉員山路2段326號
參加導覽方式:如果你是團體應就要先預約,但是個體戶就可以直接過去了,門口警衛只會開心的跟你微笑。XD

整個酒廠大致可以分為四項活動:
一、金碧輝煌的金車事業宜蘭會議中心,有三件事情可以做1.地下室有一些展覽類的東西可以看、2.一樓超大會議中心有固定時間影片導覽、3.跟建築物的裡裡外外拍照。

二、酒廠導覽,個體戶這邊就要看運氣了,如果希望有專人導覽解說了話,應該就是要跟著旅行團的人一起走,小姐會從酒的桶子、酒的顏色、發酵、製酒過程等等慢慢解說,所以這階段一個就是聽導覽,第二個當然就是桶子拍照囉!

三、品酒,因為我不愛喝酒,所以品酒就沒有參與了,如果想參加的人可以走快一點,排一下隊就可以進到品酒區囉(雖然人龍很長但是看起來是都可以進去啦)。
四、喝咖啡,品酒區的二樓就是伯朗咖啡,既然來了我們還是點了一杯巧克力順便休息一下;點完餐以後店員會給你一個手機,餐點好了以後會打電話給你,接來下要打開他剛剛給你的一張紙條,唸一段繞口令,如果你唸的比電話中的店員還快了話就可以半價優待,你信了?

就在我這樣想,叫嘉嘉幫我拍照的時候,他震了然後亮了,囧。

震了!還亮了!

既然來伯朗咖啡,一定要跟伯朗大叔合照的押!!

這邊的藤椅還不錯坐,來個合照。XD

看到藤椅了嗎?他在我的左手手軸旁邊!!

2010年9月10日 星期五

201008宜蘭行_推薦民宿_綠之庭、綠之園

要去宜蘭的時候已經過了童玩節,也到了暑假的尾端,上網搜尋各家的推薦民宿,經過跟嘉嘉的討論以後,決定以綠庭為第一首選,來電詢問老闆...結果....

我:請問8月X日還有2人房嗎?
闆:有。
我:請問是冬之戀嘛?
闆:對呀!冬之戀還有。
我:不好意思,網路上沒寫清楚,請問有窗戶嗎?
闆:窗戶(帶著驚訝)?
我:就是..對外窗戶...
闆:窗戶,有呀!
我:...(沒什麼經驗不知道該問什麼)
闆:你要訂嘛?
我:...我想一下。
闆:不然我有另一間,也還有兩人房你要參考嗎?
我:(不知道怎麼接話立刻說)好!
闆:你上網搜尋"綠園",看禪靜那間。
我:那我看看再打來....

立刻上網搜尋"綠園",很好第一筆是在清靜,搜尋"宜蘭民宿 綠園",ㄜ...平價包棟,囧;這時候突然在綠庭的網頁上看到綠之庭本館的連結,立刻先連過去在說。喔喔喔!看到禪境兩人套房了,又在綠之庭的網站上看到綠之園的連結;這下謎題都解開了,原來不是綠園是綠之園。

直到現在一邊看網頁一邊寫網誌,我終於了解了!總共有兩個地點三間民宿,一個叫做綠庭(宜蘭縣羅東鎮四維路71號)、一個叫做綠之園(羅東鎮北成路二段136巷2弄15號
),而綠之園是由兩個透天合成的,原本的綠之庭現在變成綠之園的A棟。總之,如果你考慮了這家,最新的是綠之園B棟、然後是綠之園A棟,接下來是綠庭(我猜的)。

所以,最後我訂了綠之園B棟的禪境,所以他在哪裡呢?羅東鎮北成路二段136巷2弄15號在哪裡呢?看地址沒感覺,看地標就有了:

沒錯!你沒看錯他就在觀光客一定要去的羅東運動公園旁邊!!!!

雖然他網站上已經有實景照片了,但素人拍的就是會不一樣,你也知道網頁上面的照片都是高手拍的,誰知道有沒有給他來一下廣角,打美美的燈,所以....

除了房間以外,禪境在民宿的二樓,一樓有一個很不錯的大廳!趕快來看看:

最後來看看他的外觀!典型的高級住宅區模樣!XD

當然,到宜蘭玩不是開車就是租車就是租機車,要停車就要轉到他的背面,就有寬廣的停車場囉!(只是不知道有多少格是他們的。XD)
(機車車頭有看到白白的線嗎?是停車格。)去玩的這幾天都在外面東跑西跑,沒有跟老闆有太多的互動,所以如果是想去感受宜蘭暖暖人情味的我就沒辦法說這間值不值得推薦了,但除此之外,我覺得我對這間評價挺高的。

2010年9月9日 星期四

Flex_除了炫還有什麼?

如果你有在開發FLEX、Silverlight、JavaScript這些可以做到RIA概念的技術,或許就會被問"這東西除了炫還有什麼?",或是你可能常常問在自己到底這要做什麼?

遙想以前,還記得任天堂的薩爾達嗎?太空戰士1-4代?電腦遊戲的凱南迪亞傳奇?他們都曾經紅極一時,我們也會跟朋友說:這個遊戲作超棒的!但是我們真的把他們重新灌回來,再重新玩玩看,那是什麼感覺?我想他們現在可以在硬碟裡面存留的時間可能是用秒計?是因為他們的遊戲設定有問題嗎?是因為他們的故事不夠龐大嗎?我想最主要的原因是因為他們的畫面,因為這些懷舊遊戲都跟現在美輪美奐的2D或是磅礡的3D場景差太多了。最近魔獸世界3.X版已經有點膩了,正在等4.0的到來,所以去玩了一個韓國免費的線上遊戲,或許因為魔獸做的太好,所以就會拿魔獸來對比其他的遊戲,這遊戲是Q版的,擁有不錯的遊戲畫面跟一些不錯的設定,但是有著很遜的任務連結跟等級平衡,但是為什麼會去玩,被其吸引的莫過於遊戲介紹跟畫面。

那RIA技術跟這些遊戲有什麼關聯?遊戲不斷的超過前作,許多元素原本是某世代遊戲的強打,現在已經變成最基本需要達到的項目。就跟網站製作一樣,許多東西已經變成"基本",每一個作品的出現這些"基本"都必須要達到。

或許公司只接政府部門的案子,你只需要達到功能就好,甚至你的長官告訴你:我只要你可以收款,好或不好不用在意。而大部分的承辦人也不會對於其他的東西提出額外的要求,或是說他們沒有立場可以提出(畢竟契約沒有),所以我們半強迫性的讓他們操作我們所寫的系統。

所以對於某些產業而言,他們可以一直停留在"可達契約標準的技術",也或許他們利用某些關係,讓需求書永遠都停留在那個層級,但對個人來說你有要可以達到業界"基本"的技能嗎?

Google系列服務用了很多RIA概念的內容,或許大家用的時候不會覺得突兀,我認為是因為他不是在"炫技",而是他需要;像是他的流量分析站真是太棒了,所以東西可以不飛,但是你想要它飛的時候它要可以飛,這是我認為現在的基本要求。

所以RIA有什麼(個人觀點)
1. 很重要的"炫"
2. 有限制性的跨平台(必須要有Player)
3. 更易呈現的物理機制。(我們常常會在單機程式寫一些風動模擬、水流模擬、碰撞模擬,若是要在網頁程完成我認為是相當困難的,但RIA相關技術讓這件事情變的容易許多)

最後,如果你是在"資訊相關"產業,而你的長官不時問你Flex可以怎樣?RIA是什麼?這除了炫還有什麼?是不是該深思ㄧ下。

2010年9月8日 星期三

WinServer2008_服務列表位置在哪?

現在去安裝系統,如果是新的機器幾乎都是Server2008,而平常很少機會可以操作到Server2008,所以一些常用的功能都找不太到位置,剛剛去更新系統又發生找不到服務列表的情況,趕快紀錄一下下次可以查Bolg。

位置:伺服器管理員/設定/服務


另一個也很常遇到的問題是:在Server2008怎麼安裝IIS?這個問題在之前的文章有提到,方式是在角色那邊"新增角色",並且勾選你需要的項目。

2010年9月6日 星期一

MapGuide_OracleSpatial或SQLSpatial圖例顯示問題

越來越多案子都使用會使用Oracle Spatial跟SQL Spatial來當作空間資料庫,但因為上述這兩種空間資料都沒有一般我們認為應該一個表格只會存在一種型態的限制,也就是說一個表格內我們可以混雜的存放點、線和面的資料,至於要不要混著儲存,或是拆開存放當然都還是要看規劃而定。

因為以上的原因,當MapGuide的資料來源是上述的空間資料庫時,MapGuide studio會預設"你想要同時顯示三種型態"的資料,也就是像下圖這樣,擁有點、線、面的樣式設定。
第一次看到的時候你一定會想,MapGuide Studio實在是太貼心了,但是當你使用他預設的圖層控制區塊來顯示時,你會發現全部的圖都有一個節點,攤開以後分別顯示你設定的點、線、面樣式(左圖),而我們所希望見到的應該是像右圖這樣。

恰巧今天又處理到這個問題,之前都是用筆記本來存放一些小技巧,今天剛好又要做一次,就順便截了圖。所以這篇主要就是要說明,我們要如何在使用Oracle Spatial跟SQL Spatial當空間資料來源時還是讓MapGuide保有正常的圖例顯示。

步驟:
1. 輸入http://localhost/mapguide2010/mapagent/index.html進到Web Tier Tests頁面。

2. 點選GetResourceContent功能。(輸入你要改變圖層的ResourceID,EX:Library://TPSW/Layers/LNLayerName.LayerDefinition)

3. 按下Submit,輸入MapGuide的帳密,就可以得到該圖層的XML檔案。(當然你也可以藉由程式來獲取XML檔)

4. 可以先嘗試把節點收起來,就可以發現一些很熟悉的設定。

5. 接下來你就可以依照你的需求,把不要的刪掉。比如說你只需要點型態,就把PointTypeStyle留下來,LineTypeStyle跟AreaTypeStyle刪掉。(我是建議不要在這邊對樣式做編輯,反正Studio有UI介面可以編輯。)

6. 接下來我們回到Web Tier Tests點選SetResource的功能。輸入剛剛匯出的ResourceID,並且選擇要匯回去的XML檔案。

7. 按下Submit,就可以回到Studio裡面看看結果。


通常我們使用Oracle Spatial跟SQL Spatial不太可能只有一個圖層需要做設定,難道要一個一個匯出來改完再匯回去嗎?你有兩個選擇:
1. 寫程式來批次,其實就是寫一個改變XML的程式。(可以參考改XML)
2. 第二個就是對匯出來的XML做一些小改變,就匯回去,節省匯出刪型態的時間。

2010年9月1日 星期三

MapGuide+Flex = ? Part6 (3D GIS?)

好!一口氣連兩篇!看完上篇所提的那兩篇文章以後,無奈的跑去跟另一個無奈的人聊天,不聊還好!一聊又勾起我在一開始做Viewer時最想做的功能,還記得那時候在機車上跟嘉嘉說:「我想做一個3D引擎,然後把我的Viewer加上3D瀏覽跟屬性查詢的功能,不要只能飛一飛,其實要做簡單的3D引擎應該也不難,只要叭啦叭啦,然後騙使用者以為是3D就好了」,但是這樣的想法很快就淹沒在比較起來很無聊的其他程式當中。

總之,我們開始亂聊,過程不重要,結論是:這讓我直接放棄3D引擎開發這件事情,轉而投向PV3D的懷抱。雖說投向懷抱其實也沒有時間可以玩這個"聽說很少人會的"東西。

昨天又聽到一些很奇妙的事情,早上一不小心就證實了,又讓我決定趕一些工以後就來對我的3DViewer來做一點測試。

所以我想要什麼效果?
動態抓取地圖上的道路等圖徵,依照該圖徵形狀繪製"平面"式的面資料,而原本凸於地表上的東西則利用3D物件來處理,最重要的是,我想要可以屬性查詢

思緒:
1. 要有一個給定範圍以後,可以拋回圖徵Geometry的服務。
2. 要可以轉換真實坐標到螢幕坐標再到3D的空間坐標。
3. 利用PV3D來呈現3D畫面。
4. 要可以監聽到點選事件,所以所繪出的每一個3D"東西"都要是一個"物件",才可以對他們做更多的操作。

直接來看效果
1. 首先做出可以拋回圖徵Geometry的服務,並且將他以3D物件的方式畫在原本的人行道位置上。

2. 將所繪製的3D物件轉個角度,可以有俯瞰的效果。

3. 增加一個平面,跟三個方塊,並且對方塊做一些貼圖,更可以看出3D的效果。

4. 將很花的底圖拿掉,然後改變視野,就更有感覺了!! XDDD

5. 最後,對每個人行道圖徵物件加上OBJECTID屬性,並且監聽是否被點擊,先利用Alert來看看是否成功?

6. 來檢驗看看是不是真的有選對?


可以得到OBJECTID有什麼值得高興的勒?這代表,我們可以在3DViewer裡面去對各項物件操作,而且可以連接到後端資料庫,所以這個3DViewer並不是只是一般展示或是飛行模擬,而可以增加更多我們在一般地理資訊系統中所應該擁有的功能。

MapGuide+Flex = ? Part5

自從8月20日以後,就很少繼續玩我的Viewer,在看了兩篇文章以後(程式開發人員的風險與動機程式者的胡言亂語),除了心有戚戚焉以外,真的覺得程式設計這個路似乎在台灣是個鳥路,有點權力的人絕對不可能重視我們這樣的人。唉!一不小心就開始進入消極模式了。

當然本篇的重點不是"真悲慘"之類的,而是這兩個程式設計師都提到了,程式設計的樂趣,甚至有篇是說要怎麼看待這些程式設計師(雖然我覺得有點權力的人都不可能看這種文章);總之,他剛好跟我之前的文章稍為呼應了一下(喜歡寫程式嗎?)所以,我又決定要來繼續在完全沒時間的情況下開發我的Viewer。

好!廢話一堆!進入主題,之前曾在某一天問完老師問題以後,思考該怎麼樣可以做出地圖分塊處理的功能(想法快記),雖然沒有時間可以做,但是這個構想還是一值在我腦袋飛來飛去,前幾天把他實做出來了。

希望可以的效果:
*類似Google map當讀取地圖時會有分塊讀取的效果,當某小塊地圖讀取完成後會先在圖面上展示出來;而我原本的設計是整片地圖讀取完成以後才會更新。當然在網路速度很快的時候並不會特別需要這個功能,但是台灣網路你知道、我知道、隔壁剛出生的小妹妹都知道,又貴又慢,所以這個功能需要嗎?我想是YES。

思緒:
1. 詢問老師以後,自覺ByteArray傳遞雖然是一個看似比較炫的方法,但有著必須要完全傳送完畢才能使用的特性,而我也沒有這麼大的能耐自己寫一個串流處理;所以若是要以這樣的方式,就必須要在後台服務部份直接對於要切的圖分別進行處理,而且要分批多次傳送個別ByteArray。(連我自己都不知道這段在寫什麼,總之就是想來想去又變成串流處理器了,所以放棄。)
2. 直接使用快記當中的第一個方法,Viewer設計改成像蒼蠅一樣的多眼方式,也就是利用很多的Image物件來接取不同的區塊的圖像,所以理論上,當地圖需要被更新時,各Image物件會分別對後端送出要求,取得他們所應該顯示的圖資。

實作:
將上述的第二個方法實作,會發現將圖切為較適宜的大小還真的會加快整體讀圖速度(這裡的整體是指一張圖讀完並顯示 VS 小塊圖全部都讀完顯示),但過多的切塊將會使得速度變慢(原因應該是這時候造成處理延遲的項目從影像網路讀取轉變為後端圖形處理)。整體概念就會像下圖:

當然,如果使用多個Image來呈現地圖,那麼在座標的計算上就變的更為複雜,接圖也變成一個很大的問題。

總之經過繁複的計算以後,來看一下效果,沒有錄動畫,就用連續截圖的方式來看(設定分塊4*4,共16個分塊讀取):

應該可以發現,這些展示畫面都沒有功能列了,不是為了可以更清楚看到才拿掉,而是如果要採用有分塊功能的Viewer,那就必須要重新撰寫舊Viewer的許多功能,目前只寫了視窗改變大小以後會自動讀圖。XDDDD