Study 2019/11 月份自我學習回顧

前言 12/01是我生日,於是給自己放了一個禮拜的休息假,每天下班回去就是睡覺或是滑手機放空,除非公司 slack 出現訊息,不然很少打開電腦。老實說放假的感覺挺好的,沒有進修進度壓力,也可以好好休養身心~不知道是不是剛換環境以及天氣變化的關係,感冒時好時壞,這幾天就去大醫院照內視鏡和超音波做詳細檢查,幸好沒有什麼問題,就是抵抗力弱了一點(該不會是身體又發現我早午餐都沒怎麼吃吧QQ) 剛到職新創公司滿一個月,來說說感想~其實還沒加入之前蠻擔心的,畢竟聽說新創公司變動很快,不太清楚自己能不能適應,之所以加入完全是賭上對於主管和同事能力的信任。不過來了一個多月,感覺還不錯,除了福利好之外,還接觸到之前沒有機會實戰的技術。更有意思的是,每個產業都有自己的特色,去吸收那些產業知識和市場訊息,可以擴大自己的眼界。現在唯一比較有壓力的是英文口說 XD 還有許多年紀輕輕但是身懷絕技的同事們,進而督促自己不能懈怠才行。我覺得新創公司的好處是,每個同事都有自己的理想和態度主動積極,在那種氛圍下,自己也比較不容易懈怠。 生日剛過完,對自己也有些期許,其中最大的目標就是對 Google cloud platform 熟悉並且考到證照,既然決定要走 Cloud 開發,那當然要耕耘相關 infrastructure ,才能更妥善地利用這些服務來開發 application。當然我對作業系統還是很有愛,希望今年可以多讀一些相關論文,甚至可以啟發自己寫一點寫論文出來。之所以會這樣想,是因為發現自己還蠻喜歡做 research 的,可以讓自己對某些領域的學術知識更加了解。

Meetup GDG Hsinchu Meetup Sharing #3 Move from C to Go

前言 這次又來挑戰在新竹分享啦!每次來工程師大本營分享主題都蠻緊張的,很怕會被下面的工程師夥伴慘電,但即使如此,還是非常希望可以在新竹開講,畢竟新竹很多軟韌體工程師,講起 Operating System 時候,共鳴點比較多~ 本次主題主要是想針對使用 C 的工程師來說明 Go 語言的特性,因此在內容上可能相對比較抽象,沒有太多 Coding 部分,絕大多數都是在 Go 是用什麼樣的方式來實現他的特色,例如 user-space scheduler。而這場參加的人數竟然有 20 幾位,算是 GDG Hsinchu 開辦以來人數最多的一次,由此可知大家對於偏底層的內容還是很感興趣,希望之後有機會可以討論到更深的主題! !

Study 2019/10 月份自我學習回顧

前言 應該是開始要努力分享一些學習到的內容了,十月份又變成只有學習日記,快要變成流水帳版了(誤)。十月卡了一個期中考大魔王,而且更可怕的是出社會太久都把微積分忘光,所以又回去複習。這次考試大多是證明,證明就是一個如果一開始錯誤,後面就會接連錯下去的東西~雖然證明不太好念,不過覺得過程中可以幫助釐清邏輯,再加上有考試壓力,還是收穫不少,當然考試分數也沒有太低啦哈。 十月依然是一個不是很平靜的月份,花了不少時間在處理人生大事上,中間還發生跑去韓國旅遊,結果不是很好玩的慘痛回憶。不過有一位姊姊跟我說,最令人印象深刻的通常不是什麼美好的回憶,所以雖然這次經驗不太好,但是下次就會知道如何應付,也是一種人生學習~這樣聽起來好像感覺就好很多,默默地放下這事情了。 希望十一月份可以更好。 預定目標回顧 1. 其他語言或工具學習 (100%) 這個月看了蠻多 database 的影片和寫作業。我在英國上過資料庫導論,其實英國教授那時候就教的不錯,只可惜 CMU Database 上的更完整一點。印象深刻的部分包含:DB 是用什麼方式來儲存 tuple、DB 可能會有自己的 scheduling 來進行寫入、以及 DB 也是有 free list 來管理目前 tuple 紀錄。對於這些關於 DB internel 的學習,覺得非常有收獲,所以非常有收穫~

Study 2019/09 月份自我學習回顧

前言 這個月是一個比較多事的月份,主要原因是重新調整了生涯規劃。雖然自己出社會也快要十年了,但是轉職成 Engineer 也才不過這兩年的事情,因此自己還像是一名剛出社會的半新鮮人一樣,到處地探索自己喜歡的事物,不斷地從過程中試圖挖掘出自己的熱情所在。 很好運的是,我覺得我在這過程中一直有貴人相助,例如我加入 Moxa,再因緣際會地加入趨勢科技,進而進入 Golang 社群開始與其他 co-organizer 辦活動等。老實說,我在群體中一直都是最菜的那位,但是大家給予我很多機會成長,讓我有機會接觸到各種事務,雖然依舊還是很菜,但至少開始有點經驗,知道自己該用什麼方式來找出問題點,在面對新技術的時候,可以從哪個方向下手讓自己快速學習。

