嗨,大家好!其實從蠻久以前就有耳聞鐵人賽,身邊也有一些朋友參加過了,本來想說去年要參加,但是計劃趕不上變化,忙著找工作腦袋就完全忘記這件事情了。xD
也因為去年錯過了,今年有比較充裕的時間做準備。我打算把開發中的個人專案的開發過程,用鐵人賽的方式做比較詳細的紀錄,也順便宣傳一下我的個人專案 xD。
※ 後記:把自己在做的東西或想法傳遞給他人真的會讓自己思考得更全面;有很多自己開發時沒有想到的問題,在寫文章的時候一一浮現。大家或許也可以透過寫作分享的方式把自己想要更精進的東西紀錄傳遞給他人,說不定會有意想不到的收穫!
在打字的時候會不自覺的一直用 “XD” 這個表情符號 xD。
因為鐵人賽只有 30 篇(這樣講好像很欠揍,30 篇需要很大的努力跟毅力,各位參賽者辛苦了,大家加油!),沒有辦法講什麼很高深的學問(我應該也沒辦法啦 xD)。
但是如果只講一個比較簡單的主題非常有可能我沒幾篇就會開始發散,才有辦法填充到 30 篇的長度。
因此我左思右想,稍微規劃了一下 30 天的篇幅,後來決定聚焦在無限畫布這個主題上面。
主要有以下幾個原因:
後記:我在寫完整個系列的文章之後有找到一個相對完整的教學網站,大家也可以去看一下 連結在這裡 不過這個是以 WebGPU 去繪製的。
我也是站在巨人的肩膀上前進的,從過往鐵人賽的文章中學習到很多,這次本著食人一口,報人一斗的精神想要回饋社群。(雖然我這個量可能沒有辦法到一斗啦,抖)
另外雖然我的組別是選 Modern Web 但那主要是因為我實作的平台是選在目前受眾相對比較多的 web 上面;不過無限畫布背後的實作原理應該也可以應用在別的程式語言與平台上。
只要理解無限畫布背後的運作,後面你想要 port 到其他地方應該容易許多,所以你不一定要熟悉網頁開發,如果你想要寫一個 Desktop App 你也可以從這個系列帶走一些東西。
小弟不才,雖然現在在公司是掛著前端工程師的職稱,但是跟很多前端工程師前輩們比起來應該差蠻多的。
在我剛轉職到軟體相關的工作時,我並沒有想像有一天我會成為一名前端工程師,甚至我有點排斥前端的工作。
是直到我開始做某些專案的時候,我發現其實很多好的主意都需要一個好的視覺化介面去跟使用者互動;在需要人機介面的專案時更是如此,我才開始慢慢願意去嘗試前端相關的軟體工作。目前正在前端的路上修煉中。
我是非本科系畢業的(先打一下預防針 xD),所以各位請不要對我在軟體工程方面的造詣有不切實際的期待 xD(應該本來就沒有了)
不過我大學的時候,秉持著不務正業的精神有照著資工輔系的學程去修課,雖然不能跟各位一樣飛上天,但應該也略懂略懂一點點。
但是寫錯的地方也請大家多多指教。
我不會說什麼 「數學只要會1+1就能夠懂」 這種不切實際的宣言,我必須很認真誠實的說,如果你很痛恨或是不熟悉向量計算或是三角函數,這個系列你可能會看的比較痛苦,你會覺得我為什麼要寫這些東西毒害你的眼睛跟腦袋。
如果你在看的當下,這個系列的最後一篇文章出了,你可以直接跳到最後面去撈成品,我把連結貼在這裡 (鐵人賽結束才會有連結喔!)。
至於數學方面的東西,我會儘量寫詳細一點,如果有不清楚的地方我也會視情況跟我的能力再補充多一點。
如果你自覺數學很差但是真的很想啃下去,那真的只能賽後輔導了(聽起來好像怪怪的)但我相信社群的大家都很熱心,如果發問的話,有看到的人也能夠解釋解釋的。(也非常有可能你的問題還是只有我在解釋xD)
數學不會就是不會,留下來的人,你可能還在疑惑什麼是無限畫布?或是你知道無限畫布是什麼然後你有興趣。不了解無限畫布的讀者,我在下一篇會稍微比較詳細介紹無限畫布是什麼,可以等明天的文章再決定你要不要一起踏上旅程~
至於有興趣的人,我不會讓你失望的!
不過不免俗還是列一些例子:
為了不讓大家有錯誤的期待,容許我來說明一下這個系列文不會寫到的事情。
我平常開發是使用 macOS,但是用到的開發工具都是跨平台的
npm run
跟 npm install
)在後續的文章裡面,我會把初始環境建立好然後把它上傳到 GitHub 上,讓大家如果有興趣的話都可以 clone 下來一起跟著做。
後續我們有用到 bundler 的時候,我不會在設定檔上面有太多著墨,所以 bundler、TypeScript、等等的額外的東西我都會先用好,大家只需要 clone 下來然後跟著指令做就好。
就是盡量把不是核心的東西都處理好,讓這個系列專注在無限畫布及其應用上面。
這個系列文除了原生的 Web API 以外不會用到其他的函式庫,所有的東西都會是用自己造輪子的概念。(認真說,全部自己實作雖然比較耗費時間,但是會有比較深刻的印象;以學習為目的來說是比較理想的做法,但學習完之後如果有好用的 library 就應該要去使用不要執著在自己的產物,我自己是還在這方面上面努力啦 xD)
那就讓我們開始吧!
明天啦,明天開始。