網頁

搜尋此網誌

2012年12月29日 星期六

Creating Android applications: develop and design 開發設計極速上手

最近剛接觸Android應用程式開發,原本想說只看官方的Training資訊就好,雖然Google官方文件已經寫的很好(完整詳細又有系統),但就是資訊太多沒有頭緒,看了一陣子發現還是找本入門書來讀,於是找了這本「Android應用程式開發設計極速上手」。


Chris Haseman著,曾建富譯,Android應用程式開發設計極速上手,台北:上奇資訊,2012。譯自:Creating Android applications: develop and design

這本書的特色在於內容著重於Android應用程式的原理與觀念,不像一些書籍是介紹Android有什麼元件可以用、怎麼用(範例程式),像這些「用法」其實Google的Android官方網站已經非常詳盡,不太需要去買書來看。

倒是像原理與觀念方面的知識,這些內容分佈在Android官方網站各處,對於初學者來說要掌握比較困難(還要花大量時間),所以才需要看這本「極速上手」!作者是擁有8年行動軟體開發經驗,開發Android則擁有3年,內容上以循序漸進的方式引導讀者進入Android應用程式的開發,總共11章的內容建議依序閱讀。

比較重要的觀念有:
  • AndroidManifest.xml是Android應用程式的入口,這個檔案有關應用程式的所有設定。
  • Android應用程式的「根」是Application類別,一個Application可以有多個Activity類別。
  • Activity類別像是網頁領域的Web Page,Android應用程式的畫面就像是網頁。一般來說,一個Activity會對應到一個特定的Layout。
  • Intent類別像是視窗領域的Message,Intent是用在各個Activity類別之間的通訊,以及和Android系統溝通之用。
  • Android應用程式的組成除了最常用的Activity外,還有其他三個類別:Service、Content Provider、Broadcast Receiver,總共4種元件。

###

2012年12月26日 星期三

Contributing to Eclipse 投入「蝕」

搞笑談軟工的「還少一本書:Contributing to eclipse: Principles, Patterns, and Plug-ins」這篇文章提到一本經典著作,聽了Teddy的話於是買一本回家供奉珍藏,以免之後發生絕版的情形而遺憾。

只要有心,人人都可以成為「蝕」神!

Erich Gamma and Kent Beck, Contributing to Eclipse: Principles, Patterns, and Plug-Ins, Massachusetts: Person Education, 2004.

這本書的作者是大名鼎鼎的Erich Gamma,他就是「物件導向設計模式」的作者之一,而他和 Kent Beck是JUnit的開發者和維護者。這本書主要是介紹eclipse貢獻開發的重要觀念和資訊,並且說明Eclipse的生態系,其中Eclipse有個重要觀念:就是每個使用eclipse的用戶都是潛在的程式開發人員。作者說這和Smalltalk的目標很像,授予用戶能夠使用Eclipse的經驗,而且提供用戶有更多權力的學習環境,進而不斷提升整個Eclipse的功能。

在Eclipse生態系中有6個角色:
  • Users:使用者,使用Eclipse的程式開發人員。
  • Configurers:配置者,根據自身的使用經驗設定Eclipse功能。
  • Extenders:擴展者,改變原本Eclipse的既有功能,讓Eclipse擴充做更多的事情。
  • Publishiers:發佈者,開發好用的擴充套件,提供給Eclipse的使用者。
  • Enablers:啟用者,提供擴充套件的擴充點讓更多開發人員擴充既有功能。
  • Committer:提交人,Eclipse是Open Source Project,由提交人組成的委員會管理。
這六個角色當中的5個層級構成貢獻循環(Contribution Circle),循環是Users→ Configurers→ Extenders→ Publishiers→ Enablers→ Users,注意到Enablers最後回到Users。整本書分成4個循環介紹如何貢獻Eclipse,從「Circle 0」到「Circle 3」,每個循環更進一步介紹貢獻開發的細節。

貢獻Eclipse之前,必須先了解eclipse的軟體架構,基本上Eclipse是採用外掛架構(plug-in architecture, 或稱插件架構),外掛架構由兩個部分組成:
  • 擴充點(extention points):提供外掛放置的地方(places-to-plug-things-in)
  • 擴充(extentions ):外掛的元件(things-plugged-in)
 Eclipse的架構由上至下分為三層:
  • Plug-in Development Environment (PDE):外掛開發環境,擴充JDT使Eclipse支援外掛的開發。
  • Java Development Tools (JDT):Java開發工具,讓Eclipse成為完整的Java整合開發環境。
  • Platform:定義通用性程式語言(common programming-language-neutral)的基礎架構
其中Platform的部分由兩大部分組成,各自包含不同元件:
  • 使用者介面部分(User Interface, UI)
    • Workbench(工作臺)
    • JFace
    • Standward Widget Toolkit, SWT
  • 核心部分(Core, UI-independent)
    • Workspace(工作區)
    • Runtime
有關使用者介面的資訊可以參考官方準則「Eclipse User Interface GuidelinesVersion 2.1」,裡面有更詳細的說明。在貢獻Eclipse時,務必先有上述的概念,並且認識相關術語,這樣閱讀開發文件能可以清楚了解。

###

2012年12月11日 星期二

J.J.Pan 人生基本功:建築師潘冀的砌磚哲學

建築以載道.

