※ 引述《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