![study]({{ site.url }}/assets/images/study-201906.png)
前言
五月的時候,團隊來了一位經驗豐富的瑞典人,而剛好有這個機會跟他合作,除了跟他練練英文口說能力之外,順便學習一下他的程式經驗。瑞典人是一位懂很多層面的工程師,從韌體到 Web Front-end 都有實務經驗,而且為人也不錯,會很認真地看每個 Pull Request,並給予架構上或是程式寫法上的回饋,能有這樣的同事真的很開心,即使在當個碼農趕專案,也會覺得從中學習到不少。
五月份確實蠻忙的,因此在中旬的時候,一度對於下班學習覺得有點力不從心,但靜下心來思考後,發現其實只是因為自己上班全程精神專注,導致下了班會不想去進修,進而逐漸拉長滑手機和躺在床上發呆的時間。於是,在察覺到自己有這個狀況之後,就開始明確訂出每日學習目標,之前都是很隨興地安排,不會強迫自己要唸到怎樣的進度,不過如果開始怠惰的話,明確的進度才會讓自己不會偷懶,甚至知道哪邊有出現進度落後,而需要做改善。
在經過這樣小調整之後,學習的動力又回來了,因此在五月下旬時候又恢復到每天都有進度,而不是像中旬一樣,讀個三四天就想休息一天。
學習回顧
五月份學習以離散數學和 Linux 為主,離散數學除了看韓永楷教授的線上課程之外,還有買一本離散數學課本來練習習題。至於 Linux 目前是以 Jserv 教授的系統核心設計課程為主,不過 Jserv 每次線上課程的內容都蠻多的,所以之後還是需要反覆地看以及實驗,才能夠真正地理解,不然只光看直播其實不太能吸收這麼多資訊。
離散數學
目前離散數學課程聽到 13 peg solitaire,進度蠻慢的,不過因為有邊搭配習題練習,所以這個速度也還是能接受。這次學習花比較多時間在實際證明上,因為在學的時候對於證明題總是輕忽,想說考試不太會考,但是現在自主學習沒有考試壓力,再加上理解這些內容,感覺更能讓自己去思考背後原理,每次練習完都蠻有收穫的。
Linux 核心設計
本月份有兩次直播課程,包含 Linux 核心設計: 朝向硬即時的核心變革
和 Linux 核心設計: 檔案系統概念及實作手法
,線上講座內容都很多而且也比較偏理論說明,所以上完後一定要再花時間去實作和實驗,才能"大略略"了解這個功能在 Linux Kernel 的作用。不過因為要看的東西太多了,所以先從檔案系統開始實驗, Real-Time 部分預計在六月會再重新複習一次。
Golang
這個月看 golang 的時間比較少,因為上班都在用 Golang ,所以下班就想說學點其他的內容~不過還是有花些時間看 Golang memory allocator,像是透過 cache 方式來實現 lock-free 等。以及看了一下 advanced testing,因為專案會需要寫蠻多 uint test,想說看別人怎麼寫會比較好維護。
下個月計畫
數學部分,六月份希望能進展到數學歸納法和數論,至於 Linux Kernel 則是 Linux 核心設計: 朝向硬即時的核心變革
這邊要重新複習,如果有新的 linux kernel 線上講座也會追一下。實作部分預計是實作 FUSE
,還有把之前 side-project 改寫一下。
讀書日誌
5 月份共 5 天沒有唸書
- 2019/5/1 你所不知道的 C 語言:動態連結器和執行時期行為篇 - 40 mins
- 2019/5/3 Go presentation - Go tool present and compile server connection
- 2019/5/4 Discrete mathematics - Valid argument forms
- 2019/5/5 你所不知道的C語言: Stream I/O, EOF 和例外處理 - 補完之前沒跟到的進度
- 2019/5/7 Linux 核心設計: 朝向硬即時的核心變革(上)
- 2019/5/6 Discrete mathematics - Axiom/Lemma/Corollary/Theorem/Conjecture
- 2019/5/8 Discrete mathematics - Indirect proofsDM(A)
- 2019/5/9 Discrete mathematics - Indirect proofsDM(B)
- 2019/5/10 Blog - Debugging performance issues in Go programs
- 2019/5/11 Golang - memory allocators (span, heap, central, cache)
- 2019/5/12 Data structure study - LinkedHashMap source code trace.
- 2019/5/13 B Trees and B+ Trees. How they useful in Database
- 2019/5/13 Discrete mathematics - Prove by cases
- 2019/5/14 B tree and implementation
- 2019/5/15 Linux 核心設計: 朝向硬即時的核心變革 (下)
- 2019/5/16 Discrete mathematics - Pi mnemonicDM
- 2019/5/18 Golang Weekly post
- 2019/5/18 GopherCon 2017: Mitchell Hashimoto - Advanced Testing with Go
- 2019/5/19 高性能队列——Disruptor
- 2019/5/19 Discrete mathematics - 習題練習
- 2019/5/23 Discrete mathematics- Mathematical InductionDM L11A
- 2019/5/21 Go 學習筆記 - concurrency and reflect
- 2019/5/24 Discrete mathematics- Mathematical InductionDM L11B
- 2019/5/25 Golang Weekly Post
- 2019/5/27 Linux 核心設計: 檔案系統概念及實作手法 (線上講座)
- 2019/5/29 Computex Forum AIOT
- 2019/5/30 Linux 核心設計: 檔案系統概念及實作手法 (Review) - file linking, linux file system model
- 2019/5/30 Discrete mathematics- 習題 1-4 量化推導
- 2019/5/31 Discrete mathematics- 習題練習,推論證明
Articles
- Debugging performance issues in Go programs
- High Performance Go
- Garbage Collection In Go : Part I - Semantics
- B Trees and B+ Trees. How they useful in Database
- Context should go away for Go 2
- TableDrivenTests
- GopherCon 2017: Mitchell Hashimoto - Advanced Testing with Go
- Golang: Concurrency: Monitors and Mutexes, A (light) Survey
- REST API Error Handling in Go: Behavioral Type Assertion
Study Counts
- Others:18
- Linux:6
- Back-End:7