這是講述建築師潘冀(Joshua Jin Pan)先生故事的一本書。如果沒有出版這本書,大概除了建築界之外沒有人知道他吧!潘冀先生是台灣最大的建築事務所主持人,而且新竹科學園區三分之一的廠房出自他手,他行事低調做人謙虛,因此「知名度」不高。做事則是務實、實事求是、不攀關係、不附榮華、不苟同流俗,非常值得我們學習。

這本書不僅讓我們有機會認識潘冀先生,更重要的是他的堅持與人生態度,他的價值觀正確且正面,我認為非常值得青年學子學習,書中包含他求學畢業、工作與創業的過程,特別推薦給剛進入職場的新鮮人閱讀參考。


潘冀口述、藍麗娟撰文,人生基本功:建築師潘冀的砌磚哲學,台北:圓神,2010。
圓神書活網:http://www.booklife.com.tw/jjpan.htm

以下是潘冀先生所說的幾段話,讀了可以更堅定自己的信念!
  • 很難改變別人的偏見,但自身處境可以改變,往自己堅持的理想前進。 p. 40
  • 每一件事我都要能講得出道理,講得出來,就不會被說是用權力在壓迫別人。 p. 53
  • 每一個工作,都可以有計畫的幫自己尋找磨練的機會。 p.53
  • 所有的成就都來自於基本功;而基本功來自於既深且廣的歷練。過程中,心態尤其重要。 p. 58
  • 每天把生活的優先順序排對了,就可以讓你的腦袋很清楚,日子過得比較順暢有效率。 p. 63
  • 「一次就做對」與「一次就做到完美」是不同的概念。
    我們應該先把事情做到一個(正確的)階段,然後再往更高的目標跳。也就是說,一定要先求有,再求好。 p. 69
  • 精神好時做較艱澀的事,精神差時做比較輕鬆的事。 p. 71
  • 好的建築是里程碑,壞的建築是墓碑。 p. 92
  • 最有價值的事物都是不退流行的。人類有某些基本原則是不變的。 p. 100
  • 建築設計的才能可以培養,但是,正確的價值觀與做事方法卻要經過薰陶。 p. 138
  • 管理學上講究「留才」;對我而言,留在我們事務所是一種「留」,留在世界上是一種「留」,好人才不一定都要我們擁有,只要可以看到,可以欣賞,對社會有貢獻就好了。 p. 141
  • 每個人都是一個人,不是一個生產工具。 p. 142
  • 站在對方立場想,說道理給他聽,讓他了解,你與他都站在同一條陣線上,既然目標相同,可以互相幫忙,把事情做好,你不是只顧自己的私利。這樣,即使是看似一觸即發的衝突,也能化解為雙贏的局面。 p. 160
  • 專業人員就是專業人員,沒有級別之分。身為專業服務工作者,做專業的工作是不能管階級的。 p. 167
  • 一件不對的事,儘管大家都做,仍然是不對的事。 p. 174
  • 只要大家都當一回事去努力,不正當的事情就會減少,這樣社會才有希望;假如大家都隨波逐流,越陷越深,就沒有希望了。 p. 176
  • 我們的教育制度迫使孩子們不斷在跑,每一次都是為了考試,考完一關再考一關,每一次都只是衝刺百米而已;但是,人生是一輩子的事,我們應該培養孩子的不是考試的能力,而是面對人生的人格、素質、涵養與能力。 p. 179
  • 人總是可以在夾縫裡找到一些想做或喜歡的事,把它穿插在不想或不喜歡的事之間,就不至於一整天都繃緊神經,也是平衡工作與生活的重要關鍵。 p. 201
  • 一般人認為將工作與生活的時間與空間分開,就是「工作與生活平衡」。我認為關鍵不在於各自完整分開,而在於「專心」。不論工作與生活,做每件事只要專心即可。 p. 203
  • 求取工作與生活的平衡有其方法,關注的焦點不見得是時間多寡,而在於互動品質。 p. 210
  • 嚴格來說,人並不絕對擁有什麼。如果你覺得你「擁有」某些東西,那是因為上天交付給每個人的職責與角色不同,並賦予人人不同的機會與條件。人的職責是努力將上天交付的條件善加發揮,盡力把事情做好。 p. 213
  • 放下「擁有者」的觀念,把自己視為自己生命、工作崗位、或孩子的「代管經營者」,在人生的短暫光陰裡,如何克盡己責,對世界有貢獻,才是不時需要自我提醒的終極關切。 p. 219
  • 我堅信,社會要進步,每個人都要發揮力量。 p. 229

###

2012年11月9日 星期五

Android Training 建置開發環境

如何開發Android應用程式(Android App)?Google在網站上已經提供一堆說明讓大家參閱(目前只有英文),跟隨Training課程學習,相信開發Android應用程式不是一件麻煩又困難的工作,工欲善其事,必先利其器,開發Android App之前先準備好開發環境吧!

這裡記錄建置Android開發環境的步驟(在Windows系統上開發為例),環境基本上分成兩個部分,一個是整合開發環境(Integrated Development Environment, IDE),另一個是軟體開發套件(Software Development Kit, SDK)。

Part 1, IDE
  1. 下載並且安裝Java SE Development Kit (JDK),程式位於http://www.oracle.com/technetwork/java/javase/downloads/index.html
  2. 下載並且安裝Eclipse Classic,必須是3.6.2 (Helios)版本以上,程式位於http://www.eclipse.org/downloads/
  3. 安裝Eclipse外掛Android Development Tools (ADT)套件,安裝方式參閱http://developer.android.com/sdk/installing/installing-adt.html
