# 2018q3 Homework4 (assessment) contributed by < [`butastur-rtos`](https://github.com/butastur-rtos) > ###### tags: `homework4` `sysprog2018` `homework4` `assessment` * 回顧第 4 週課程內容 * 誠實面對自己 * 截止日:Oct 21, 2018 ## 回顧第 4 週課程內容 - [第 4 週測驗題(上)](https://hackmd.io/s/HyyxpJE5X) - [第 4 週測驗題(中)](https://hackmd.io/s/Syl6me49Q) - [第 4 週測驗題(下)](https://hackmd.io/s/By7Lwz4qm) ### [第 4 週測驗題(上)](https://hackmd.io/s/HyyxpJE5X) * [二補數](https://en.wikipedia.org/wiki/Two%27s_complement) * 延伸問題 #### [二補數](https://en.wikipedia.org/wiki/Two%27s_complement) * 阿貝爾群 (交換群) * 為什麼使用二補數而不用一補數? #### 測驗1 ```clike #include <stdint.h> int64_t abs64(int64_t x) { int64_t y = x A1 (A2 - 1); return (x A3 y) - y; } ``` #### 延伸問題 * 探討可能的 overflow/underflow 議題 * PRNG ```clike static uint64_t r = 0xdeadbeef int64_t rand64() { r ^= r >> 12; r ^= r << 25; r ^= r >> 27; return (int64_t) (r * 2685821657736338717); } ``` ### [第 4 週測驗題(中)](https://hackmd.io/s/Syl6me49Q) * TCO * [__builtin_return_address ](https://gcc.gnu.org/onlinedocs/gcc/Return-Address.html) #### [__builtin_return_address ](https://gcc.gnu.org/onlinedocs/gcc/Return-Address.html) ### [第 4 週測驗題(下)](https://hackmd.io/s/By7Lwz4qm) * Segmentation fault * Page fault handler ## 誠實面對自己 * 紀錄閱讀 [因為自動飲料機而延畢的那一年](http://opass.logdown.com/posts/1273243-the-story-of-auto-beverage-machine-1) 的啟發 * 學習本課程 4 周後的感想 ### 閱讀啟發 :::info 「...」裡的文字都是節錄自 [因為自動飲料機而延畢的那一年](http://opass.logdown.com/posts/1273243-the-story-of-auto-beverage-machine-1) ::: 「我們要解決更為具體的問題。」 > 從第一個月完成飲料杯落下的那一個段落,我看到了對一件事情要完成的熱血。~~<small>熱血在社會人士身上己經很難看到了,社會人士往往只看到薪水,缺少了對未知事物深索的勇氣,反而讓社會化加深了退化</small>~~ > > 喝了這麼多年的飲料,卻只有他動手作自動飲料機,好比這麼多人被蘋果打到頭,只有牛頓在想為什麼。 > [name=butastur-rtos][time=Tue, Oct 9, 2018 11:36 PM] 「Jserv 說你不能現在就放棄,要是現在就放棄的話,你這輩子日後遇到這種等級的困難,就只會想逃避而已。」 「你最大的問題在太害怕失敗了,既然都已經決定要延畢做飲料機了,那就要好好做,才不會辜負當初自己的期望。你可以計算要花多少錢,然後評估自己可以接受多少損失,畢業後慢慢還都好,要錢我也可以借你。但青春很貴,你也知道實習會發生什麼事,公司不會指派重要的工作給你,他們只會指派低風險的工作,你學習到的東西並不會比你現在多。你該學習的不是看到事情要完蛋了就去避免失敗,而是應該學習如何處理與承受失敗,你才能變得比以前更強大。」 > 這段讓我覺得,我以前浪費太多青春了,青春這麼貴,我卻這麼浪費掉了 > [name=butastur-rtos][time=Tue, Oct 9, 2018 11:34 PM] 「於是我便重複「加冰塊、倒冰塊、測量訊號、紀錄」,做了超過480次,[很無聊想看實驗紀錄的人可以點這裡](https://docs.google.com/spreadsheets/d/1ruXhPU8Qes2D1jWMzI9y3XotdmrdOe0fzNjlLPUnuHs/edit#gid=0)。 最後得出了一張漂亮的分佈圖,X軸是訊號大小,Y軸是落入秤上的冰塊實際重量,用最小平方法找出回歸直線之後,就可以給定訊號,預測最有可能的冰塊重量,而95%的冰塊誤差會落在30g之內,大約是不到兩顆冰塊的誤差,在可接受的範圍內。」 > 480 次啊,這段讓我想到一句話 [只有耐心圓滿完成簡單工作的人,才得以習得輕易完成困難工作的技巧。 -- Friedrich Schiller](https://docs.google.com/presentation/d/1Iuyh_ctWxBgV69S-qZej0oIVaufeoz5S_-rvehCab38/edit#slide=id.g16a7dd6c3a_0_199) > [name=butastur-rtos][time=Wed, Oct 10, 2018 12:06 AM] 「儘管世界如此殘酷,但人卻不一樣,當你真心想做到一件事,付出足夠的犧牲,這個世界會聽見並做出回應,周遭的人漸漸願意相信你、花時間幫助你,你的付出並不見得會有結果,但是加上許多人的幫助,可能一切就不一樣了。」 :::info * 我對現實世界的認知太少,光是自動飲料機就有這麼多問題待解決。 * 現實世界需要解決的問題太多,單純靠自己沒有辦法解決,需要結合不同專長的人,才能 do something。 ::: ### 修課感想 上了這 4 周的課程之後,我深刻的反省到一件事:==世界上最遙遠的距離不是生與死,而是我以為我讀過書,其實我沒讀過書==;世界上最遙遠的距離不是我不懂 C 語言,而是==我明明不會,我還以為我會==。 20 年前就存在的[ C99 規格書 ](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf)我卻到現在才開始在看,而以前碰到 Segmentation fault 卻不知道原因,用富堅義博的話來說,==就像裸身站在雪地裡還不知道為什麼冷一樣==。 漸漸地可以理解為什麼這個系列的課會說「[哥教的是guts](https://www.slideshare.net/jserv/embedded-2016spring)」,因為這堂課可以透過對底層知識的探索,培養了面對困難的勇氣還有接受挑戰的勇氣。如果不是上了這門課,我一定永遠不會知道==可以為了自己的應用寫自己的 malloc==。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up