--- title: blueskyson (林政傑) categories: User ... ## 簡介 - 成功大學 資訊工程系 111 級 (2018~2022) - github: [blueskyson](https://github.com/blueskyson) ## 2020 秋季班 自我評量 (a) 知道 x - y < 0 敘述為何不能寫為 x < y 嗎? (CS:APP 第 2 章) 需要考慮 overflow 的狀況,例如在 int32 下 2147483647 - (-1) < 0 ,但是 2147483647 > -1 (b) 知道 C 語言規格書如何解釋 ptr++ 和 *ptr++ 行為的差異嗎? 在第 40 頁中 *p++ 實際上會被視為 *(p++) ,也就是 *ptr++ 會回傳對 ptr 的取值,然後將 ptr 指向該型態的下個位址;而 ptr++ 則單純回傳 ptr 然後指向該型態的下個位址。 (s) 知道如何實作無失真資料壓縮嗎?你知道有哪些相關演算法? 1. wiki: 產生輸入資料的統計模型,利用這個統計模型將較常出現的資料用較短的位元序列表示,較不常出現的資料用較長的位元序列表示 2. Huffman coding, Run-Length coding, Golomb-Rice coding ### 作業 - lab0: [hackmd](https://hackmd.io/@blueskyson/Syc7wgGBv) - dict: [hackmd](https://hackmd.io/@blueskyson/SJr_5S58D) - render: [hackmd](https://hackmd.io/@blueskyson/ByJ6R9Zdw) ### 小考 - quiz1: [hackmd](https://hackmd.io/@blueskyson/BySB2oEBD) - quiz2: [hackmd](https://hackmd.io/@blueskyson/B1NLpOvrw) - quiz3: [hackmd](https://hackmd.io/@blueskyson/ryjFPLlLv) - quiz4: [hackmd](https://hackmd.io/@blueskyson/HJiOA7evv) - quiz5: [hackmd](https://hackmd.io/@blueskyson/BJOVmRUYv) ### 期末專題 以 exp-golomb code 說明 clz ,並改進 x-compressor - [hackmd](https://hackmd.io/@blueskyson/Skh0XRBhw), [exp-golomb code](https://github.com/blueskyson/Exponential-Golomb-coding) ## 2022 春季班 自我評量 ### 作業/隨堂測驗 - lab0: [hackmd](https://hackmd.io/@blueskyson/linux2022-lab0) - fibdrv: [hackmd](https://hackmd.io/@blueskyson/linux2022-fibdrv) - ktcp: [ktcp](https://hackmd.io/@blueskyson/linux2022-kecho) - quiz1: [hackmd](https://hackmd.io/@blueskyson/linux2022quiz1) - quiz2: [hackmd](https://hackmd.io/@blueskyson/linux2022quiz2) ### 期末專題 探討從無到有打造 Linux 平台的高效能網頁伺服器,涵蓋是否該將伺服器實作於 Linux 核心內部、並行處理、I/O 模型、epoll、Reactor pattern,和 Web 伺服器在事件驅動架構的考量。 - [hackmd](https://hackmd.io/@blueskyson/linux2022-final-project), [github](https://github.com/blueskyson/sehttpd) ### 自我評量 (1 ~ 10) 我給自己 6 分。 在學期初做 lab0 實作 linked list 的 merge sort 過程中,學習到了查閱原始材料的重要性,其可以避免繞許多彎路,也不會被其他人的穿鑿附會所誤導,再來 trace code 時也要避免舉燭,而要參照 commit message 理解目標程式碼的目的,並搭配實驗去執行。在設計演算法的同時最好也針對硬體特性來優化,例如 linux 的 list_sort 為了減少 cache thrashing,引進了 2:1 balanced merge。前述這些經驗都幫助我在未來設計軟體時考慮到更多議題。 在學期中做 fibdrv 時,學習了 kernel module 的特性和相關議題,例如 kernel space 到 user space 資料複製的成本、讓記憶體配置能夠 deterministic、in-place,比較 Karatsuba 和 Schönhage–Strassen 乘法的差異。在 ktcp 的作業追蹤了 kernel module 載入的過程。 很可惜學期末一個月,因為個人能力不足,將大部分時間分配給另外兩門課,所以期末專題進度缺乏。