版本 a7adca5e7e2f824c4d4321d72eab6a68eac4111d
Changes from a7adca5e7e2f824c4d4321d72eab6a68eac4111d to 5494b81d52f7019ec0b47c2a0618b8357bb05ab3
---
title: zoanana990 (陳昕佑)
categories: User
...
# 簡介
- 成功大學機械工程所 109 級 (2020 - 2022)
- Github: [zoanana990](https://github.com/zoanana990?tab=repositories)
# 作業與測驗
- [quiz1](https://hackmd.io/@zoanana990/linux2022-quiz1)
- [quiz2](https://hackmd.io/@zoanana990/linux2022-quiz2)
- [quiz3](https://hackmd.io/@zoanana990/linux2022-quiz3)
- [quiz4](https://hackmd.io/@zoanana990/linux2022-quiz4)
- [lab0-c](https://hackmd.io/@zoanana990/linux2022-lab0)
- [fibdrv](https://hackmd.io/@zoanana990/linux2022-fibdrv)
# 期末專題
- [khttpd](https://hackmd.io/@zoanana990/linux2022-ktcp)
[khttpd](https://hackmd.io/@zoanana990/linux2022-ktcp)
一對一討論紀錄:
- 2022 / 3 / 25 與老師討論 fibdrv 的改進方式
- 2022 / 5 / 23 與老師討論 khttpd 的目標
- 2022 / 5 / 31 與老師討論面試的準備方式
- 2022 / 3 / 25 與老師討論 fibdrv 的改進方式
- 2022 / 5 / 23 與老師討論 khttpd 的目標
- 2022 / 5 / 31 與老師討論面試的準備方式
實作成果:
- 使用 CMWQ 改寫 khttpd
- 實作 directory list,並且可以打開不同的檔案
- 使用 CMWQ 改寫 khttpd
- 實作 directory list,並且可以打開不同的檔案
# 心得
原本我並沒有寫過 C 語言的專案,在這個課程中從頭開始學。以下是我主要學到的東西:
學習方式:不要有事就 google 搜尋,因為找到的那些資料有可能過時,或是只找得到同溫層取暖的資料,不如去翻原始碼、規格書來的正確有效
寫程式的思維方式:
- 在撰寫程式時就應該設計好檢查的方法與意外處理的機制,例如: realloc 之前需要先將記憶體存好,如果失敗的話記得釋放原本的記憶體
- 相同的程式碼盡量使用巨集或是函式封裝
- 對於不同的編譯方式,使用巨集封裝,以降低程式碼改寫的成本,例如:
```
#ifdef __KERNEL__
...
#else
...
#endif
```
閱讀程式碼並且改寫的能力:在這堂課中需要大量閱讀程式碼,從小考的考題或是從作業中都可以看到。一般的課堂中,只需要「看懂」就好,但是其實這種「看懂」都是不懂;這堂課要求我們進行「改進」,這時候就真的是考驗我們到底懂不懂了,因為往往實作一個小東西,就會花我一個禮拜的時間,等做出來的那個時候我才確定我懂了。
漢語能力的表達:對於每個英文單字對應到的中文並不相同,老師有提醒過我的是 command (命令)與 instruction (指令) 的差異
總結:
很開心能上到這堂課,與老師一對一討論的過程中,老師每次都可以很快地找到我的問題,並且可以給我改進的建議,這種老師真的很難得。對比之下,本人的指導教授連我的碩士論文是什麼都不懂,甚至連我的名字都會叫錯。
# 自我評分:7
2 月~5 月的時候每天都在看老師的教材與寫作業,但是 6 月的時候因為實驗室的雜事與找工作導致我無法花很多時間在期末專題,因此我只給我 7 分。