## 簡介 * 國立成功大學—資訊工程研究所 112 級 * [GitHub](https://github.com/yy214123) * [HackMD](https://hackmd.io/@yy870530) ## 2024 Linux 核心實作 春季班 自我評量 ### 1.成果發表和貢獻: 當我進行作業二時,我在第 3 週對應的測驗教材頁面的第一題發現了一個數學公式的錯誤。在本課程第二次實體 code review 結束後,我向授課老師反映了這個問題。老師回應說這是故意寫錯的,目的是測試我們是否能注意到這些細節。這次經歷顯示了我在閱讀過程中對細節有仔細觀察。 至於書本部分,目前我尚未有任何貢獻。關於 Linux 核心程式碼的部份,下方有更進一步的描述,但目前也沒有實質性的貢獻。 這個項目我給自己的評分為 4 分。 ### 2.作業/隨堂測驗: **作業** [2024q1 Homework1 (lab0)](https://hackmd.io/@yy870530/linux2024-homework1) 這是除期末專題以外,我花費最多心力的作業,在這個作業我認為我有大幅進步,列舉如下: 1. 對 c 語言的掌握度提昇,在一年級上學期我是大學部資料結構課程的助教,作業部份是以 c 語言實作, 但當時我完全不會 c 語言,僅能協助書寫題的部份,但當此份作業指派下來,為了將其完成,我透過授課老師的「你所不知道的 C 語言系列講座」、 李根逸博士的 c 語言入門,重新學習 c 語言,我認為在這一學期我有所成長。 2. 學會操作 Linux,從小到大我都只用 Windows 作業系統,就讀大學時甚至覺得 Linux 好難用直接退選相關課程,但透過這門課,我逐漸發現 Linux 許多優點, 各種環境架設的方便性絕對是遠遠勝過 Windows,也不會有擾人的自動更新,雖然一開始蠻不習慣的,過往各種操作皆依賴滑鼠輔助,但現在發現只要鍵盤足矣。 3. 學會 git 相關操作,以前都用雲端、隨身碟帶著程式碼,一來雲端容量逐年遞減,二來設備可能遺失損壞,學習 git 後真的體認到這個工具的強大,且只要認真的撰寫 commit message,後續要追蹤程式碼功能變革也相對容易。 [2024q1 Homework2 (quiz1+2)](https://hackmd.io/@yy870530/linux2024-homework2) 這個作業雖我不是在截止日期前完成,但整體來說我覺得完成度還不錯,對應資料結構的圖示也有清楚的利用 graphviz 繪製在共筆中。 [2024q1 Homework3 (ttt)](https://hackmd.io/yI-Rh8l7Q9uzWhQgBQbsnQ?view#Reveiwed-by-56han) 這個作業我覺得自己做的不完善。 [2024q1 Homework3 (review)](https://hackmd.io/yI-Rh8l7Q9uzWhQgBQbsnQ?view#Reveiwed-by-56han) 是很不錯的體驗,收穫了許多其他修課學員的建議,針對各項建議,我都有進行對應的調整,且每次調整後都有獨立的 commit,這個作業我覺得我做的很好。 [2024q1 Homework4 (quiz3+4)](https://hackmd.io/@yy870530/linux2024-homework1) 這個作業我覺得自己做的不完善,完成度大約 50 %,但部份的數學推導有將其完成。 [2024q1 Homework5 (assessment)](https://hackmd.io/@yy870530/linux2024-homework5) [2024q1 Homework6 (integration)](https://hackmd.io/@yy870530/linux2024-homework6) **測驗** 而測驗的部份,我每週皆有參與,但有幾次測驗都是 0 分,起初蠻挫折的,但這也讓我知道說還有精進的空間, 我應該慶幸的是,是在修課階段拿到 0 分,這些測驗題很有可能是我未來面試時遇到的考題,到時如果還是 0 分 那才是真的一敗塗地。 在作業/隨堂測驗這個項目,我給自己的評分為 9 分 ### 3.期末專題 整體下來,我覺得完成度平平,還有很大的努力空間,很遺憾的是沒有把 CMWQ 弄懂,而比較有收穫及成長的是下方提到關於延伸問題的我向老師發信詢問的部份,應該是整個期末專題中比較完整的去實做測試的部份,其於是瀏覽教材的成份居多,但也讓我體會到了,其實好奇心不會害死貓,好奇心反而讓我有了很大的收穫!! 在這個項目,我給自己的評分為 8 分 ### 4.與授課老師的互動 第一次一對一討論:2024/05/08 PM9:30 在這次討論中,授課老師現場有出題目給我寫([ldexp](https://man7.org/linux/man-pages/man3/ldexp.3.html)),當下完全答不出來,也意識到自己對 bitwise 操作的掌握並非自己所想的那麼完全, 而後老師詢問我對什麼議題有興趣,思考過後我請授課老師指派,於討論結束後我重新讀過 CSAPP 第二章,並開始將面談中沒有寫出來的題目完善。 第二次一對一討論:2024/05/22 PM4:30 當我將第一次面談的題目完成後,再次聯繫授課老師進行面談,此次面談老師提供了該題目更好的解決方式(使用 union),在面談中老師說我進步許多,能收穫這個鼓勵我很開心,而在此次面談,授課老師也協助我將期末專題進行過程中所紀錄的問題進行解釋。 Linux 核心程式碼詢問(透過電子郵件):2024/06/26 PM10:23 會有這個環節是始於好奇心,進行期末專題時其中一個延伸問題需去研讀 Linux 核心程式碼 [div4](https://github.com/torvalds/linux/blob/master/lib/math/div64.c),研讀的過程發現,其中某部份的程式碼我自認為有改進空間,於是發信與授課老師討論,事後想想老師必然知道我提出的問題並沒有實質改善,但在第一時間並沒有馬上否決我的疑問,而是給予我一些分析上的建議,隨即我就展開了實驗,以最後結果來說,雖然與我預期的大不相同,但我很享受這個學習過程,若在最一開始,老師就告訴我不可能,我可能也沒有動力去研究相關議題。 紀錄一下老師給的毒雞湯!! 「幻滅是成長的開始。希望你體會到何以我一直強調「細節」的重要。」 第二次面談後,我多次發訊息到粉絲專頁想要預約第三次的面談,但沒有收到老師的回覆,在互動這個項目我覺得我有盡全力投入了, 我給自己的評分為 10 分。 ### 5.所見所聞所感,務必提及閱讀〈因為自動飲料機而延畢的那一年〉和回顧自身在本課程的投入狀況 是個很振奮人心的故事,讓人深思。 如果你只會寫程式,而且對原子筆一竅不通,那會發生什麼悲劇就可想而知了。 * 對這段話頗有感觸,也反映了為什麼這門課程特別強調閱讀原始教材的重要性,一直以來我都在舉燭,只會在心中腦補程式碼,還沒著手進行 lab0-c 前,在如今這個生成式AI迅速發展的時代,我常常僅是打開 ChatGPT,描述我的目標,然後是一連串的「ctrl + c >> ctrl + v >> run」。當遇到 bug 時,我再次「ctrl + c >> ctrl + v」尋求 ChatGPT 的幫助來解決問題。剛開始寫 lab0-c 時,我也嘗試過這樣幹,然而,我發現從 ChatGPT 得到的回答往往不切實際。也對應到老師在 Google meeting 上提到的,如果只是一昧的使用這些工具,那並無法與他人拉開差距,其他科系的同學甚至比你還會問 ChatGPT 問題。 If I had eight hours to chop down a tree, I’d spend six hours sharpening my axe." – Abraham Lincoln * 我意識到基本功的重要性,綜觀這學期下來,我雖然沒辦法按時將每項作業完成,也未能在每週四課程開始前將教材確實看完,更不用說時常需要重複閱讀教材和相關的影片。但我發現,每當我重新閱讀教材時,總能獲得新的理解。那些在第一次閱讀時感到模糊不清的知識點,隨著閱讀次數的增加,逐漸浮現出新的見解和突破。 事情如果太順利代表絕對有問題,而問題永遠會從意想不到的地方冒出來。 * 就像我在期末專題碰到的問題,天真的我自以為找到了好辦法,果然問題真的從我沒預料的地方冒出來!以前會覺得理論、實作是分開的兩個議題,但隨著課程進行我發現兩者其實相輔相成,甚至還會有設備不同造就結果不同的情況發生。 回顧我在本課程的投入狀況,我覺得我很努力了,儘管作業、測驗、期末專題都有瑕疵,但這絕對是我來成大後最用心投入的一門課,跟學期初的我相比,我很滿意自己的成長, 在這個項目,我給自己的評分為 10 分。 ### 6.每月發給實驗室指導教授的學習回顧 二月份學習回顧 * 寄信日期:2024/03/05 PM5:08 * 信件內容簡述:與上方作業一的描述雷同,主要與指導教授分享我不足之處,並分享作業進度。 三月份學習回顧 * 寄信日期:2024/04/07 AM1:29 * 信件內容簡述:主要與指導教授分享本課程所使用的共筆工具 HackMD,並且將此工具用於實驗室內部文件的撰寫。 四月份學習回顧 * 寄信日期:2024/05/11 PM4:16 * 信件內容簡述:主要與指導教授分享期末專題題目。 五月份學習回顧 * 寄信日期:2024/06/23 PM2:27 * 信件內容簡述:主要與指導教授分享期末專題進行狀況。 我每個月都有發回顧信,且在信件只要討論到課程相關主題,我都有附上對應的鍊結供指導教授參閱,也沒有任何隱瞞。 在這個項目,我給自己評分為 10 分。 ### 7.使用GEOMEAN 來計算上述 (1) 到 (6) 各項的幾何平均 * 採用方案 B: 1 + floor(GEOMEAN) 計算後的分數為:9 分