Part 2, SDK
  1. 下載Android SDK,http://developer.android.com/sdk/index.html,選擇「Download the SDK for Windows」
  2. 下載之後執行SDK安裝程式,安裝完畢後還沒有結束喔!因為Android SDK只包含核心工具(SDK Tools)的部分,必須啟動SDK管理員( Android SDK Manager)下載額外的套件( SDK packages)。基本上下載預設選擇的套件,一定要記得下載喔!
完成上述兩個部分的安裝步驟後就有了Android的開發環境。注意如果你不想使用IDE,想只用命令列(command line)的話,才需要額外安裝Apache Ant軟體喔!若以IDE方式開發的話,Eclipse就是完成Ant的工作,所以不需要安裝Ant。

那要如何開始開發Android App呢?相當簡單,只要開啟Eclipse建立一個新的Android Project就可以了,詳細參閱Building Your First App這堂課程。

趕快開始行動吧!

對了,如果手上有Android-powered裝置(即Android的手機或平板),可以將自己開發的App在裝置上除錯,記得安裝對應的USB驅動程式。如果手上是Google官方的Nexus裝置,請安裝Google USB Driver,若是其他製造商的裝置,那麼請安裝OEM USB Drivers
###

2012年11月4日 星期日

Where Good Ideas Come From 創意從何而來

這是一本探討創新空間的書,作者利用長變焦(long zoom)的觀察法審視自然與人文兩個領域,從歷史中探究而提出7個創新模式,這些模式是讓環境之所以能夠孕育出好點子(good idea)的原因,注意作者在這本書中用「好點子」表示創新、創造與發明上的創意,這是為了說明他跨領域的觀點。


史蒂文‧強森(Steven Johnson)著,劉燕芬譯,創意從何而來,台北:大塊文化,2011。譯自:Where Good Ideas Come From: The National History of Innovation

