--- title: Jordymalone (邱家浩) categories: User ... # 簡介 - 國立成功大學 資訊工程研究所 113 級 - Github: [`Jordymalone`](https://github.com/Jordymalone) - Hackmd: [`Jordymalone`](https://hackmd.io/@JordyMalone) - Linkedin: [Jordan (Chia-Hao) Chiu](https://www.linkedin.com/in/jordan871130/) # 2025 Linux 核心設計 春季班 自我評量 ## 成果發表和貢獻 - 貢獻 - [sysprog21/lab0-c](https://github.com/sysprog21/lab0-c): [`#259`](https://github.com/sysprog21/lab0-c/pull/259) - [sysprog21/kxo](https://github.com/sysprog21/kxo): [`#9`](https://github.com/sysprog21/kxo/pull/9) - [sysprog21/khttpd](https://github.com/sysprog21/khttpd): [`#13`](https://github.com/sysprog21/khttpd/pull/13), [`#14`](https://github.com/sysprog21/khttpd/pull/14),[`#15`](https://github.com/sysprog21/khttpd/pull/15) - [《The Linux Kernel Module Programming Guide》](https://github.com/sysprog21/lkmpg): [`#303`](https://github.com/sysprog21/lkmpg/pull/303) 評分: 8 分 這部分給予自己 8 分。起初我對 Git 毫無概念,但如今已能熟練操作並成功提交 PR 至課程教材與專案,且內容已被實際採納。這段從零開始、逐步參與實作的過程,讓我深感成就。未來,我也會持續投入開源專案的貢獻,秉持著「路見不平,拿 patch 來補」的精神,不斷精進、回饋社群。 ## 作業/隨堂測驗 - [2025q1 Homework1 (lab0)](https://hackmd.io/@JordyMalone/linux2025-homework1) - [2025q1 Homework2 (quiz1+2)](https://hackmd.io/@JordyMalone/linux2025-homework2) - [2025q1 Homerwork3 (kxo)](https://hackmd.io/@JordyMalone/linux2025-homework3) - [2025q1 Homework4 (quiz3+4)](https://hackmd.io/@JordyMalone/linux2025-homework4) - [2025q1 Homework5 (assessment)](https://hackmd.io/@JordyMalone/linux2025-homework5) 評分: 6 分 這部分給予自己 6 分。當時面對第一份作業,受到了強烈的衝擊,不僅意識到自己對 C 語言的理解不足,許多工具(如 valgrind、git 等)也是首次接觸,甚至有些細節是我從未思考過的。也因此,在老師所提倡的「誠實面對自己」的學習環境下,我重新審視了自己的學習方式,拾起 C99 規格書開始啃,不倚靠二手資料,而是從原始文獻中理解。這段過程雖然艱辛,但也讓我逐步建立起更扎實的基礎,並培養出主動學習與獨立解決問題的能力。 ## 期末專題 * [Linux 核心專題: 高度並行的核心模式網頁伺服器](https://hackmd.io/@sysprog/SJYvYX_Wxl) 評分: 7 分 這部分給予自己 7 分。過去從未接觸過網路相關的知識,到如今能夠修改核心模組、導入 workqueue 架構,甚至實作出支援 directory listing、檔案傳輸與 MIME 類型處理的網頁伺服器,對我而言是一段非常扎實的學習旅程。在這個過程中,我學會了如何使用 CMWQ 重構原本以 thread 為基礎的結構,有效改善資源使用與吞吐效能,也實際實作了 chunked transfer encoding,進一步理解 HTTP 協定中處理動態資料時的設計考量。 原本我以為「網頁伺服器」是偏應用層的開發工作,但這次的專題讓我看見了從核心層面支撐 HTTP request 的各種機制,包括如何列出目錄內容、處理靜態檔案、依副檔名指定正確的 Content-Type 等,這些經驗讓我對系統層與應用層之間的關係有了更清楚的認識。我也學習到如何撰寫 kernel module 時善用各種 API,如 `workqueue`、`dir_context`、`filp_open`、`container_of` 等,這些能力成為我邁向 kernel 開發的重要起點。 過程中雖然遇到不少挫折與卡關,但也學會了如何一步步釐清問題、查找資料、反覆實驗與修正。這段學習讓我理解:「不懂並不可怕,卡住才是進步的起點。」只要持續面對、努力釐清,總有一天能真正掌握背後的原理與脈絡。 我給自己 7 分,是因為目前的專案仍有進一步擴充與優化的空間,我也期許自己持續投入改進與貢獻,讓這個專案不只是一份課程作業,而是我踏入 Linux kernel 與網路系統世界的敲門磚,為未來更深入的核心開發與系統研究奠定紮實的起點。 ## 與授課教師的互動 - 一對一討論: 5/16 討論 I/O model 及 `select` 系統呼叫。 評分: 6 分 這部分給予自己 6 分。這次的討論經驗雖然讓我釐清了一些原本模糊的概念,也促使我回去補強了先前的薄弱環節,但整體而言,我的表現仍未達到理想的標準。透過與老師的庫動,我更加意識到自己在某些核心觀念上的理解仍不夠紮實,表達上也欠缺自信。這段經歷提醒我,若要在深入的交流中真正獲得成長,除了加強課前的理解與準備,更應該**主動參與**、**勇於提問**,善用與老師互動的每一個機會,讓討論不只是過程,更成為深化學習的契機。 ## 所見所聞所感 參與 Linux 核心設計課程的這段時間,對我來說既扎實又充滿挑戰。在完成作業與閱讀老師提供的材料時,我常常在心裡反覆問自己:「我真的理解了嗎?」雖然表面上能照著步驟完成,但對於其中的設計原則與細節,卻往往無法清楚解釋出來。這讓我開始意識到,「會做」和「知道為什麼要這樣做」,其實是兩個完全不同的層次。 尤其在卡關的時候,我常去參考其他同學的成果。他們清晰的邏輯與細緻的實作不只讓我佩服,也讓我產生不少壓力與懷疑:「我是不是還差得很遠?」這樣的比較曾經讓我感到焦慮與沮喪,但也因此推動我去反思自己的學習方式──我是否只是為了交出結果,而忽略了真正的理解與內化? 直到後來,在閱讀《因為自動飲料機而延畢的那一年》這系列文章,才讓我對「卡住」這件事有了新的看法。Jserv 在其中提到:「你該學習的不是看到事情要完蛋了就去避免失敗,而是應該學習如何處理與承受失敗,你才能變得比以前更強大。」這句話深深打動我,讓我明白: 卡住不是能力不足的證明,而是成長正在發生的跡象,會懷疑自己,是因為我正在認真看待每一個細節。 因此,這段時間我學到的不只是技術,更重要的是學會怎麼在迷惘中調整步伐、在壓力中整理思緒、在錯誤中補強理解。即使現在的作業還有許多可以改進的地方,但就像老師說的:「**缺什麼補什麼**」,我會持續補上自己的不足,把每一次卡關與修正都當成學習的節點,讓這個過程成為真正屬於自己的成長軌跡。 所以,這部分我給予自己 10 分。 ## 自我評量 (1 ~ 10) - GEOMEAN = $\sqrt[5]{8+6+7+6+10} \approx 7.26$ - 方案 A : 8 + floor(0.3 * GEOMEAN) = 8 + floor(0.3 * 7.26) = 10 - 方案 B : 1 + floor(GEOMEAN) = 1 + floor(7.26) = 8