C Implement Memory Allocator

前言 在很多程式語言都會看到 memory allocator,也可以看到陸續發表的 allocator 實作方式,例如 microsoft mimalloc。與其用看 source code 的方式來了解其原理,倒不如從基本學起,並且從實作過程中了解到為什麼他們要這樣設計 allocator。

Study 2019/08月份自我學習回顧

前言 8月份有蠻多事情要處理,首先是 Go Taipei 社群和 DigitalOcean Hsinchu 合辦 Meetup,這也是我第二次在 Go 社群分享主題。而這次探討的主題和 Lock 相關,再加上會涉及一些系統相關議題,因此花了蠻多時間在看相關素材和實作細節,非常怕在 QA 時間被問到什麼很艱深的問題XD 其實每次分享,對分享者來說都是一個蠻有挑戰性的任務,主要是因為這些內容都需要蠻多時間去準備,而這次在工程師大本營新竹來分享,更是膽戰心驚,深怕不能帶給聽者有幫助的知識。不過,幸好這次 Meetup 安然度過了(所以才有時間來整理 8 月份的學習心得),當面認識了一些人,也交流了不少,很開心 :)

Network Go Start HTTP/2 running over cleartext TCP

![flow]({{ site.url }}/assets/images/h2c-flow.png) 前言 主流使用 HTTP/2 時都是基於 TLS protocol,不過在 HTTP/2 RFC7540 規範中, HTTP/2 其實也可以直接基於 cleartext TCP 來溝通。這次主要介紹 based on cleartext TCP 的 HTTP/2 server 與 client 實作,後續會再加入 HTTP/2 結合 TLS protocol 的相關內容。

GNU C semaphore sem_post 在 glibc v2.0 v2.1 之比較

前言 在翻 futex man document 的時候,不小心看到 Linux Futex的设计与实现 這篇文章。文章中有提到在執行 sem_post 的時候,雖然沒有與其他 thread 競爭,還是會用到 fuxtex system call。當然文章中有提到原因,不過看了原因,覺得這看起來很明顯的效能問題,應該會被提出來並改進吧?後來翻了一下目前的 source code ,看到這個是 GLIBC_2_0 的版本(那篇文章也很久了,所以能想見當時的版本應該蠻舊的),而現在 GLIBC_2_1 就有把這部分改進,因此就來簡單記錄一下差異在哪裡吧~

Study 2019/07月份自我學習回顧

前言 時間超快地又到了八月了~七月整個月天氣都蠻悶熱的,加上小套房也不是很通風,想要好好在房間念書就只能一直開冷氣,偶爾再去金山街星巴克當假文青。除了進修之外,還跟公司旅遊補助團去了一趟高雄、台南小旅行,去高雄的那天剛好遇到輕颱大淹水,在開高速公路的時候,風雨交加,旁邊的大遊覽車不斷踩水激起大浪花,整個過程蠻膽戰心驚,深怕一個不注意會發生意外,幸好還是平安回來了。 ![study]({{ site.url }}/assets/images/study-2019-07.jpg) 學習部分,七月份其實吸收蠻多內容的,收穫滿滿,可惜因為時間關係,筆記大多很潦草,還不足以登上檯面,就沒有放在 blog 上了。七月份學到最多的就是 Linux kernel 和 network 相關知識,而其中印象讓我深刻的是,我在學習過程中遇到一個不太確定的問題,因此花時間在查閱相關內容並找答案,那時候心中覺得這個答案可能是正確的,但是基於經驗不足的關係,還是去請教了韌體相關的資深同事,結果他給了我一個完全不同方向的答案。這令我蠻訝異的,因為我的確沒想到會不同方向的思考路線,也讓我在後續學習時更加注意各面向的思考。不過會導致這原因,深究起來還是對於 kernel 理論不夠熟悉的緣故,所以在學習中加入了 Linux kernel development 書籍,希望能多加深理論基礎。

Study 2019/06月份自我學習回顧

前言 六月份安排了一趟北海道旅遊,因此整體唸書時間相較少些。北海道旅遊中,在富良野鄉村地區待了兩日,雖然只有短短時間,但卻讓我體驗到完全不同的生活環境,遼闊無際的花園農田、路上慢步行走的當地居民們、以及寬廣的生活空間,都令人非常嚮往。我很喜歡在都市的緊湊步調,跟公司同事們努力開發以及學習各種新知原理的過程,但有時候也會想過過這種悠閒沒有太多物質壓力的人生,可能是自己從來沒有過如此的生活方式,所以會有種美麗的幻想吧。 學習部分,六月份的專注力明顯好很多,因此整體自學的時數有變多,也覺得自己成長了不少。主要原因是因為這個月花了更多時間在學習 linux 以及看 linux kernel source code,有感覺到自己對於作業系統是有比較多興趣的,會自主投入很多時間在理解原理和實驗上。不過因為在看 linux 會碰到很多數學相關的優化內容,因此數學訓練還是要維持固定的進度。