--- title: yenslife (潘駿諺) categories: User ... # 簡介 - 國立成功大學 資訊工程學系 114 級 - Github: [yenslife](https://github.com/yenslife) - HackMD: [yenslife](https://hackmd.io/@yenslife) # 2024 Linux 核心設計 春季班 自我評量 ## 成果發表和貢獻 - [lab0-c](https://github.com/sysprog21/lab0-c) - [Check if sorting implementation is stable (commit b0aa080)](https://github.com/sysprog21/lab0-c/commit/b0aa080e0ee61b745d8b6c30711496fff2f48bce) - 《Demystifying the Linux CPU Scheduler》修訂 - [Add explanations related to DEFINE_SCHED_CLASS (commit 670559f)](https://github.com/sysprog21/linux-kernel-scheduler-internals/commit/670559f9c39a8bbcb02d14d71df69c115f9e20e8) - [Update sched_class.h for kernel v6.x (commit 5fd54f9)](https://github.com/sysprog21/linux-kernel-scheduler-internals/commit/5fd54f9375fc0c87646fb15c4362527b21c6d02c) - [Update task_struct state docs for kernel v6.x (commit c22f920)](https://github.com/sysprog21/linux-kernel-scheduler-internals/commit/c22f920249fc6861a6f289cc3e0cc2e299815ee1) - [Update task_struct.h for current Linux kernel (commit 1ff5d23)](https://github.com/sysprog21/linux-kernel-scheduler-internals/commit/1ff5d23333d02ddba80f7074dc9127ce441f0d22) - [Improve section Per-Entity Load Tracking (commit 9bbbffe)](https://github.com/sysprog21/linux-kernel-scheduler-internals/commit/9bbbffe24e737dc102ca23fba5d5716b6778ee25) - [Fix typos in scheduler.tex (commit be5a7cd)](https://github.com/sysprog21/linux-kernel-scheduler-internals/commit/be5a7cd1051a9e204e41cbf3450fd1e45df76171) 評分: 10 「取之於網路,回饋於網路」,深受網路開源學習資料的影響,貢獻開源專案是我參與這堂課程的目標之一,雖然沒有對 Linux 核心做出貢獻,但我在閱讀老師撰寫的教材時,除了更新過時程式碼外,也提供相對應的解釋,以及我認為對讀者更好理解的詮釋方式。在第一次作業 lab0-c 撰寫開發紀錄的時候,老師在我的筆記問我「如何確保排序的『穩定性』」,"stable" 一詞我只在過去學習演算法課程的時候把定義背下來,但我從沒想過要怎麼確保一段排序程式碼是否為穩定排序。從一開始單純在每個排序元素的成員加上編號,到現在使用陣列來紀錄節點的位址,目前的實作還有進步空間,因為固定長度的陣列沒有辦法適用於任意大小的佇列,可以利用像是 sliding window、hlist 之類的技巧來避免使用固定數值的巨集。不斷和老師討論、修改電子書或是程式碼教材的過程也讓我知道原來把小事情做到好是很重要的,光是留意細節就可以贏過許多人。我認為我在課程教材方面做了不少貢獻,第一次貢獻開源專案的經歷讓深刻的體悟,因此給自己 10 分。 ## 作業/隨堂測驗共筆 - lab0-c/homework3-review: [Github](https://github.com/yenslife/lab0-c) / [HackMD](https://hackmd.io/@yenslife/linux2024-homework1) - Homework2 (quiz1+2): [HackMD](https://hackmd.io/@yenslife/linux2024-homework2) - Homework5 (assessment): [HackMD](https://hackmd.io/@yenslife/linux2024-homework5) 評分: 6 我沒有完整地完成每次作業,但是每次作業都有深刻學習及探討。lab0-c 讓我重新認識 C 語言,認知到自身能力不足,以為自己會 C 語言,遇到問題直接原形畢露,根本不算是有學過。提交 commit 的過程被老師提點說要好好撰寫 commit message,考慮到「人在做,Google 在看」所有的 commit message 都是使用英文撰寫,我的英文寫作沒有很好所以都是用 ChatGPT 幫我寫 commit message,這種工具導向去使用 AI 而不是把 AI 當成「神」的使用習慣對我來說很有幫助,不再需要害怕模型輸出的正確性,因為你請他幫忙的內容都是建立在你已知的知識之上,完成任務的效率才會更高。撰寫 commit message 的好習慣也導入至我的大三專題,和組員間的溝通有效率 (好的 commit message 可以節省大量溝通成本),因為我的作業和專題都是公開的,這個習慣也被我實習的主管稱讚 (從沒想過寫程式以外的事情能被稱讚)。以為自己會用 git 了但跟 C 語言一樣,只是以為自己懂了。除了 `git rebase -i`, `git cherry-pick` 等實用的命令,在 Homework2 因為探討到 glibc 隨機函式的程式碼,老師教我用 `git blame`, `git log -S` 等命令,藉由查看大型開源專案的 commit message 來學習前人實作的程式碼背後的想法,這讓我更重視工程上的溝通以及程式碼的 “Good taste”。不論是作業還是期末專題,我在修這堂課之前都以為自己會花很多時間撰寫程式碼和 debug,但事實是,很多時候我都在觀察別人寫的程式碼、撰寫文件和「思考」,我覺得思考是這堂課的核心,因為思考是需要花時間的,這件事在這個浮躁的時代很少人做得到,很少人會真的把課程教材 (像是原文書) 看完,大家都想要速成直接看到結果。但工程不是這樣運作的,動手做固然重要,但在動手之前的數學推導、統計還有規劃都更為重要。我沒有做完每次的作業,但扎實學習的體驗和成長讓我想給自己及格的 6 分。 ## 期末專題 [Linux 核心專題: 排程器研究](https://hackmd.io/@sysprog/rysYj43ER) TODO: 自我評分與反省 ## 與授課教師的互動 - 一對一討論 - 05/03 16:30 確認任務、不要講風險、審視學習狀況、浮點數觀念釐清 - 06/29 16:00 確認電子書修訂情形、第二章內容釐清、定點數觀念釐清 - 課堂討論 - 3/21 [課堂討論](https://hackmd.io/@sysprog/BkZjK4S0p) 針對穩定排序檢測的討論 - [PR #177: Check if sorting implementation is stable](https://github.com/sysprog21/lab0-c/pull/177) TODO: 自我評分與反省 ## 所見所聞所感 TODO: 自我評分及反思 ## 自我評分 TODO: 完成上方自評後,採用方案 B 計算成績