分享到plurk 分享到twitter 分享到facebook

版本 880c57e1ca771dd928732452ce3a2e2950f37dae

User/LULser0204

Changes from 880c57e1ca771dd928732452ce3a2e2950f37dae to current

---
title: LULser0204 (陳昭詣)
categories: User
...

# 簡介
* 國立成功大學 資訊工程研究所AI所 112 級

* GitHub: [`LULser0204`](https://github.com/LULser0204)
* HackMD: [`LULser`](https://hackmd.io/@LULser)

# 2024 Linux 核心設計 春季班 自我評量

## 第一項、成果發表和貢獻
評分: 1 分。無庸置疑,我這學期沒有對那些專案做出任何貢獻,無論是錯字修正還是改善。我再閱讀那些教材時不夠仔細,對內容只是粗略瀏覽,未能深入理解,即使其中有錯誤也就無法察覺。
評分: **1** 分。無庸置疑,我這學期沒有對那些專案做出任何貢獻,無論是錯字修正還是改善。我再閱讀那些教材時不夠仔細,對內容只是粗略瀏覽,未能深入理解,即使其中有錯誤也就無法察覺。

## 第二項、作業/隨堂測驗:

* lab0-c: [Github](https://github.com/LULser0204/lab0-c) / [HackMD](https://hackmd.io/2XdKh0-6QR-yLZok4bRV1A)
* quiz(1+2): [HackMD](https://hackmd.io/@LULser/linux2024-homework2)
* quiz(3+4): [HackMD](https://hackmd.io/@LULser/linux2024-homework4)
* homework5: [HackMD](https://hackmd.io/@LULser/linux2024-homework5)

第一次作業 Lab0 因為內容只是完成指定的佇列操作,且讓我們熟悉一些工具,因此完成度較高。然而,隨著後續作業內容逐漸加深,我逐漸跟不上課堂進度,許多延伸問題也無法實作出來。有些解釋甚至和其他同學的相比差很多,很明顯我對自己寫的內容不完全理解。

這個項目我給自己 6 分。
這個項目我給自己 **6** 分。

## 第三項、期末專題

* 並行程式設計:POSIX Thread 相容實作: [HackMD](https://hackmd.io/@sysprog/H1_iu8CSA)

我過去從未實作過任何有關 Concurrency 的內容,但在這兩個月期間,我在不借助 ChatGPT 的情況下,仍能完成指定的任務。透過這次的期末專題讓我更了解 Concurrency 相關議題,例如第二個任務: "引入mutexshootout" 理解 futex api 的定義以及 C++ 的規格書並且使用,剛開始一直觸發 deadlock 回去翻看 main.cpp 哪裡沒有寫好,用 gdb 去觀察哪個環節寫錯,不斷的去調整。在這過程中,我練習通過查閱和理解第一手資料來解決問題,這培養了我解讀規格書的能力。總體來說,這次專題比起作業我投入的時間更多,也學習到該如何有效的面對實作作業過程中碰上的問題。

這個項目我給自己 10 分。
這個項目我給自己 **10** 分。

## 第四項、與授課教師的互動

* 5/6 下午7:30 一對一討論,討論期末專題的主題
* 6/7 下午9:30 一對一討論,討論期末專題具體的任務
* 5/2 課堂問答

老師在 5/2 號的實體問答針對了我對於 "Volatile" 不懂的地方進行了詳細的回答,並且針對規格書上的敘述進行更進一步的解釋 ("R-Value"、"object")。而第一次一對一討論,老師和我稍微說明 Concurrency 基礎知識,並且分享了有哪些職位會需要用到 "Concurrency" 的知識 ; 第二次則是點出我對於學習上只是粗略瀏覽沒有深入理解,再問我為什麼 lock-free 實作 linked list 為什麼要 "mark",但我當下想不出來,下一個問題詢問什麼是"futex",我的回答不夠完整,只能回應出一些關鍵字(wait queue、大多數操作都在 userspace),在面試的場合絕對會直接被拒絕。在討論結束後,我回去仔細地閱讀那些教材,並且去執行那些程式碼並將原本的鏈結佇列從單向改成雙向,期末專題使用 "futex" 來觀察其和 "PThread" 效能上的差距。

深深的意識到我這種學習不求甚解的態度只適用於考試,在其他場合會被看破手腳。而回答的時候之所以會緊張,就是因為不夠了解某個概念,題目與原理都懂了,就可以自信的回答出來,不會被無知的情緒綁架。
深深的意識到我這種學習不求甚解的態度只適用於考試,在其他場合(如面試)會被看破手腳。而回答的時候之所以會緊張,就是因為不夠了解某個概念,誠實面對自己不懂就學,題目與原理都懂了,理所當然能夠流暢回答面試官的問題,增加面試的成功率。

這個項目我給自己 9 分。
這個項目我給自己 **9** 分。

## 第五項、所見所聞所感 
 〈因為自動飲料機而延畢的那一年〉,「這個領域實在是太過廣博,現實如同真理般,給予和狂妄自負的傢伙相對應的絕望,對於沒有準備好的人毫不留情。我覺得自己像無頭蒼蠅一樣亂撞,做什麼都徒勞無功。」在閱讀課程教材時,我常常有一種無力感,一方面是學習不夠細心,後續需要花更多的時間去彌補前面所欠下的技術債,從第一週的指標和鏈結串列,到 bitwise 操作以及編譯器行為,每一個議題都可以有許多延伸的議題可以討論,然後這些教材又會延伸到另一個主題,時間總是不夠,怎麼學都學不完,看著教材焦慮,想著我還要多少時間才能把這些知識讀進去,讓自己寫的東西可以被使用。另外,觀摩別人寫的作業,同學總可以想到更抽象但合理的方法,我有去問過某位同學怎麼想到、辦到的,他說自己就看老師列出來的教材慢慢刻出來的,修了這堂課才開始認真學習 C 語言。
   回顧我這一學期,為什麼我作業作的那麼差。就是因為我只是想 "**應付**" 而已,並沒有抱持著 "**想要翻身**" 的想法去學習。因為沒有這樣的自覺,就不會刻意練習。這學期結束,我會花時間嘗試把教材都好好的讀一遍並且做筆記,到時候再回頭來看這門課,做作業一定會有不一樣的感受。
    閱讀《因為自動飲料機而延畢的那一年》,(23) 提到:「這個世界比任何人都殘酷,也比任何人都公平,犧牲了多少就會得到多少。」這個學期的大部分時間,我都在彌補過去所欠下的技術債,這些債務的內容主要是過去學過的「程式設計:C語言」、「機率統計」、「作業系統」等課程內容。當時我只關注重點單元就能拿高分,忽略了那些「很少考試」的範圍,而現在需要用到這些知識時,卻感到無所適從。
   此外,我曾詢問過一位同學他是如何完成作業的。他告訴我,自己也是在修了這堂課後才開始認真學習 C 語言。他按照老師列出的教材一步步研究,並將其他課程全部退掉,這學期只專注於這一門課,花大量時間閱讀文件、進行練習,最終才有了現在的成果。
    回顧這一學期,我的作業完成度之所以和他差距這麼大,是因為我只是想"**應付**",並沒有抱持著"**想要翻身**"的心態去學習。缺乏這樣的自覺,自然也不會**刻意練習**。雖然從學期初開始彌補技術債,但仍有很多坑尚未填平,學期結束過後會回去閱讀教材並試著去完成作業,持續強化解決問題的能力。

這項目我給自己的評分是:9分
這個項目我給自己 **9** 分

## 第六項、研究生發信時間

* 二月份學習回顧 (2024/3/5) lab0、linked list、git 操作
* 三月份學習回顧 (2024/4/2) homework (2+3)、ECC、compiler
* 四月份學習回顧 (2024/5/3) homework (4+5)、concurrency、epoll
* 五月份學習回顧 (2024/6/3) homework 5 & final project + Linux memory management

我皆有確實得向指導教授寄信回報當月的學習回顧,在回顧信中,我也會詳細的說明我在課堂上的學習狀況還有掌握的知識讓指導教授知道我的學習狀況。舉例來說,我就和指導教授說我有使用 github 來進行版本控制,有時候模型亂改表現變差,這時候好的 commit message 就很重要。使用 'git log' 查詢歷史紀錄,然後使用 'git reset' 回到某次commit,或者是 'git merge' 來合併特定的功能。

這個項目我給自己 10 分
這個項目我給自己 **10** 分

## 自我評量 (1 ~ 10)

方案 B: 1 + floor(1、6、10、9、9、10) = 7