User/tim37021
自我介紹
我是成功大學資訊工程學系105級乙班的許友綸。除了寫程式外,興趣是看電影、唱歌,和打羽球。國小開始學程式,第一個語言是VB6,再來是C和Delphi、PHP等等,從國中開始一直對Security有興趣,參加過一次HITCON,後來因為不敢跟爸爸要錢就沒去了… 高中專注於網站安全的部分,曾經為一些網站檢測漏洞。不過資訊安全這塊一陣次沒碰要花很多時間補回來=口=至於為什麼會對資訊安全有興趣呢?曾經我一直寫著我想寫的程式,很多遊戲和小工具之類的,有次寫了一個檔案密碼鎖,發上去之後40分鐘後被一位叫john(馬來西亞人,目前在台科大)的網友破解,他隨後發了一個示範如何寫檔案密碼鎖,是加殼的方式在PE中新增區段,這讓我開始注意到PE結構和記憶體映射。他當時每個禮拜周末有空會傳授我逆向工程的技巧,也讓我正式踏入資訊安全領域,我至今還是很感謝他。
一直只是C語言使用者,直到大學無意間翻開一本KN King C Programming Language A Modern Approach 2/e,才發現真的只是會用,跟精通完全兩回事,jserv常強調了解C語言的語意,我想在那時候開始我才有深刻的體會吧直到現在都還在持續摸索,C99後的新語法從書上看完有些到現在才第一次用(比如compound literal),不過下學期的C++就不敢說自己學得很好了,雖然C++ Primer 5/e看了八成,語法是會,卻跟寫得好完全不同。預計暑假會買一些Design Pattern之類的書
修課心得
一堂課的好壞不是看輕鬆不輕鬆,而是學不學得到東西。聽郭致軒學長推薦這堂課而且又是jserv講課,就鼓起勇氣來選了。原本有打算這學期要把整本資料結構念完,因此剛聽完第一堂的時候覺得有點硬,不知道這學期能不能勝任,因為身邊同學都是一個禮拜兩三天的課而已,而我卻還有很多主修。在第一次作業派下來之際,原本考慮退選,幸好當時有去找jserv談過,她說服我繼續修課。 在前幾次作業獲益良多,雖然說都是修改別人的CODE,第一次rtenv使我親眼看到以前只能在書上看到的作業系統理論的實作,第一次作業可能嚇壞不少人,也可能老師要趕走慕名而來的人。但是其實只要有心還是能抽絲剝繭慢慢了解,甚至後來發現越來越多這個作業系統的問題,慢慢地有能力去改他。第二個作業是GDB和semihosting,尤其是GDB的使用,我第一次知道GDB能利用TCP連線去遠端除錯,有了gdb的幫助,回去看rtenv的時候顯得如虎添翼。接著是freertos,這讓我們了解較大型RTOS的開發架構還有Linker Script的使用,未來我的project也可能會採用這套。最後就是Polling/Interrupt和inline ASM,以前寫code會過到inline asm,因此這次作業比較輕鬆,不過這次不是在x86不是在x86_64,是在arm cortex-m3架構下的thumb-2指令集,這是我第一次在RISC指令集下寫ASM,不過這次作業沒有讓我體會到RISC和CISC的差別@@ 至於Interrupt部分我就沒有做太多研究,因為接近期中考週,之後會補回來,有心得再來修改 仔細想想每次的作業都是在培養之後Project所需要的能力,我想..如果有一次作業跟不上可能會崩盤。除了做Project,現在不知不覺好像能自己寫一套作業系統了,希望寒假能開始寫一套在STM32跑的RTOS.
目前Project想法
a.羽球發球機
目前市面上的羽球發球機動輒六七萬,並且十分不普及,因此連很多羽球重點學校都不見得有,我希望能製造一台價格平易近人的發球機。只不過機構的部分需要做很多功課了,平常羽球用丟的是丟不遠的,如果靠機器揮球拍打不問定性太大。
b.潛水艇
看到很多人做四軸在天上飛,那我來做個遙控潛水艇。 主要材料:遙控器,抽水馬達(用於升降),螺旋槳(用於行進)
c.(與本課無關)開發物理引擎
從國中開始我就著迷於遊戲的一些特效,由於物理的模擬使得遊戲更加突出,然而台灣似乎一直沒有自己獨力開發的物理引擎。我希望我的畢業專題能寫一套3D物理引擎,這項計畫從國中(2008年)開始,我發現光靠學校教的動量 碰撞 衝量等等的概念是完全不夠的,有些概念並不適合拿來做運算模型。希望有興趣的人能跟我一起討論
知名2D物理引擎
Box2D http://box2d.org/
3D物理引擎
PhysX http://www.nvidia.com.tw/object/physx_new_tw.html
Havok
開源的Bullet3D
特殊經歷
台灣論壇 程式設計 副版主 (2006年)
NPSC全國網際網路程式設計競賽 優勝 (2008)
NPSC全國網際網路程式設計競賽 優勝 (2009)
開始為線上網站檢測漏洞 (2010年~)