作者一開始從珊瑚礁生態系說明創新空間,並介紹達爾文悖論(Darwin's Paradox),所謂達爾文悖論是指:這麼多不同的生態型態,佔據這麼多的生態席位(ecological niche),卻居住在原本養分極少的水域裡,實在不可思議。除了珊瑚礁的自然領域外,作者也以城市與全球資訊網2的人文領域為例子,探究這兩者的創新空間。這些故事引發讀者的好奇心,因此閱讀起來不會枯燥無趣,每一章也充滿著很多小故事,很容易進入作者的思想中理解他的創新模式。

以下是作者提出的7大創新模式:
  1. 比鄰的可能性─人們需要更多工具,以探索更多邊界
  2. 液態網絡─點子喜歡能流動、碰撞、彼此連結的環境
  3. 緩慢的預感─點子需要養分和時間,才能完整成形
  4. 機緣巧合─結合幸運與智慧,發現原本沒有特別探究的事物
  5. 生成性錯誤─從錯誤中汲取養分,雜訊讓人變得更有創意
  6. 功能變異─借助其他領域的點子,產生意料之外的新用途
  7. 堆疊平台─其他使用者能在前人建立的結構性基礎上,創造新作品
最後第8章,作者將歷史上的好點子以市場與非市場、個體與網絡的特徵分為四類,即四個象限,19世紀以後的發明與創意大多集中在「非市場/網絡」的第四象限,非市場指的是好點子不是以獲利為主要目的(以自由分享為目標),而網絡指的是好點子由多人團體所想出。

為何第四象限成為當代主要的創意引擎,原因是資源共享、共同協作的環境有利於好點子的產生。作者在書中也提到湯瑪斯‧傑佛遜的一段話 :「從我這接收到一個點子的人在接受指令時,並不會使我的縮減;就像他拿一根蠟燭趨近我的燭芯點火時,他取得火光,部不會使我變暗。p. 188」

作者給此書論點濃縮的一句箴言:連結點子會比保護他們更有收穫
###

2012年10月26日 星期五

Getting Organized in the Google Era | Google時代一定要會的整理術

這是一本介紹統整資訊的書,連結人腦、人性、科技的整理術,因此這本書分成3部分,第1部分是「先認識自己」,第2部分是「全新整理術」,最後第3部分是「克服挑戰」。作者介紹人腦運作的方式,提出一些幫助我們處理資訊的方法和策略,讓我們有效率地統整資訊。

梅瑞爾(Douglas Merrill)、馬丁(James A. Martin)著,胡琦君譯,Google時代一定要會的整理術,台北:天下遠見,2010。譯自「Getting Organized in the Google Era: How to Get Stuff out of Your Head, Find It When You Need It, and Get It Done Right」

由於作者是認知科學的博士,瞭解人腦構造與限制,有些觀念十分重要,例如:人腦非常不適合記憶瑣碎的資訊、人腦不善於做出好決定...等等。作者在這本書提出的21個整理原則讓我們參考,注意這些是原則,而不是規定!
  1. 妥善管理你的生活,以減輕腦部負擔。p. 17 <注意力,雞尾酒效應(cocktail party effect)>
  2. 趕緊把資訊資訊從腦袋中移出,越快越好!p. 19 <短期記憶>
  3. 同時處理多項任務,通常只會讓你更沒有效率。p. 21 <注意力只能專注在一件事情上>
  4. 用故事來記事情。p. 27 <編碼與回想可以有效排序>
  5. 就算某件事有一貫做法,也不表示那是最適當的。p. 45 <朝九晚五制起於工業時代,寒暑假始於農業社會>
  6. 知識不是力量,分享知識才是力量。p. 57 <擁有知識已經垂手可得>
  7. 你要克服的是真實的限制,而不是假想的限制。p. 65 <改變假想的個人限制>
  8. 對自己全然誠實,但別預設立場。p. 69 <檢視真實的個人限制>
  9. 知道何時該忽視你的限制。p. 74 <不要因為個人限制而放棄嘗試>
  10. 在發動引擎前,清楚知道你要去哪裡,又要怎麼去。p. 83 <明確的目標才有脈絡可循,也才有意義,知道為何而做>
  11. 達成目標的方式不只一種,要懂得變通。p. 86 <變通計畫或是調整目標>
  12. 檔案不用歸檔,靠搜尋就好。p. 106 <整理歸檔是為了找得到,現在用搜尋技術就找得到了。>
  13. 唯有真正需要的東西才記進腦子裡。p. 133 <過濾重要而且非記不可的資訊>
  14. 將大體積的東西拆解成數個小單位。p. 136 <人腦善於記憶少量資訊,是CPU而不是HDD>
  15. 每週空出時間再次審視重要資訊。p. 141 <重複的好處可讓資訊再次編碼>
  16. 世上沒有一套整理系統是十全十美的。p. 152 <善用工具的長處、選擇適合的使用方式>
  17. 盡可能使用你已熟知的工具。p. 164 <重點不是工具,而是整理的方法>
  18. 在你的電子資料添加關鍵字詞,讓你日後更容易找到。 p. 194 <資訊必須能被搜尋到才有用>
  19. 事前做註記,有助之後的情境轉換。p. 239 <減少長期記憶、短期記憶與情境之間轉換的腦力>
  20. 將情境相似的工作安排在一起。p. 240 <降低不同記憶之間存取的次數>
  21. 整合工作與生活,別再妄想達到兩者平衡。p. 252 <有效利用時間>
###

2012年10月3日 星期三

50 Erfolgsmodelle 如何下決定

如何下決定」這本書主要是探討「決策模型」,書中舉出50個最棒的決策模型提供我們做決定時參考。作者將這50個模型分為4類,分別是「如何改善自己」、「如何更加了解自己」、「如何更加了解別人」與「如何改善他人」,其中不乏是常聽到的


麥克‧克羅格魯斯(Mikael Krogerus)、羅曼‧塞普勒(Roman Tschappeler)著,胡瑋珊譯,如何下決定,台北:大塊文化,2012。
譯自:The Decision Book: Fifty Models for Strategic Thinking

如何改善自己(How to Improve Yourself)
  • 艾森豪矩陣(Eisenhower matrix):怎樣加強工作的效率
  • SWOT分析法(SWOT analysis):怎樣找到正確的解決方案
  • 波士頓矩陣(Boston Box):怎樣評估成本和效益
  • 專案投資組合矩陣(project portfolio matrix):怎樣維繫和監督?
  • 惠特默模型(John Whitmore model):我追求的目標正確嗎?
  • 橡皮筋模型(rubber band model):兩難的情況該怎麼處理?
  • 回饋模型(feedback model):處理他人的抱怨和批評
  • 家庭樹模型(family tree model):你們應該維繫的人脈
  • 型態分析盒與奔馳創意法(morphological box and SCAMPER):為什麼需有結構才能發揮創意
  • 君子送禮模型(Esquire gift model):花多少錢送禮?
  • 後果模型(consequences model):當機立斷為什麼很重要?
  • 化解衝突模型(conflict resolution model):怎樣才能漂亮地化解衝突?
  • 十字路口模型(crossroads model):接下來呢?
如何更加了解自己(How to Understand Yourself Better)
  • 沉浸模型(flow model):什麼會讓你快樂?
  • 喬哈里窗(Johari window):別人對你的風評如何?
  • 認知失調理論模型(cognitive dissonance model):人們為什麼明知吸菸不利健康、還是照抽不誤?
  • 音樂矩陣(music matrix):你的音樂品味將可用來詮釋你
  • 匪夷所思的模型(unimaginable model):什麼是你們深信不疑、但又無力證明的事物?
  • 烏夫‧艾爾拜克模型(Uffe Elbæk model):怎樣了解自我
  • 時尚模型(fashion model):我們怎樣打扮
  • 能量模型(energy model):你活在當下嗎?
  • 超級備忘錄模型(SuperMemo model):怎樣牢記所有曾經學過的事物
  • 政治羅盤(political compass):政黨支持什麼理念?
  • 個人表現模型(personal performance model):怎麼知道自己是否應該轉換工作?
  • 鑑往知來模型(making-of model):要想掌握未來,就先得了解自己的過去。
  • 個人潛力陷阱(personal potential trap):為什麼心中不存任何期望會比較好?
  • 技術循環周期(hype cycle):怎樣發掘下一個重大發明?
  • 細膩訊息模型(subtle signals model):細微之處為什麼重要?
  • 人脈網路目標模型(network target model):你的朋友對你的風評如何? 
  • 淺薄知識的模型(superficial knowledge model):你不用做萬事通
如何更加了解別人(How to Understand Others Better)
  • 瑞士乳酪理論(Swiss cheese model): 錯誤是怎麼發生的
  • 馬斯洛金字塔(Maslow pyramids):哪些事物其實是你們需要的,哪些又是你們想要的
  • 跳脫框架思維(Thinking outside the box):怎樣激發出絕佳的點子
  • 社會氛圍和布爾迪厄模型(Sinus Milieu and Bourdieu models):你所屬之處
  • 雙重迴路學習模型(double-loop learning model):怎樣從錯誤之中汲取教訓
  • AI模型(Al model):你屬於哪一種討論的類型?
  • 小世界模型(small-world model):這個世界到底有多小?
  • 帕雷托法則(Pareto principle):為什麼投入百分之二十卻能締造百分之八十的產出?
  • 長尾模型(long-tail model):長尾模型:網路怎樣扭轉了經濟?
  • 蒙地卡羅模擬法(Monte Carlo simulation):我們對確切的結果為什麼只能取得近似值
  • 黑天鵝模型(black swan model):為什麼你的經驗沒讓你變得更加睿智?
  • 斷層-擴散模型(chasm-diffusion model):為什麼人手一台iPod?
  • 黑盒子模型(black box model):信仰為甚麼取代了知識?
  • 地位模型(status model):如何辨識贏家
  • 囚犯的困境(prisoner's dilemma):什麼時候值得信賴別人?
如何改善他人(How to Improve Others)
  • 德萊克斯勒-西貝特團隊績效模型(Drexler-Sibbet team performance model):怎樣將小組打造成團隊
  • 團隊模型(team model):你的團隊有完成任務的能耐嗎?
  • 市場缺口模型(gap-in-the-market model):怎樣發現有收穫的點子
  • 賀賽–布蘭恰德模型(Hersey-Blanchard model):怎樣成功管理你的員工
  • 角色扮演模型(role-playing model): 如何改變本身的觀點?
  • 結果最適化模型(result optimisation model):為什麼印表機總在截止日期之前壞掉?
  • 下一個頂尖的模型(world's next top model):我們可從這本書學到什麼?
這本書總計列出52個決策模型(decision-making models),除了文字說明以外,此書在每個模型中都有繪圖解說,一張圖勝過千言萬語,任何時候都可以選擇任一個模型開始閱讀。注意到,書中最後提到重點:這些決策模型雖然是複雜世界的簡化,但不表示錯誤或是沒有價值,而是提供我們觀察世界的一個方法。

###

2012年9月10日 星期一

How Will You Measure Your Life 你要如何衡量你的人生

將企業管理的理論應用在人生規劃上會是怎樣?「你要如何衡量你的人生」這本書就是說明這件事,作者認為這些理論不只可以解釋企業的問題,也可以幫助我們審視重要的人生課題。


克雷頓‧克里斯汀生(Clayton M. Christensen)、詹姆斯.歐沃斯(James Allworth)、凱倫.狄倫(Karen Dillon)著,廖月娟譯,你要如何衡量你的人生?:哈佛商學院最重要的一堂課,台北:天下遠見,2012。譯自:How Will You Measure Your Life? ( 原文書網站:http://www.measureyourlife.com/ )

這本書在作者序(prologue)中提出人生的三個問題:
  • 問題1,如何知道我的工作生涯可以成功、快樂?
  • 問題2,如何知道我與配偶、兒女與朋友的關係可以成為快樂的泉源?
  • 問題3,如何知道我這一生會堅守原則,以免除牢獄之災?
整本書共分成三個部分,也就是分別依序討論上述三個人生的問題。
    • 第1章 展翅高飛(Just Because You Have Feathers)
  • 第1部 發現生涯之樂(Finding Happiness in Your Career)→問題1
    • 第2章 如何讓你的熱情燃燒(What Makes Us Tick)
    • 第3章 計劃與變化(The Balance of Calculation and Serendipity)
    • 第4章 策略的試金石(Your Strategy Is Not What You Say It Is)
  • 第2部 圓滿的人際關係(Finding Happiness in Your Relationships) →問題2
    • 第5章 時鐘滴答響(The Ticking Clock)
    • 第6章 一杯奶昔的任務(What Job Did You Hire That Milkshake For?)
    • 第7章 席瑟斯之船(Sailing Your Kids on Theseus’s Ship)
    • 第8章 經驗學校(Schools of Experience)
    • 第9章 一隻看不見的手(The Invisible Hand Inside Your Family)
  • 第3部 正直的人生(Staying Out of Jail) →問題3
    • 第10章 僅此一次,下不為例(Just This Once)
  • 結語(epilogue) 你拿什麼衡量人生
這本書的內容值得一讀再讀,尤其是最後結語的「目的三部曲」,作者克里斯汀生建議我們思考自己人生的目的,目的三部曲包含「畫像→投入→量尺」這三個要素,思考自己想成為怎樣的人,然後發自內心全心投入,找到正確的量尺衡量自己的人生,如此人生將變得更有意義。

###

2012年8月29日 星期三

E-Learning 數位學習

前陣子逛書店看到一本關於數位學習的書本,翻閱之後發現內容相當完整,加上自己對於教育的興趣,於是買了下來閱讀,這裡和大家分享這本書。

這本書到底在談些什麼?這本書對於數位學習做一個整體性的概略說明,包括觀念、方法、實務、設計與實作,是一本數位學習的入門書,而且提供詳細的參考文獻資料,我們可以藉由這本書更進一步深入數位學習的領域。

顏春煌,數位學習:觀念、方法、實務、設計與實作(第二版),台北:碁峯資訊,2012。

這本書中提到,運用資訊科技進行教學互動則稱為數位學習(electronic learning, e-learning),而數位學習建置出來的教學環境則稱為虛擬教室(virtual classroom),實現數位學習的資訊系統目前有兩種:
  • 學習管理系統(Learning Management System, LMS)
  • 學習內容管理系統(Learning Content Management System, LCMS)
LMS的範疇大於LCMS,LCMS主要在於數位內容的管理,而LMS則是包含註冊、學習狀況、成績等等的管理,LMS主要在於學習者對於數位學習的管理。以前研究的Moodle就是LMS的一種,不過有點差異就是Moodle是以課程(Course)的概念為主要架構,官方稱Moodle是一個課程管理系統(Course Management System, CMS),我們利用Moodle之類的LMS將可以建立一個虛擬學習環境( Virtual Learning Environment, VLE),VLE應該就是虛擬教室更超層次的概念。

數位學習目前都是透過網路的方式進行,因此具有分散式學習(distributed learning)的特性,不只是地點分散,時間上來說也可能是分散的,可以區分為同步(synchronous)線上教學與非同步(asynchronous)線上教學兩種方式。若以歷史的角度來看數位學習,則有電腦訓練(Computer-Based Training)、遠距教學、電視教學、廣播教學等,這些其實都是教學活動透過當時最為主流便利的科技方式進行。

我們看待數位學習的同時,應該是要回歸學習與教育的本質,數位方式只是一種媒體,教學策略與學習理論才是我們發展數位學習的重點。

###

2012年7月11日 星期三

Teddy Scrum 敏捷開發法的逆襲

搞笑談軟工 (http://teddy-chen-tw.blogspot.tw/) 一直是工作上的最佳良伴,具有調劑身心與增進智能的功效,呷(ㄒㄧㄚˊ )好到相報!

最近作者終於推出敏捷開發法的逆襲」這本書了,所有開發軟體、吃「軟飯」的人都該來讀啊!由於 Teddy 是北科大的校友,在此強力推薦一下 Teddy 的敏捷開發法的逆襲,建議北科大應該要將此書列入軟體學程的必修課與教科書。引用 Teddy 的話:「不買終身遺憾,買了不看遺憾終身。p. 284」

讀完「敏捷開發法的逆襲」的最大收穫在於了解什麼是 Scrum (整本書的主題是在講述Scrum 和搞笑),作者基於傳福音的精神推廣 Scrum 給大家,這本書可說是 Scrum 的中文聖經本,信Scrum得永生(台灣目前應該還找不到專門介紹 Scrum 的中文書)。

而最近自己工作的環境也開始導入 Scrum,初淺地認識 Scrum 之後,我認為要「導入 Scrum,先換腦袋」(換誰的腦袋?老闆的還是 RD, PM 的...全部都該換掉),因為 Scrum 有些觀念與現在台灣的軟體開發觀念不同,做法也不同,習慣於這個制度之下很難開始改變 (不是不能改變,要改變就可能要革命囉...)。


陳建村 (Teddy Chen),笑談軟體工程:敏捷開發法的逆襲,台北:悅知文化,2012。

笑談軟體工程可以依序閱讀,也可以挑選有興趣的 PART 閱讀,或是擇一篇文章閱讀,這幾種方式都不會造成閱讀上的困擾或困難(意思是說書沒架構嗎?不是啦,因為Teddy用軟體工程的方式降低耦合),不過還是建議依序閱讀吸收會較快,我大概花了3天的瑣碎時間依序看完,真的很好看,也吸收到搞笑能力...

PART 1 軟體工程的現況
1 想看這本書的怨念有多深
2 老闆,軟體不是這樣開發的
3 600多個BUG要怎麼修?
4 軟體工程不等於髒話
5 這不是網路小說——軟體專案Scenario
Column A. 小朋友不可以說謊喔

PART 2 什麼是Scrum
6 SCRUM到底是?
Column B. 其實,Scrum是一種制度
7 SCRUM是很有內涵的
8 就是這個光──SCRUM+LEAN+XP
9 導入SCRUM?謝謝再聯絡。
10 我不能採用SCRUM,因為我家人不同意
11 導入Scrum前該有的領悟──都市游擊隊
12 100%符合Scrum精神──這是0與1的距離
13 不完美的Scrum──逆練九陰真經
14 Story要如何下筆?──啊!你練的不是九陰真經
15 end-to-end的story──這好比切蛋糕
16 如何估算Story Point?
17 Story Point為何沒有單位──這是一種相對論
18 Story寫的好才容易估算Story Point
19 Product Backlog長得什麼模樣?
20 The Definition Of Done──功課寫完沒
21 Bug”s”──放下心中舉起的中指
22 Redundancy──容錯的基本方法
23 Shared Code──讓我們變成博格人吧
24 Pair Programming──藥效強不強?
25 Retrospective Meeting──有許願池的功效
26 Scrum Master是個什麼咖?
27 有牌的Certified Scrum Master
Column C. 聞過則喜...誰說的?
28 導入Scrum──要有傳福音的精神
Column D. TEDDY的初衷

PART 3 精實生產,減少不必要的浪費
29 軟體也會有庫存問題
30 減少不必要的浪費——半成品
31 減少不必要的浪費——多餘功能
32 減少不必要的浪費——重複學習
33 減少不必要的浪費——交接
34 減少不必要的浪費——工作切換
35 減少不必要的浪費——延遲
36 減少不必要的浪費——缺陷
37 有缺陷,就停掉生產線

PART 4 開發軟體一定要加班,有沒有聽錯?
38 工程師與加班之間的愛恨情仇
39 非加班不可——台灣經濟奇蹟的幕後無名英雄
40 過勞死——軟體工程無用論
41 我可能不會18:30下班
Column E. 秀才遇到兵

PART 5 換顆腦袋——軟體工程的全新思維
42 學習犯錯
43 有問題才能解決真問題
44 傳承的風範
45 傻的願意相信
46 造船的目的
47 追求卓越——發語詞,無義
48 培育軟體還是組裝軟體?
49 對症下藥
Column F. ISO大戰乖乖
50 剽竊
51 重複程式碼的力量
52 TIME LOG的紀錄方式——這不是整人遊戲

PART 6 軟體架構
53 Problem Domain vs. Solution Domain
Column G. 一萬個小時的練習
54 用實際案例看Problem Domain vs. Solution Domain
55 要抄就要抄最好的——人人皆可成為架構師
56 你的軟體架構有多軟
57 設計最難的部份是什麼?
58 針對介面來寫程式
59 設計模式分成三大類
60 時間到

PART 7 人機介面
61 窮人的「人機介面」設計入門
62 GOMS——幫「人機介面」做體檢
63 DESIGNING FOR ERROR (1):使用者犯錯
64 DESIGNING FOR ERROR (2):外在世界與腦袋中的知識
65 DESIGNING FOR ERROR (3):限制、強制功能、自然對應
66 DESIGNING FOR ERROR (4):執行與評估
67 「人機介面」之博士熱愛的算式

PART 8 測試與整合
68 有測試案例改遍天下,無測試案例寸步難行
69 有些事不是能力的問題,而是整合
70 土炮跨平台自動化功能測試環境
71 10分鐘建構
72 落實測試與整合的能力有多少?
73 用ROBOT寫自動化功能測試到底有沒有用?
Column H. 需求分析書中最重要的資訊是什麼?

這裡用 Teddy 的夢想總結:「希望改變人們在台灣開發軟體的方法,讓軟體開發真正成為一件愉快、有趣的工作與創作。」是的,以 Teddy 的燭火點燭,光亮與我們同在,我們卻不因此身處黑暗。

###

2012年7月10日 星期二

National Taipei University of Technology 台北科技大學

今年(2012年)捐贈書籍的時間又到了。今年感受到Web浪潮又再度來襲,可能是雲端運算、App開發、HTML5、Big Data等議題受到矚目,這些都以Web技術為基礎,因此最近有不少好書可讀!

這次挑選的書籍多以基礎技術與軟體開發為主,沒有選擇Android App或iOS開發之類的書籍,原因有兩個,第一是App開發很熱門,學校一定會購買,所以不太需要捐贈,第二是App的發展速度很快,捐贈到上架時可能已經超過時效,所以放棄這類領域的書籍。加上自己是個Web Developer,這些書籍都是自己「品嘗」過後,色香味俱全的優良「食品」,特別選擇出來捐贈推薦給大家,呷好道相報啊!


這次捐贈的書籍清單如下所述:
  • David Flanagan,黃銘偉譯,JavaScript大全 第六版,台北:歐萊禮,2012。
  • Stoyan Stefanov,洪象成譯,JavaScript 設計模式 ,台北:歐萊禮,2012。
  • Steve Fulton, Jeff Fulton,陳美君譯,精通 HTML5 Canvas,台北:歐萊禮,2012。
  • Randal L. Schwartz, brian d foy, Tom Pho,蔣大偉譯,Perl 學習手冊 第六版,台北:歐萊禮,2012。
  • 吳軍,浪潮之巔-剖析IT產業 掌握下一個黃金十年,台北:博碩文化,2012。
  • 林信良,Java SE 7 技術手冊,台北:碁峰資訊,2011。
  • Diomidis Spinellis & Georgios Gousios,莊弘祥譯,架構之美-頂尖架構師於軟體設計中蘊含的智慧結晶,台北:歐萊禮,2012。
  • Adam Goucher ,Tim Riley,莊弘祥譯,測試之美-領略頂尖專家改善軟體的測試法則,台北:歐萊禮,2011。
  • Andy Oram & John Viega,佘步雲譯,安全之美-深入探索卓越安全專家的思維,台北:歐萊禮,2012。

###

2012年2月22日 星期三

Bash Builtin Commands 內建指令

Linux啟動之後所進入的通常就是Bash,面對這個Command-line Interface我們使用者應該如何操作!黑黑的畫面上閃爍著輸入游標,到底有什麼指令可以使用?請求協助輸入help是一個方法,但這只會列出Bash內建的所有指令

列出Bash內建的所有指令與敘述:help -d '*'
  1. % - Resume job in foreground.
  2. (( ... )) - Evaluate arithmetic expression.
  3. . - Execute commands from a file in the current shell.
  4. : - Null command.
  5. [ - Evaluate conditional expression.
  6. [[ ... ]] - Execute conditional command.
  7. alias - Define or display aliases.
  8. bg - Move jobs to the background.
  9. bind - Set Readline key bindings and variables.
  10. break - Exit for, while, or until loops.
  11. builtin - Execute shell builtins.
  12. caller - Return the context of the current subroutine call.
  13. case - Execute commands based on pattern matching.
  14. cd - Change the shell working directory.
  15. command - Execute a simple command or display information about commands.
  16. compgen - Display possible completions depending on the options.
  17. complete - Specify how arguments are to be completed by Readline.
  18. compopt - Modify or display completion options.
  19. continue - Resume for, while, or until loops.
  20. coproc - Create a coprocess named NAME.
  21. declare - Set variable values and attributes.
  22. dirs - Display directory stack.
  23. disown - Remove jobs from current shell.
  24. echo - Write arguments to the standard output.
  25. enable - Enable and disable shell builtins.
  26. eval - Execute arguments as a shell command.
  27. exec - Replace the shell with the given command.
  28. exit - Exit the shell.
  29. export - Set export attribute for shell variables.
  30. false - Return an unsuccessful result.
  31. fc - Display or execute commands from the history list.
  32. fg - Move job to the foreground.
  33. for - Execute commands for each member in a list.
  34. for (( - Arithmetic for loop.
  35. function - Define shell function.
  36. getopts - Parse option arguments.
  37. hash - Remember or display program locations.
  38. help - Display information about builtin commands.
  39. history - Display or manipulate the history list.
  40. if - Execute commands based on conditional.
  41. jobs - Display status of jobs.
  42. kill - Send a signal to a job.
  43. let - Evaluate arithmetic expressions.
  44. local - Define local variables.
  45. logout - Exit a login shell.
  46. mapfile - Read lines from the standard input into an indexed array variable.
  47. popd - Remove directories from stack.
  48. printf - Formats and prints ARGUMENTS under control of the FORMAT.
  49. pushd - Add directories to stack.
  50. pwd - Print the name of the current working directory.
  51. read - Read a line from the standard input and split it into fields.
  52. readarray - Read lines from a file into an array variable.
  53. readonly - Mark shell variables as unchangeable.
  54. return - Return from a shell function.
  55. select - Select words from a list and execute commands.
  56. set - Set or unset values of shell options and positional parameters.
  57. shift - Shift positional parameters.
  58. shopt - Set and unset shell options.
  59. source - Execute commands from a file in the current shell.
  60. suspend - Suspend shell execution.
  61. test - Evaluate conditional expression.
  62. time - Report time consumed by pipeline's execution.
  63. times - Display process times.
  64. trap - Trap signals and other events.
  65. true - Return a successful result.
  66. type - Display information about command type.
  67. typeset - Set variable values and attributes.
  68. ulimit - Modify shell resource limits.
  69. umask - Display or set file mode mask.
  70. unalias - Remove each NAME from the list of defined aliases.
  71. unset - Unset values and attributes of shell variables and functions.
  72. until - Execute commands as long as a test does not succeed.
  73. variables - Common shell variable names and usage.
  74. wait - Wait for job completion and return exit status.
  75. while - Execute commands as long as a test succeeds.
  76. { ... } - Group commands as a unit.
可以看到Bash內建的指令大概有70多個,至於Linux上全部的指令可以參考O'Reilly的Linux Command Directory

心得感想:對於任何電腦系統,務必熟悉最重要的help指令,不知道怎麼操作就請「help」吧,但前提是你要知道有「help」啊!

相關指令:
  • 確認shell的種類:echo $SHELL
  • 顯示Bash的版本:echo $BASH_VERSION

###

Linux Basic vbird 鳥哥的私房菜

只要學習Linux的人,應該都知道「鳥哥的Linux私房菜」網站與書籍,鳥哥撰寫的文章對於自學者非常有幫助,可以讓不懂Linux的人循序上手,當然,如果身旁有老師或高手更好,避免「鳥哥的Linux苦難經驗」重蹈覆轍在自己身上,更感謝鳥哥免費分享他的學習之路與經驗。

最近真正深入Linux領域,趁著博客來特價優惠,趕緊將兩本「鳥哥的Linux私房菜」買下手,一本是基礎學習篇,另一本是伺服器架設篇,目前已經都是第三版,雖然說書的內容與網站上沒有差異,然而還是閱讀書籍比較舒適,建議想學習Linux的人都踴躍支持購買!

蔡德明(鳥哥),鳥哥的Linux私房菜‧基礎學習篇(第三版),台北:碁峰資訊,2010。

整本書分成五篇,共27章(包含第0章的計算機概論),我認為這五大篇也就是學習Linux的五個重點,其中第3篇的操作Bash與Vim算是使用Linux的基本能力,務必要學習且熟悉!
  1. Linux的規劃與安裝
  2. Linux檔案、目錄與磁碟格式
  3. 學習Shell與Shell Scripts
  4. Linux使用者管理
  5. Linux系統管理員
從目前學習Linux的經驗來看,自己大概要花3個月左右才有感覺上手,急不得也不能急,看書與操作Linux的時間大概是一半一半,若是有專家教導應該可以加速學習速度,當然,每天都用Linux的話學習會更快。

由於自己是從Windows轉過來學習Linux,每天開機還是面對Windows,一開始還真是摸不著Linux。建議想想自己在Windows的操作要如何在Linux上面實現,例如複製檔案要怎麼用Bash完成、如何用Vim修改設定檔...之類的使用案例,這種方式學習起來會比較有感覺喔!

###

熱門文章