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

版本 0b7bd315631a5e16f27e43b0c9a50e0f1bbf2057

User/mincch

Changes from 0b7bd315631a5e16f27e43b0c9a50e0f1bbf2057 to current

---
title: mincch (胡旻鈞)
categories: User
...

# 簡介
* 國立成功大學 資訊工程研究所 
* GitHub: [`mincch`](https://github.com/mincch)
* HackMD: [`mincch`](https://hackmd.io/?nav=overview)

# Linux 核心設計 自我評量
## 成果發表和貢獻
3 分
[期末專題錄影](https://www.youtube.com/watch?si=SmNTC1LKuuLJw6qU&v=JZnuofbJINE&feature=youtu.be
)



## 作業/隨堂測驗
7 分

* [Homework 1](https://hackmd.io/@mincch/linux2025-homework1)
* [Homework 2](https://hackmd.io/@mincch/SkGJuGk2ye)
* [Homework 3](https://hackmd.io/@mincch/r1EVewB0Jl)
* [Homework 5](https://hackmd.io/@mincch/HkSmlRMMlx)

在作業過程中,我學習到了 Git 的基本操作,如版本控制與分支管理,也進一步學會撰寫清楚、具備結構的 commit message。透過 pre-commit hook,我實際體驗到如何在程式提交前自動檢查排版(clang-format)與拼字錯誤等等,這大大減少了與他人協作時因格式不一致所造成的混淆與無謂的 diff。
並且我也理解到了 Linux Kernel 的 API 實作方式與設計風格,尤其在實作 kernel linked list 時,學會了如何透過 container_of 巨集從 list_head 反推原始結構體,並應用在 queue 操作與動態記憶體管理上。這些經驗讓我對「指標的指標(pointer to pointer)」等語法技巧有更直觀的掌握,也逐漸理解何謂「有品味的程式碼」。


## 期末專題
7 分

[重作 kxo ](https://hackmd.io/@sysprog/SJUCTA4Vgl)

這次我被指派到的專題是重作kxo,主要是希望可以增加自己的實作能力,並且能夠有c相關的作品集,這次是實作了將使畫面呈現的部分在使用者層級藉此深入理解 kernel 與 user space 的職責劃分與效能考量。在對弈的過程中,要在螢幕顯示當下的時間 (含秒數),並持續更新,當離開對弈時,顯示多場對弈的過程


## 與授課教師的互動
6 分

[與教師的互動](https://hackmd.io/@mincch/HkSmlRMMlx)

5/30 與授課教師的一對一討論 : 剛開始我對與授課教師的一對一討論感到壓力,不知道要問什麼。但在深入閱讀教材(並行程式設計: Coroutine)後,我開始主動整理學習時的疑問並紀錄下來。在討論中,我與老師深入探討了 setjmp/longjmp 與 trampoline 的本質差異。

原先我對這些概念的理解多來自網路搜尋與 AI 工具,但與老師對話後我發現,學習系統底層概念不能只靠二手資料,更應回歸官方文件與 man page 來建立正確的知識脈絡。這次經驗也改變了我面對學習的態度──不再只是尋求快速答案,而是從原始資料出發建立自己的理解。

## 所見所聞所感
9 分
在課堂上老師很強調實驗,快速測試並修正程式錯誤。這種快速迭代的能力,在軟體開發中尤為重要。相較之下,作者在開發自動飲料機時,面臨了硬體試錯的高成本與長時間等待。例如,為了測試冰塊分配機構,作者需要等待工廠加工零件,這不僅耗時,還增加了開發的複雜度 。這讓我意識到,軟體開發的快速試錯特性,是我們應該善加利用的優勢。

作者在專案初期,對需求的理解並不充分,導致後續在功能實現上遇到許多困難。這提醒我,在開發前,應該花更多時間與使用者溝通,確保對需求有清晰的認識。在課堂專案中,第一次作業時沒有清楚的閱讀好作業規範,導致連測試都跑不起來,讓我學會了在做任何事情前需要明確的瞭解好需求、規格等等,來明確定義功能,這有助於減少後續的修改成本。

最後是文中作者提到和老師的對話:「你不能現在就放棄,要是現在就放棄的話,你這輩子日後遇到這種等級的困難,就只會想逃避而已。」這句話深深打動了我。在系統軟體開發的過程中,失敗是常態,關鍵在於我們如何面對失敗,從中學習並成長。並且在課堂中學習承受與處理失敗。


## 自我評量

$GEOMEAN = ( 3 \times 7 \times 7 \times 6 \times 9 )^{1/5} = 6.024794$

方案 B :$1 + floor(GEOMEAN) = 1 + 6 = 7$