Blog搬遷通告

大家好,新版blog位址目前為http://andytsainotes.com,再麻煩新知舊雨的朋友們前往該位址閱覽最新內容,謝謝。

廣告

Coursera – Cloud Computing Concept Part 1 Week 1 – Clouds are Distributed Systems

A cloud is a distributed system

  1. clouds是由許多的server side、client side機器連結而成的網路。
  2. 過去使用的grids、clusters、peer-to-peer、time sharing data process,以及現在使用的clouds、cloud computing,都只是對distributed system的一種稱呼,其相關技術的核心觀念即為distributed system的核心觀念。

What is a distributed system

  1. 本課程提出的distributed system定義:"A collection of entities, each of which is autonomous, programmable, asychronous and failure-prone, and which communicate through an unreliable communication medium."。相關名詞解釋如下:
  2. entities:即為process。
  3. communication medium:有線或無線網路。
  4. programmable:意指只考慮可編程執行動作者,不考慮無法編程執行動作的物體(例如:人類)之間的網路互動。
  5. asychronous:意指不考慮parallel system(例如:multiprocess system)等具有相同同步時脈的系統。
  6. 整體而言,distributed system是許多process透過網路進行訊息的傳遞。
  7. 我們關注於了解distributed system的演算法、設計、實作、維護。
  8. distributed system相關的設計問題範例:
  9. P2P Systems
  10. Cloud Infrastructure
  11. Cloud Storage
  12. Cloud Programming
  13. Coordination
  14. 設計distributed system遇到的主要問題類型:
  15. Failure
  16. Scalability
  17. Asychrony
  18. Concurrency
  19. distributed system的主要核心概念:
  20. Gossip
  21. Membership
  22. Distributed Hash Tables(DHTs)

參考資料

Coursera – Cloud Computing – Week 1: Orientation, Introduction to Clouds, MapReduce

Coursera – Cloud Computing Concept Part 1 Week 1 – Introduction to Clouds

Orientation

  1. 這堂課主要會探討應用於Cloud computing的distributed systems和distributed algorithms。
  2. 不會探討如何撰寫Cloud application。
  3. 不會探討Computer Network。

Basic Computer Science Fundamentals

  1. Queue是一種資料結構(data structure),存取資料的順序為FIFO(First in First out),由尾端存入(enqueue)資料,由頭端取得(dequeue)資料,存取資料的動作可以同時進行。
  2. Stack是另一種資料結構,存取資料的順序為FILO(First in Last out),用相同的存取位置存入(push)資料和取得(pop)資料。
  3. Process是執行中的program,包含了programe執行時相關的stack、heap、registers、code、programe counter等物件。程式中的函式A呼叫執行函式B時,會藉由Stack傳遞參數,將參數push到stack後再由函式B取得,當函式B執行完畢,也是藉由Stack傳遞回傳值,將回傳值push到stack後再由函式A pop取出。
  4. 此外,會有一個叫作Program counter(PC)的指標,用來指出正在行的程式machine code的位置。
  5. 記憶體空間Heap、register則會用來存放變數的值。
  6. 簡化的計算機結構可以視為CPU + Register + Cache + Memory + Disk,其中的Register + Cache + Memory + Disk都是資料儲存裝置,以memory hierarchy的架構被使用,可儲存的資料容量大小依序為Register < Cache < Memory << Disk,資料存取速度依序為Register > Cache > Memory >> Disk。
  7. Big-O是用來描述演算法在worst case時的效能、當input size為無窮大時的運算數量上限。
  8. 要從未排序過的大小為n的Array中找到特定element,其為O(n)。
  9. 要從未排序過的大小為n的Array進行insert sorting,其為O(n^2)。
  10. Set是指一群相同事物的集合,SubSet是指一群相同事物且隸屬於Set底下的子集合。
  11. Event1、Event2發生的機率可分別表示為Prob(E1)、Prob(E2),如果兩個事件的發生機率彼此獨立(independent),亦即兩者的發生機率沒有任何相關性,則兩事件同時發生的機率Prob(E1 And E2) = Prob(E1) * Prob(E2)。而兩事件至少發生一件的機率Prob(E1 Or E2) = Prob(E1) + Prob(E2) – Prob(E1 And E2),故Prob(E1 Or E2) <= Prob(E1) + Prob(E2)。
  12. DNS(Domain Name System),可以藉由Domain name(人類可讀的有意義字串)取得網路設備的IP Address。
  13. 在Graphs中,用Node或Vertex稱呼各個節點,並以Edge稱呼節點之間的連線、以Edge weight稱呼edge相關的數值。"A is adjacent to B" = There is an A-B edge。

