--- title: jujuegg (杭柏亘) categories: User ... # 簡介 * 國立成功大學 資訊工程研究所 * GitHub:[`jujuegg`](https://github.com/jujuegg) * HackMD:[`jujuegg`](https://hackmd.io/@jujuegg) # 2024 Linux 核心實作 春季班 自我評量 ## 成果發表和貢獻 無。 評分: 我給自己 **4 分**。 我在處理授課教師所提供的教材及作業時就已經盡了全力,沒有餘力針對現有的專案或 Linux 核心程式碼做出貢獻,但是我在作業二中有提出一個能夠降低在鏈結串列上實作 Quick Sort 的記憶體使用量的方法,也算是有改善到一點點。 我希望自己在未來能夠從小地方開始嘗試提出 pull request,再讓我磨練個幾年,我才有能力與授課教師討論,給出對得起我自己的貢獻。 ## 作業 * Homework1 (lab0-c):[Github](https://github.com/jujuegg/lab0-c) / [HackMD](https://hackmd.io/@jujuegg/HkYOnnBn6) * Homework2:[Github](https://github.com/jujuegg/Linux-HW2) / [HackMD](https://hackmd.io/@jujuegg/Sywdwc4pp) * Homework3 (Tic-tac-toe):[Github](https://github.com/jujuegg/lab0-c) / [HackMD](https://hackmd.io/m6HY1MyHQyuygTjIcIUf6g?view#Tic-Tac-Toe) * Homework4:[HackMD](https://hackmd.io/@jujuegg/Sy9XEJ7k0) * Homework5:[HackMD](https://hackmd.io/@jujuegg/HkNrWHUgR) * Homework6:[HackMD](https://hackmd.io/@jujuegg/S1nIZmK-R) 評分: 我給自己 **9 分**。 我認為我已經盡力在執行每份作業,儘管我沒有完整的做完每個作業的所有課題,但我認為我自己在此課程之作業的投入程度,有符合我自己在期初時的目標。並且有辦法回答別的同學針對我的開發筆記所提出的問題。 ## 期末專題 * 網路防火牆設計和實作:[Github](https://github.com/jujuegg/RJFireWall) / [HackMD](https://hackmd.io/@sysprog/ryJXC9iIR) 評分: 我給自己 **9 分**。 在完全沒有 Netlink 與 Netfilter 的基礎下,我成功在 Linux v6.8 的環境重現出此專案之實驗,並且能夠詳細的講解實際的運作流程與其程式碼的用途。我認為自己在這段時間內非常努力,雖然尚未針對該專案貢獻可搬出檯面的成果,但我未來會繼續著手進行此專案,希望可以加入更多功能或改善其效能表現。 ## 與授課教師的互動 * 5/9 下午 9:00 一對一討論預約(Messenger 預約,但授課教師未回應) * 5/10 下午 4:30 一對一討論預約(Messenger 預約,但授課教師未回應) * 5/16 下午 5:00 一對一討論 * 6/14 下午 3:30 一對一討論預約(Messenger 預約,但授課教師未回應) * 6/26 上午 12:10 一對一討論預約(Messenger 預約,但授課教師未回應) * 6/26 與授課教師用 e-mail 討論問題 評分: 我給自己 **9 分**。 雖然只有進行一次一對一討論,不過學生有發出許多邀請,表達自己想進行討論的積極性。並且在討論時有明確的告訴授課教師自己想執行的主題,且事先找好資料與閱讀必要的教材。 ## 所見所聞所感 以前完全沒有修過 Linux 核心設計等系統軟體開發相關課程的我,在選修此門課之初可謂吃盡了苦頭… 每到隔週,隨著琳瑯滿目沒聽/學過的新教材的出現,我總會很焦慮地需要追著新進度跑,明明上「幾週」的知識都還未理解完全;上「幾週」的作業甚至也未完成。「要直面自己的缺點」是教授在課程首週強調的觀念,然而,我的作法似乎背道而馳,逃避了它。或許選修此課程的我,初期也有等同的決心想要精進、提升自己對系統軟體方面的素養;然而,第一份作業、每週教材量及「建議花費於本課程的時間」公布後,我徹底懵了-這會是我修過最硬的課。 在 Homework5 閱讀〈因為自動飲料機而延畢的那一年〉文章-作者在研發自動飲料機的每個環節,總是步步為營,模組化每步的「當前目標」,針對該目標再反覆執行「假設-實驗-改進-解決」等迴圈,結合其他夥伴的專業分工,使團隊凝聚且讓進度推進。比如軟體設計方面,作者就列出了好幾個當時遇到的問題,並「一個一個做實驗來印證些想法」;細節上也絕不馬虎。此謀定後動並追根究柢的精神,我想,才是現階段的我該學習模仿的。我認為我在學習態度上「遠有進步空間」,他人在為「無成果收益」的專案焦頭爛額,甚至延畢一年時;我卻只專心在「如何畢業」、作業能否拿高分並「粗淺」交代等對自己完全不負責任的行為,好奇自己還要落魄多久之餘,也思考真的該振作了。引用自作者的文章-「機器現在能做到的每一件事,都是用一次次試誤換來的取捨。」,而不試錯的我,又如何能成大業、做大事呢? 針對本學期「Linux 核心實作」課程,學生實在受益匪淺-針對 C 語言及 Linux 核心相關技術之各種詳細教材、頻率高且深度不淺的每周線上測驗、扎實且需要花費很多時間實現的各項作業;最後,還有與授課教師、別的修課同學互動,相互砥礪並觀摩學習的機會。此課程是一多方面能力、軟硬皆施的「訓練營」,除了最基本的程式技巧、Linux 核心知識;課程中也特別強調「漢語表達」、「如何溝通」與「課程互動」等層面的能力培養,也呼應到人說:「軟體工程師不光只要會寫程式,懂得溝通也是關鍵!」的精神。 碩二甚至出社會後,學生認為自己仍會回頭翻閱 Jserv 的課程教材,針對程式邏輯作更進一步的強化,更有可能利於職場上的使用。 評分: 我給自己 **9 分**。 ## 研究生發信時間 * 二月份學習回顧 (2024/03/01 下午 3:05): 這學期選修了黃敬群老師的「Linux 核心實作」課程,儘管研究主題與此無關,但學到許多有價值的知識。課程要求撰寫清晰的 git commit message 和接受程式碼審查,提升了我寫程式的品質與溝通效率。透過作業練習了 pointer to pointer 等技術,理解了底層架構的重要性。閱讀並實作 Linux 核心程式碼後,希望在未來研究中應用所學,提高最終成果的品質。 * 三月份學習回顧 (2024/04/06 下午 8:28): 與授課教師的 code review 互動,讓我深刻認識到自身的不足和需要改進的地方。課程中學習到的講話節奏、精準表達和有效回應問題的方法,對未來的面試非常有幫助。老師布置的作業與未來可能接觸的知識相關,並可能在面試中被詢問,這使我更加重視提升自己的能力。我深刻體會到「品質是價值與尊嚴的起點」這句話的意義。 * 四月份學習回顧 (2024/05/11 下午 5:32): 修習了半個學期的「Linux 核心實作」課程,我從授課教師提供的教材中學到了很多知識,不僅包括 Linux 核心的並行程式設計,也複習了 C 語言的底層邏輯,嘗試用更精簡的程式碼實現功能。授課教師強調,做出成果後,要通過比較和證明自己的方法比其他人更好,才能說服別人使用我們的作品,就像寫論文一樣,需要使用工具計算程式碼的各項指標。目前,我正籌備期末專題,希望在有限的時間內為社會做出一點程式碼貢獻。 * 五月份學習回顧 (2024/06/30 下午 5:14): 本學期的「Linux 核心實作」課程即將結束,我從中學到了許多專業知識和處事態度。授課教師強調,若自己不想進步,努力再多也沒有用。在期末專題中,我實作了一個 Linux 傳輸層防火牆,雖然與研究主題無關,但讓我熟悉了未來工作中可能用到的工具和程式碼。透過閱讀第一手教材,我節省了找資料的時間,避免了錯誤資訊。感謝授課教師提供與業界主管互動的機會,這對未來找工作面試非常有幫助。 評分: 我給自己 **10 分**。 我認為我在寫學習回顧時非常的認真,並且把許多授課教師告訴我們的重點寫進心得中,我從中學到了如何更好地將自己所學到或是完成的作品展現給別人看,如果我們的進步只有自己看的見,那還有甚麼意義? ## 自我評量 (1 ~ 10) * GEOMEAN:$\sqrt[6]{4*9*9*9*9*10}=8.0015$ * 方案 B:$1+\lfloor 8.0015 \rfloor=9$