※ 引述《paranoia5201 (社會黑暗、行路難)》之銘言:
: 自學程式語言一些時間,許多網友都說要趕快做個小專案展現基本能力,有利於求職。
: 「不知道怎麼做?就模仿別人的作品啊!」對於一個新手而言,該如何模仿?
: 例如我看到一個很酷的網站或app,想要仿造,沒有它的原始碼,是要怎麼模仿?
這個是有點大哉問,我先假設你沒有要做一些很離奇或特別的功能,我覺得你可以先試
著切割功能。
舉個很蠢的例子,假設你要模仿的是一個購物網站,你按下add to cart──
1. 你會做了。 → 恭喜你,那就去做
2. 你不會做。 → 恭喜你,又有學習的機會。
當這個功能你不了解怎麼實作時,最好的辦法是觀察它。
你把cookie刪除了,購物車就空了,你就知道購物車跟你的cookie絕對有關
你登入會員,就算把cookie刪除了購物車還是在,你就知道這個資訊是跟你的帳戶連結
add to cart的按鈕連結是不是有一定的規則?如果沒有,是不是javascript運作的?
這時你已經獲得許多關鍵字,即使該網站真正的作法可能不是這樣(例如他們作了優化
或cache機制),但是你還是朝完成實作邁進了一步。你有了關鍵字,就有搜尋的對象
可能你已經知道商品目錄是從資料庫產生的,那麼剩下的問題就是列出有哪些功能實
作是你已知還是未知的,像CRUD怎麼達成?如何維持會員登錄狀態?如何作social login
當你已知的做完了,未知的學會也做出來了,那就幾乎是模仿完成了
當然,這些都是比較普通的業務邏輯,我猜想你所說的"很酷的網站"可能有兩種
1. 介面特效很酷
2. 功能很酷
介面特效有些是美術負責的,當然工程師也可以透過procedural的形式產生(例如粒子)
但不管如何你都必須要了解該功能的執行平台到底是在哪,如果是在伺服器那你大概沒
機會,如果是執行檔你還是能看出蛛絲馬跡,例如這個app用到哪些lib、這個exe執行的
時候需要哪些dynamic library,這些都是有機會查到的,重點是你對執行環境熟不熟
你要研究網頁很好,chrome熟不熟?會不會使用console輔助你調查?
你要研究android app很好,apk會不會拆?有沒有對應的開發環境?
有linux或java的背景知識嗎?
你要做遊戲很好,你知道你要模仿的對象是用unreal還是unity嗎?
你知道繪圖原理、聲音如何撥放嗎?
在該作業系統或開發環境下,有哪些系統、工具或library可以運用,也是你可以調查的
所以說,有的時候能不能推測/猜出對方的實作方法,在於你的背景知識足不足夠
如果你說的很酷的app是有一些獨到的功能,那就是屬於學術的範疇,可能要翻論文
-
其實你英文好去stackoverflow發問「這功能是怎麼做出來的」也是可以問到XD