Lesson 1:Introduction to Clouds

Why Clouds

  1. 目前主要的三大Cloud Providers分別為
  2. AWS(Amazon Web Service)
  3. Microsoft Azure
  4. Google Compute Engine
  5. 以存取的開放程度劃分,Clouds可分為以下兩種類型
  6. public cloud:讓付費的顧客或允許的大眾存取。
  7. private cloud:只允許網路內部的人(e.g. 公司員工)存取。
  8. 使用雲端服務可以快速的取得運算資源(大幅減少了建置硬體所需的時間)、去除了維運計算機硬體所需的人力成本,因此有越來越多的新創公司使用雲端運算資源,而非自己持有主機。

What is a Cloud

  1. Clouds = Lots of storage + compute cycles nearby. (運算資源的實體位置需要鄰近資料,以方便對資料進行運算處理)
  2. 以地理位置分佈方式劃分,Clouds可分為以下兩種類型
  3. single-site cloud (又稱為datacenter,通常會是同一個廠房),其包含了
  4. compute nodes(由同一個switch所連接的數個compute nodes的集合可以稱為rack)
  5. Switches(用來連接各組rack。如果是兩階層的switches樹狀架構,則由最上層的root switch連接下層的各個switches,再由第二層的switches連接各個compute nodes(分別形成一個rack),)。
  6. 連結到網路的Storage (backend) nodes
  7. 可用來接受client端的運算需求的前端
  8. 提供的軟體服務
  9. geographically distributed cloud,其包含了
  10. 多個分處不同地理位置並彼此連接的datacenters。
  11. 各datacenter 通常具有相同的structure和software service,但也可能不同。

History

  1. Distrubuted Systems的發展歷史:
  2. 大約1942~1960年代:由真空管組成的電腦,其體積相當於一個房間的大小。
  3. 1960~1980年代:timesharing companies & data processing industry,關注於用timesharing的技術運算處理大量資料並輸出。
  4. Grids
  5. Clusters
  6. Peer to Peer
  7. Cloud

What’s new in today’s clouds、New Aspect of Clouds

  1. Clouds是由各世代的distributed systems所組成的,尤其是timesharing & data processing industry。
  2. 現在的Cloud computing世代處理的新問題與之前的各世代Distributed systems有四個主要的差異:
  3. Massive scale:datacenter擁有的server數量達到數萬甚至數十萬。
  4. On-demand access:可以用精確微小的計算單位對所使用的運算資源進行付費,不需額外訂定合約。持有server相對於on-demand access,就類似買車相對於租車的概念,根據提供租取的服務等級的不同,依序可分類如下,排序越後面者,其可掌控的運用彈性越小、但使用者需要進行維運的比例越低。
  5. HaaS(Hardware as a Service):租借實體硬體,需要考慮較多的資安問題。
  6. IaaS(Infrasturcture as a Service):存取使用虛擬化技術所提供的儲存資源和運算資源。(例如:AWS的EC2和S3)
  7. PaaS(Platform as a Service):存取限定使用特定語言或框架程式的儲存運算資源。(使用彈性較IaaS低)
  8. SaaS(Software as a Service):存取使用特定的軟體服務(例如:Google docs、Gmail)。通常也視為SOA(Service Oriented Architectures)。
  9. Data-intense nature:存取的資料量極大,達到TBs, PBs或 XBs等級。Data-intense computing相對於Computation-intense computing,更注重硬碟和網路的I/O而非CPU利用率。
  10. New cloud programming paradigms:使用MapReduce/Hadoop/NoSQL/Cassandra/MongoDB或是Key-value storage等不同的資料存取機制,提升大量資料的存取效率。
  11. WUE = Annual water power usage / IT Equipment energe (L/kWh) 數值越低越好
  12. PUE(Power usage effectiveness ) = Total Facility power / IT Equipment energe, 數值越低越好 (基本上一定會大於1 , 也就是100%)
  13. Data center通常也會包含冷卻系統。

Economics of Clouds

  1. 訂定規格目標:Server機器數量、CPU數量、硬碟容量。
  2. 計算使用Public Cloud的每月成本:以S3($ per GB Month)和EC2($ per CPU Hour)的費率,可以估算整體每月費用。
  3. 計算使用Owned Private Cloud的每月成本:以全部的硬體購買成本,攤分M個月的使用時間得到每月的硬體成本,再以0.45:0.45:0.15(硬體:電力:網路)的比例、考慮到維護人員的費用,可估算得到整體每月費用。
  4. 預期的服務提供長度M個月,會決定採用哪一種網路資源持有方式更具成本效益。
  5. 以本課程的範例,當M > 5.5個月,則owned private cloud的硬碟成本將較public cloud更低。當M > 12個月,則owned private cloud的整體成本較public cloud更低。因此服務短於12個月的新創公司,服務需求和發展尚未穩定,大多採用public cloud。

