SuNsHiNe-75 (李其儒)
簡介
- 國立成功大學 資訊工程研究所
- GitHub:
SuNsHiNe-75
- HackMD:
SuNsHiNe-75
2024 Linux 核心實作 春季班 自我評量
成果發表和貢獻
無。
評分:
我只值得 3 分。學生在處理作業及閱讀教材上偏吃力,未有餘力針對現有之專案或 Linux 核心程式碼作出改善及貢獻。但學生希冀自己,未來有機會能重新審視 Linux 核心程式碼,盡自己微弱的一份力,從小細節開始嘗試提出 pull request;有能力後,再與 Jserv 討論,並針對大主題提出效率上的改善。以彌補學生時期自己能力上的不足。
作業
- Homework1 (lab0-c):Github / HackMD
- Homework2:Github / HackMD
- Homework3 (Tic-tac-toe):Github / HackMD
- Homework4:HackMD
- Homework5:HackMD
- Homework6:HackMD
評分:
我給自己 8 分。每份作業學生都「盡自己能力」及時間去處理,儘管學生能力不佳,有幾份作業未實行完成或未進行更深入的實驗分析;但學生認為自己在該課程之作業投入程度,是可以接受的,也從中獲取了許多寶貴的知識、觀念及想法。
期末專題
- eBPF / TCP:HackMD
評分:
我給自己 9 分。在粗淺之 Linux 核心觀念,並無 eBPF 的基礎下,在 Linux v6.8 以上之環境重現出期末專題之實驗,並將嘗試比較相關性能-學生認為這是自己的一大突破。雖然未針對該主題貢獻「值得說嘴」的成果,但對於自己的表現,以盡足夠努力。
與授課教師的互動
- 5/10 下午 9:30 一對一討論
- 5/11 Messenger 上與教師之專題題目討論
- 6/14 下午 3:00 一對一討論邀請(用 Messenger 約,但教師未回應)
評分:
我給自己 9 分。在預約一對一討論的頻率上不高,但學生覺得自己有表現自己想進行討論的渴望,以及對期末專題題目討論的注重。第一次討論時,未與教師決議出學生的專題方向,而後學生先後提出「TPM2」與「XDP 之防火牆」主題,並個別列出對應之 TODO 與教師討論,儘管被教師否決,但可證明學生之積極。
所見所聞所感
以前完全沒有修過 Linux 核心設計等系統軟體開發相關課程的我,在選修此門課之初可謂吃盡了苦頭… 每到隔週,隨著琳瑯滿目沒聽/學過的新教材的出現,我總會很焦慮地需要追著新進度跑,明明上「幾週」的知識都還未理解完全;上「幾週」的作業甚至也未完成。「要直面自己的缺點」是教授在課程首週強調的觀念,然而,我的作法似乎背道而馳,逃避了它。或許選修此課程的我,初期也有等同的決心想要精進、提升自己對系統軟體方面的素養;然而,第一份作業、每週教材量及「建議花費於本課程的時間」公布後,我徹底懵了-這會是我修過最硬的課。
在 Homework5 閱讀〈因為自動飲料機而延畢的那一年〉文章-作者在研發自動飲料機的每個環節,總是步步為營,模組化每步的「當前目標」,針對該目標再反覆執行「假設-實驗-改進-解決」等迴圈,結合其他夥伴的專業分工,使團隊凝聚且讓進度推進。比如軟體設計方面,作者就列出了好幾個當時遇到的問題,並「一個一個做實驗來印證些想法」;細節上也絕不馬虎。此謀定後動並追根究柢的精神,我想,才是現階段的我該學習模仿的。我認為我在學習態度上「遠有進步空間」,他人在為「無成果收益」的專案焦頭爛額,甚至延畢一年時;我卻只專心在「如何畢業」、作業能否拿高分並「粗淺」交代等對自己完全不負責任的行為,好奇自己還要落魄多久之餘,也思考真的該振作了。引用自作者的文章-「機器現在能做到的每一件事,都是用一次次試誤換來的取捨。」,而不試錯的我,又如何能成大業、做大事呢?
針對本學期「Linux 核心實作」課程,學生實在受益匪淺-針對 C 語言及 Linux 核心相關技術之各種詳細教材、頻率高且深度不淺的每周線上測驗、扎實且需要花費很多時間實現的各項作業;最後,還有與授課教師、別的修課同學互動,相互砥礪並觀摩學習的機會。此課程是一多方面能力、軟硬皆施的「訓練營」,除了最基本的程式技巧、Linux 核心知識;課程中也特別強調「漢語表達」、「如何溝通」與「課程互動」等層面的能力培養,也呼應到人說:「軟體工程師不光只要會寫程式,懂得溝通也是關鍵!」的精神。
碩二甚至出社會後,學生認為自己仍會回頭翻閱 Jserv 的課程教材,針對程式邏輯作更進一步的強化,更有可能利於職場上的使用。
評分:
我給自己 8 分。
研究生發信時間
- 二月份學習回顧 (2024/03/01 下午 3:00):
這堂課程在前兩週主要深入探討 C 語言的指標操作、Linked List 與非連續記憶體操作,以及 Linux 核心概念及實作機制,包括數值和 bitwise 操作,以及 Linux 核心的 Hash table 實作。這些教材有助於我複習 C 語言並鞏固電腦運作機制和程式基礎。目前進行了兩次測驗,培養了我對新程式碼的敏感度和閱讀速度,對未來研究有幫助。作業方面,已完成第一週的 Linux 核心佇列操作實作,提升了我找資料、閱讀原始檔的能力,並與 LeetCode 題目結合練習,使用 Valgrind 加深記憶體分配的概念。 - 三月份學習回顧 (2024/04/06 上午 2:04):
認知到「Code Review」的重要性;而此周作業也涵蓋了這點,讓我們能與別的學員互相觀摩並交流洞見。另一作業帶我學習了「定點數」在程式上的實作概念及其對 Linux 核心的重要性,結合當周教材開始帶入「排程器」等重要機制,令學生受益匪淺。在 Bitwise 操作上的著墨根深蒂固;教材方面,另有 Linux 核心的紅黑樹解說、編譯器與其最佳化原理及其背後的各式陷阱等深入探討等。線下的 Code Review 課程,有如當頭棒喝般,讓我深知自己能力及知識的不足,也期許自己能有踴躍發問的能力。學員在此仍又認同了一次此課程的核心金句-陸游:「紙上得來終覺淺,絕知此事要躬行」。 - 五月份學習回顧 (2024/06/24 下午 10:28):
著手針對期末專題進行發想,並與授課教師一對一討論,確立期末專題之研究方向-以 eBPF 打造 TCP 伺服器。並邀請教授觀看學生的開發紀錄。
評分:
我給自己 8 分。四月份的學習回顧疏忽而沒發送給實驗室教授;除此之外,學生認為自己有從實並認真撰寫信封,告知教授自己在 Linux 核心實作課程上的所見所聞及所做之事。
自我評量 (1 ~ 10)
- GEOMEAN:\(\sqrt[6]{3*8*9*9*8*8}=7.06\)
- 方案 B:\(1+\lfloor 7.06 \rfloor=8\)