參考資料

Coursera – Cloud Computing – Week 1: Orientation, Introduction to Clouds, MapReduce

Coursera – Learning How To Learn Week 4 – Renaissance Learning and Unlocking Your Potential

Part I

  1. 大腦的不同區域有不同的發展黃金時期,但即使如此,仍能在黃金時期以外的時間成長。
  2. 運動有助於大腦與身體其他重要器官的成長。
  3. 善用類比、隱喻、視覺化,可以幫助人們找到不同事物的相關性,可以提升創造力和可記憶性,也有助於避免思考被困在錯誤的方向。
  4. Imposter Syndrome(冒充者綜合症)會令有良好表現的人感覺自己能力不足,一切只是運氣好。這是一個常見的心理現象。
  5. 大腦的短期工作記憶空間較小的人(需要在安靜的環境專心,才能有效發揮工作效率),會有較高的創造力。
  6. 即使是天才也會有固執和偏見。
  7. 對於正確的方向需持之以恆地堅持到底(毅力)。
  8. 以學習的態度向一切人事物學習。
  9. 勇於承認錯誤。
  10. 大腦的情緒自控能力最晚可能到20多歲才會成熟。但有意識地改變並訓練自己的思維方式與態度將有助於相關大腦神經的發展。
  11. 在邁向成功的路上遇到打壓或冷嘲熱諷是很正常的,僅需冷靜以對。
  12. 對自己的學習負責。
  13. 運動、處於新的環境、接觸到新的想法、學習新的事物,都有助於大腦神經元的產生與成長。

Part II

  1. 右腦主掌全面的判斷、質疑既有方案合理性與適當性。
  2. 左腦較著重於專注分析,但可能造成過度自信、盲目堅持既有解決方案的缺點。
  3. 每個人都會有盲點,參與良好的學習組織有助於了解自身的盲點。
  4. 考試準備的自我檢測清單
  5. 是否認真地理解課本內容。(不只是單純尋找範例問題的答案)
  6. 是否和同學討論過作業問題,或是至少和其他人比對過答案。
  7. 是否列出每個作業問題的解決大綱。
  8. 是否積極參與作業小組,提出想法與問題進行討論。
  9. 遇到問題的時候是否會諮詢老師或助教,或是用其他方法解決該問題。
  10. 是否了解所有家庭作業的問題與對應的解答。
  11. 考試前的睡眠時間是否安排合理。(這是極為重要的)
  12. Hard start – jump to easy。在考試一開始拿到試卷時先大致瀏覽一次全部的題目,依據難易度從最難的題目開始寫,如果1~2分鐘內沒有頭緒,就馬上跳到下一個簡單一點的題目,讓大腦的發散模式得以在淺意識進行運作,直到之後再回來重新寫未完成的題目。(但是要在考試前就認真的進行學習)
  13. 考試前如果有感到手心冒汗、心跳與呼吸加快,用"感到興奮"的想法會比"感到害怕"的想法會更好。
  14. 在平常就進行深呼吸的練習,如果在考試時感到緊張,可以深呼吸讓自己的情緒平靜下來。
  15. 必須進行double check。如果作答順序是由前往後,重複檢查答案的順序則可以採用由後往前。
  16. 在平日認真學習,考試時盡己所能即可。
  17. 設想好Worst case,並擁有備案(plan b)。
  18. 改變你的想法,就可以改變你的人生。

參考資料

如何學習:學習困難科目的實用思維方法

 

Coursera – Learning How To Learn Week 3 – Procrastination and Memory

Procrastination

  1. 人腦對於要做令人感覺不舒服但長期有益的事情,常常會拖延並改為執行令人短期感覺舒服但對長期無益的事,這是一個壞習慣。
  2. 習慣可以讓人們在無需全神貫注的情況下,根據關鍵資訊自動進行對應的處理動作,可以節省人們執行動作時所需的能量,但習慣有好壞之分。
  3. 習慣的養成主要分為4個階段:
  4. 觸發訊號
  5. 反應動作
  6. 回饋獎勵
  7. 個人信念
  8. 培養好的習慣時,應專注於Process(過程)而非Product(結果),避免大腦感受到負面的壓力(這是養成壞拖延習慣的觸發信號)。
  9. 每周應訂定該周要執行的重要任務清單。在每天晚上睡前訂定隔天可達成的待辦事項清單(大任務採用Process導向,可短時間內完成並看到的小任務採用Product導向,避免訂定不合理而難以達成的目標),讓大腦在潛意識下尋找執行方法。長期而言,將更能預估完成特定任務所需的時間。
  10. 除了安排工作時間,也應安排休息時間,兩者一樣重要。相較於一味的勤奮學習,更該安排休息時間,並讓學習活動能在有限的時間內有效率地完成。
  11. 長期的久坐不利於健康。
  12. 在早上一起來就優先執行最重要且最困難的任務(Eat your frogs first)。
  13. 儘量將獎勵安排在完成任務之後。
  14. 訂定學習計劃,早點開始按步就班地學習而非臨時抱佛腳,才可有效鞏固學習到的知識。
  15. 在剛開始學習某個項目時,可能會感到不舒服而想要拖延,這是正常的,但請有意識的克服該不舒服的感覺並繼續學習,不久後不舒服的感覺就會消失。
  16. 學習時應在安靜的環境,避免被其他因素干擾造成分心。
  17. 意志力(willpower)是珍貴的資源,應避免持續地用來浪費在對抗非必要的造成分心的環境。

Memory

  1. 人類對於視覺圖像、空間位置的記憶能力較強。
  2. 對於要記住的事情,如果建立更多感官類型的連結(e.g. 視覺、觸覺、聽覺、嗅覺),即使只是想像,也有助於記憶。
  3. 想要記憶一件事物有兩個重點:(1)令人印象深刻的 (2)重複溫習記憶內容
  4. 可以採用定期利用索引卡(可以使用Anki軟體)回憶記憶內容的技巧(在一個卡片的正面紀錄要記憶的內容提示資訊,在卡片的反面紀錄內容細節,複習時嘗試藉由索引卡正面的資訊,回想反面的內容),隨著記憶強度的增加,可以逐漸拉長每次複習周期的長度。
  5. 大腦中的海馬迴與人類的記憶鞏固機制有極大的相關性,如果缺少了海馬迴,將難以進行新事物的長期記憶。
  6. 記憶的再鞏固機制,是短期工作記憶藉由回想特定內容,使其促進腦中的記憶相關細胞、組織、神經元之連結,而達到長期記憶的效果。
  7. 大腦的Astrocytes(星狀膠質細胞)可以提供神經元所需的營養成份、細胞內外的離子平衡、傷後的修復,最重要的是,根據目前研究,其與學習能力、理解能力有其相關性。
  8. 人腦中的"記憶"是一個變動的狀態,並非一成不變。
  9. 如果沒有進行記憶的再鞏固,記憶的強度會因細胞的新陳代謝而降低。
  10. 可以採用一些記憶方法,例如:將相關的事物的單字英文字首組成一個有意義的英文單字或是令人有深刻想像的句子、使用記憶宮殿的技巧將事物與地點進行連結,有利於記住一組彼此不相關的事物、與有趣而生動的畫面產生連結。
  11. 採用愈創新的方法進行記憶,有助於提升創造力。
  12. 愈常使用記憶能力,愈能提升個人的記憶能力、降低記憶新事物的難度。
  13. 在數天之內進行多次複習所達到的長期記憶效果,遠高於在一個很短的時間之內複習很多次。
  14. 記憶事物不只有助於增加理解能力,也能增加創造力。
  15. 對於特定事物的能力是可以培養的,不要因為自己盲目的相信沒有相關天份而限制了自己的可能性,可廣泛地多方嘗試與學習不同的新事物。

參考資料

如何學習:學習困難科目的實用思維方法

Coursera – Learning How To Learn Week2 – Chunking

Chunking—The Essentials

  1. 讓大腦在專心地在focused mode下反覆地練習要學習的項目,可以有效地連結與特定概念相關的神經元。
  2. 一個大的學習項目(無論是和心理或物理有關的學習),可切割程多個小的學習項目,藉由反覆練習以掌握各個小的學習項目後,即完成大學習項目的學習。
  3. 理解學習內容的核心基本觀念以及彼此的關聯性。"理解(understanding)"才能達到有效學習。
  4. “自己嘗試解決問題並實作"、"測試自己是否學習到該技能",可以有效驗證自己是否真正理解並"學會"該技能。在測試中犯錯並從中學習,可以有效地修正自己理解錯誤的地方,達到有效學習的目的。
  5. 了解該技能適合使用的時機、不適合使用的時機。
  6. bottom up learning (chunking) + top down learning (big picture)相輔相成。
  7. 在閱讀書本的內容細節前,先瀏覽全書的標題、圖表、公式,有助於建立整體的概念(big picture)與關聯性。
  8. 在閱讀書本時,如果遇到無法理解的內容可以先略過並且繼續往下讀,不應因尚未理解而僵持在該細節。
  9. 藉由回想(recall)學習內容重點所達到的學習效果,會比單純的重新閱讀筆記內容、書本重點還來得有效許多。
  10. 畫重點具有太多的手部動作,且可能讓自己錯誤地認為正在把相關的知識放入腦中,但實際上其學習效率將不如"回想",此外,一個段落劃取的重點內容應該小於等於一個句子。此外,畫重點是較為被動的學習方式。
  11. 在書本段落邊緣的空白處總結核心概念,是非常好的主動學習方式。
  12. 在第一次學習內容以外的地方進行回想或測試,有助於更有效的學習。
  13. 概念之間的連結(concept mapping)在初次學習相關概念時,效果比較不好,需要等到熟悉相關的各個概念後,才能有效地進行概念之間的連結。
  14. 在生氣、緊張、害怕、處於壓力的情況,會降低focused mode下的學習專注力。
  15. 使用類比(analogy)、隱喻(metaphor)、在focused mode和diffuse mode之間切換,有助於學習。

Seeing the Bigger Picture

  1. 重複練習有助於加強知識的鞏固,但應更著重練習自己不擅長的部份。(Deliberate practice)
  2. 相較於過度的重複練習相同類型的知識, 交替學習不同領域的學科更能增進思考的創造性與靈活度。
  3. 熟悉特定領域的知識,有時也有助於學習其他領域的知識。
  4. 只是直接看著問題的解決步驟,而非自己實際動手解決問題,將會讓自己有學會解決該問題的錯覺。
  5. 根據目前的神經學研究,人腦無法同時處於Focused mode和Diffuse mode。

參考資料

如何學習:學習困難科目的實用思維方法

Coursera – Learning How To Learn Week1 – What is Learning?

  1. 當思考(focused mode)問題陷入瓶頸時,不妨先休息一下,進入diffuse mode。(腦神經元在無意識的狀態下仍會處理相關資訊並進行連結)
  2. 採用番茄鐘的工作模式。專心處理一件想要執行的工作25分鐘後,休息5分鐘,並給予自己一個小獎勵以提升滿足感(這個步驟非常重要),以此為一個循環周期。番茄中的重點是專注處理要執行的工作(不要分心於其他工作),而非力求在25分鐘內完成某項工作。
  3. 大腦處於diffuse mode時,更有利於腦神經元之間的隨機性連結,以更多元的解法思考問題。
  4. 大腦處於focused mode時,會直接思考到較熟悉的問題解決路徑,強化相關的腦神經元連結。
  5. 每個人都有拖延的問題,但是藉由適當的工作重要性與優先序排列、休息時間,可以儘量降低此問題。
  6. 睡眠時間過長或過短,會導致各種疾病(e.g. 憂鬱症、心臟病、糖尿病、頭痛)的發生機率。
  7. 睡覺時,大腦會弱化重要性較低的資訊的記憶,強化重要性較高的資訊的記憶。
  8. 在睡前學習資訊,會提升夢到相關內容的機率。
  9. 記憶在腦中的儲存方式就像是水泥一樣,需要時間進行鞏固。分散數天進行複習的記憶效果,會優於在短時間內複習相同次數的效果。
  10. 工作區記憶(working memory)就像是黑板一樣,資訊只是暫存,需要藉由複習才能將資訊存到長期記憶區。
  11. 天份不能決定一切。持續的練習、學習,可以讓你成功學習任何事物。
  12. 運動有助於任何項目的學習與記憶、有助於用使大腦進入diffuse mode並以更具有創造性的想法解決問題。(可以在任何時間進行運動,不一定要安排在主要的學習項目完成之後)。
  13. 數學與科學的抽象概念與人類的情感沒有直接關聯,也較難與實體世界產生直接類比,因此可能產生學習難度。
  14. 睡覺、處於刺激性的環境、和具有刺激性的人相處、運動,都會促使大腦產生新的腦神經元。
  15. 大腦的神經元數量不是固定的,在某些腦神經消失的同時,也會有某些新的腦神經元產生。
  16. 大腦的神經元連結是會改變的。
  17. 即使是成人,也可以持續產生新的腦神經元。

參考資料

如何學習:學習困難科目的實用思維方法