如何学习一种开发框架

技术(12)
毕业快两年,码农一枚,算不上一名标准的程序员,因为大多数编程都只会用,不知其为何这样实现,不知其完整架构。
之前一直做AS3,“混”得还行,积累了很多经验,能快速开发上层应用。但深入AVM、Flash Player运行原理,或渲染原理的积累几乎为零。刚转向做手机,cocos2d-x方向。在新手阶段,知道Lua的基本语法、table的特性和组织,cc2d-x基本显示对象原理,当前项目模式下模块编写方法。
已经呆了三周了,很想进入传统模块开发(特别是当大家都很忙,自己却不知道可以做些什么的时候),很着急,但导师刚才的一番话似乎点醒我,但具体怎么做我还是很茫然。
他说:他不希望我只是一个会写模块的程序员,他希望能接触这个领域完整的脉络,打好基础,最后成为能解决该领域内大多数问题(主程级别)的程序员,不要只把写模块作为目标,不要操之过急,要努力想想自己在这个领域究竟想获得什么?如果是他,他说他会花两个月时间什么代码也不写(夸张,一些验证性的demo肯定还是很有必要的),专注看代码,把这个领域有什么,为什么要这么设计等问题全都搞清楚,然后迅速进入开发。在我印象中,作为主程序,他确实是这么实践的,而且切换到新领域开发异常快。甚至举了例子:看了三周了,你了解手机应用程序怎么运行起来的吗?怎么从Java层调到C++层,再从C++调到Lua层的吗?怎么开始连接网络的?这些问题看似基础,但我都答不上来,就是基础问题没搞清楚。他不希望我只关注一两个方面,要多从架构的方面思考其基本原理。最后说了一句:你真的认为勤奋努力能实现一切吗?有没有觉得自己学习方法有问题?
是的,之后我突然产生了“我不会学习”想法。从哪里学习起,该学习哪些内容,我很茫然,但显然现在不该浪费时间,因为我已经浪费了三周了。短期、中期、长期该做什么,怎样制定合理的计划,怎么判断合理性,怎么辨别某个东西确定是我不知道的(而非我不知道我知不知道)等问题都困扰着我。接下来该学什么,显然我不该只是遵从导师的几个问题去探索,我需要从全局意义思考:如何学习一种开发框架。在此,询问知乎里的大神,跪求思路。
的定义来看,你已经是个程序员了。
我接触的许多程序员中,绝大多数都是知其然不知其所以然,做了AS好几年的,甚至连AVM是什么都不知道的太多了。许多程序员把快速开发出成品作为是工作的唯一目标,认为研究底层知识和周边技术是浪费时间。很多东西他们不是不能知道,而是不想知道。
更有甚者,学会了 gotoAndPlay 就敢说熟悉 Flash,会敲 ls 就敢说精通Linux。前几天有朋友发给我他膜拜了一日的逆天简历,上面洋洋洒洒写着汇编、C/C++、Linux网络编程、JAVA EE、Perl、Bash、Python、Windows驱动开发、单片机开发、HTML、CSS3、JavaScript、PHP、cocos2d-x、iOS开发、安卓开发……而且所有的项目的级别都是
我看完简历和朋友说:这位前后端桌面嵌入式系统驱动网页手机开发通吃的全栈神人10年里跳槽8次,从没在一个公司干满过2年,你敢用么?
======上面废话,不看也罢。
刚巧我也是从AS3转到了cocos2d-x,说说我的经验吧。
一、cocos2d-x 部分
1.1 技术选型
从第三个手游开始,我实在被Adobe的ANE和国内的小平台折腾得没了脾气,决定转到cocos2d-x。在选择哪种语言绑定的时候纠结了很久,最后力排众议选了 lua: cocos2d-x 2.x 的lua绑定做得并不好,于是我选择了
(后来,quick被触控收购)。
1.2 学习 C++
是不错的入门书籍,建议看第五版,我写过一篇
。学习期间建议画一些思维导图帮助理解和整理思路。例如这个(不完整):
1.3 学习DEMO和熟悉开发平台
编译 cocos2d-x 自带的 TestCPP 项目,全部跑一遍。熟悉 cocos2d-x API 的用法。记得用 生成文档,建议每个API的功能都浏览一遍。
有的同学可能更喜欢直接看源码,那当然更好。不过文档有一个好处就是能更直观地显示继承关系。
在学习DEMO的过程中,你必须熟悉自己开发平台的IDE,例如Windows上必须熟悉 Visual Studio,而OS X上必须熟悉xcode,Linux平台上就熟悉Eclipse+CDT吧。
注意,quick-cocos2d-x 是不支持Linux开发平台的。
更新:quick已经使用QT重写了player部分,但依然不支持Liunx平台。
1.4 了解引擎的文件夹结构
基于 cocos2d-x 源码生成的文档并不怎么详细,许多功能必须看源码。但这个阶段,我不建议纠结源码太深,倒是可以纠结一下 cocos2d-x 的文件夹结构,看看各个类放在什么地方,找一找常见的哪些宏和常量以及枚举定义在什么地方,这花不了多少时间,但能让你对cocos2d-x有更深刻的了解,同时给你很强的成就感。这种成就感冲淡了你面对大量源码时候的无力感,让你能够继续前行。
下面是我的分析:
1.5 重复上面的第3步:再次学习DEMO
这时候看DEMO可能会轻松不少,但是你会有更多的问题去纠结。例如多分辨率支持?例如坐标系统?例如绘图功能?例如层级管理系统?例如事件传递系统?等等等等……这时候可以去Google(注意不要用百毒和其他搜索引擎)找文档看了。我推荐一些我看过的不错的文档和博客:
许多博客都是极好的。红孩儿(后来加入了触控)写了许多源码分析,每一句源码都加了注释。虽然我不太认同他这种吃力不讨好的方法,但对于新手来说确实是有很大的帮助。
你能找到绝大部分问题的答案。当然,许多问题是针对 cocos2d 而非 cocos2d-x 的,不过用法相同,照看不误。许多优秀的文章都是基于 cocos2d 的,所以,不要介意,可以先花半天时间熟悉 OC 的语法,能看懂即可。
暂时不要买中文书。我曾经花3天时间看完了
,发现作者其实就是来赚稿费的。
忘了广告了,我的博客()也有一些cocos2d-x内容,欢迎来喷。
1.6. 熟悉工具集
现在你应该对周边工具感兴趣了。例如帧动画使用什么制作?BMFont使用什么制作?骨骼动画呢?plist文件怎么编辑?碎图用什么工具拼合?有些项目上,你有许多选择,也可能没得选。去Google吧,如果遇到选择上的问题,欢迎找我讨论。
二、 quick-cocos2d-x 部分
2.1 现在就到lua时间了
请认真读完
第一、二、三部分。第四部分可暂时不读。
1.2 熟悉 quick-cocos2d-x 的文件夹结构
相信有了上面 cocos2d-x 的基础,这个应该不难理解。
1.3 跑完 quick-cocos2d-x 自带的所有sample
在这期间,熟悉 framework 中的所有封装。可以参考
1.4 学习导出API给Lua使用
三、学习 OpenGL ES
熟悉Lua部分之后,作为一个有志于成为程序员的码农,依然要回到C/C++来,这里才是 cocos2d-x 的本质。
cocos2d-x 使用 OpenGL ES 进行渲染的,如果要对 cocos2d-x 的渲染层进行任何形式的扩展,你完全避不开 OpenGL ES。
既然逃不开,那就对TA说,请张开双腿,我要上。
3.1 阅读 OpenGL ES 2.0 Programming Guide
下面是这本书的官网,目前已经出了 OpenGL ES 3.0 版本,cocos2d-x 使用的是2.0。
这本书写得浅显易懂,非常适合新手。有位网友花3个月时间翻译了中文版,但还是建议你不要看了。
这里是 OpenGL ES 的
当然,你也可以买那本著名的 OpenGL 红宝书
来看,不过 OpenGL ES 相对与 OpenGL 来说还是有一些不同的,你要知道如何区分这些不同。
3.2 尝试理解 cocos2d-x 的渲染部分架构
相关的类我就不列出了,我正在酝酿一个这方面的系列文章准备发到博客上。如果写完了,我会在这里更新。
3.3 自己写一些滤镜、绘图功能的扩展
例如这个:
四、回归项目
到了这里,你可以开始你的项目了。虽然源码还没有读完,但相信整个架构都能理解了。在做项目的过程中,再去一点点读源码是比较快捷和我能够接受的方法,否则就太枯燥了。
你可以还需要选择一下cocos2d-x相关的工具。你可能听说过 CCB(cocosBuilder)和CCS(cocoStudio),尝试了解她们,再决定是否使用她们。
你已经有了AS3的基础,这样许多前端的概念和经验已经很丰富了。这些经验在cocos2d-x中同样适用。但是要注意的是,cocos2d-x不是AS3,不要试图用AS3的方法去使用cocos2d-x。
有位码农在从C#转到AS3的时候向我抱怨:为什么Flash Builder没有Visual Studio的这个功能那个功能?然后这位码农在从AS3转到Sublime Text(用于Lua编辑)的时候向我抱怨,为什么Sublime Text没有Flash Builder的这个功能那个功能?
上面是个笑话。
同时,为了解决一些cocos2d-x没有提供的功能,你必须去学习相关的知识。例如这个:。不过你现在已经有了基础,学习这些不是难事。
在有时间的时候,可认真读一下上面提到的《Lua程序设计(第2版) 》第四部分,了解Lua和C语言通信的方式,顺便看看cocos2d-x里面是怎么实现的。
另外,一些你需要的引擎中没有的功能,也可以顺手实现了开源出来(例如这个:),说不定你需要的东西正好是别人也需要的。
五、熟悉发布平台
既然是做手游,Android和iOS平台是逃不掉了。
你要熟悉Android和iOS平台的特点,熟悉JAVA在Android上的应用,熟悉Objective-C在iOS上的应用,熟悉Eclipse ADT和XCode(上面应该已经熟悉过了)。
你还要熟悉Google Play和AppStore的发布流程以及方针、政策,内购的接入、SDK的嵌入。
你要学习和各个接入平台的程序员、商务、前台小妹打交道(因为经常会找不到你要找的真正的负责该SDK的技术人员),你要能忍受国内小平台糟糕的文档、代码规范和逆天的编程方法。
终、没有终点
上面说的并不完整,应该遗漏了不少东西,但我只能说这么多了。因为我的经验也止于此。
祝你成功!
======下面废话,不看也罢。
感觉你的导师对你还是很负责的,话说我多么希望我有一个这样的导师在刚刚入行的时候随口点拨我几句啊!!!
现在我有时也会给同事一些建议,但愿他们真的听懂了。
我其实是一边赚钱一边学,一边带人一边学,一边学这个一边学那个,反正从来就没有专职学过。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:12149次
排名:千里之外
转载:40篇
(1)(1)(1)(1)(1)(18)(12)(1)(2)(4)(1)购买商品:
商品价格:
价格读取中
支付方式:
请扫码进行支付
请扫码进行支付
成功后会自动跳转,请勿在支付过程中关闭本窗口!
由百度云提供技术支持
&学院APP&&
扫描微信二维码精彩活动、课程更新抢先知
下载客户端,离线视频任您学
1.&准备工作,为自己的框架起个好名
2.&框架目录结构设置
3.&为什么要做一个框架主文件
4.&PHP也可以有拦截的概念
5.&.htaccess的妙用
6.&自己构思MVC模式(一):框架接口设计
7.&自己构思MVC模式(二):控制器
8.&自己构思MVC模式(三):外部暴露
9.&框架主函数库设计(一):web基础函数
10.&框架主函数库设计(二):业务基础函数
11.&数据库通用类引入:adodb
12.&写一个数据库通用调用类(一):如何快速加载一个Model
13.&写一个数据库通用调用类(二):事务
14.&支持sqlserver调用
15.&支持oralce调用
16.&PHP玩伪注入:虚拟类开发(一)
17.&PHP玩伪注入:虚拟类开发(二)
18.&PHP玩伪注入:虚拟类开发(三)
19.&根据虚拟类完善框架主接口
20.&做一个通用加密函数
21.&引入memcached做缓存
22.&引入bootstrap做UI框架
23.&mvc静态模板解析(一):单变量解析
24.&mvc静态模板解析(二):拦截输出内容
25.&mv静态模板解析(三):循环标签(上)
26.&mvc静态模板解析(四):循环标签(下)
27.&mvc静态模板解析(五):自定义模板函数(上)
28.&mvc静态模板解析(六):自定义模板函数(下)
29.&mvc静态模板解析(七):自定义条件判断
30.&mvc静态模板解析(一):拦截输出内容
31.&开始搭建后台框架架构
32.&插件化架构实现(上):接口
33.&插件化架构实现(中):模型
34.&插件化架构实现(下):具体实现
35.&自己插件的安装和MVC整合
36.&微信接口开发(一):扫盲篇
37.&微信接口开发(二):实现基本接口
38.&微信接口开发(三):接收消息
39.&微信接口开发(四):关键字回复(文字)
40.&微信接口开发(五):上传永久图片素材
41.&微信接口开发(六):如何获取用户发送过来的地理位置
42.&补充课时:bootstrap神奇的container布局
43.&补充课时:3分钟理解神马是栅格?并做出手机和pc同时适应的div
44.&补充课时:bootstrap速学用户登录样式:文本框和按钮
45.&补充课时:bootstrap最惊艳的功能之:表单
46.&补充课时:趣学bootstrap中的偏移(offset)
47.&补充课时:bootstrap中制作导航栏(一)
48.&补充课时:bootstrap中制作导航栏(二):导航栏上加logo和登录连接
49.&补充课时:bootstrap导航栏(三)你真的了解缩放时折叠的导航栏吗?
50.&补充课时:如何优雅的在导航栏上加一个搜索框
51.&补充课时:bootstrap如何在导航栏上优雅的处理错位换行
52.&补充课时:bootstrap任性的学习bootstrap模态框
53.&补充课时:让你的bootstrap轮播支持手势滑动
54.&补充课时:bootstrap字体图标以及用css来控制按钮文本
【课程类型】实战教学
【难度级别】高级
【适合人群】初级研发工程师
【课程介绍】 本课程把我们公司团队的自主研发一套PHP开发框架进行简化和适应性修改后,奉献给大家。并从思路、设计、编码和部署测试每个过程给大家详细讲解。
框架纯实战级,实用、简单、暴力。并支持插件化开发,功能还支持微信开发集成。
课程学完后,整个课件源代码就是一个完整的中型web前端开发框架。大家可以任意复制、学习、修改或占为己有
【课程目标】 本课程并不需要太多PHP功底。仅需会部署PHP+Apache+Mysql环境即可,能写基本的echo 语法。
通过本课程学习,帮助大家从实战角度提升自己的开发水平。从而为高薪之路打下第一笔基础。
如果是创业中的程序员也可以通过本课程快速进入自己产品的研发阶段。
优秀学员可以优先加入我的团队《程序员在囧途》,成为专职或兼职的队员。
【课程计划】 本课程预计48课时左右
第一阶段以架构、思路和设计为主
第二阶段完成一些数据层、MVC架构设计等等
第三阶段完成一些功能插件的开发,以贴合实战项目的需要
第四阶段:学员可以提出要求和建议,本课时支持大家“点菜加课时”(如具有通用和典型性的情况下)
本课时是用前面的时候快速构建一个用户登录功能。注意:大纲中的标题可能不对
本课时是开脑洞课程,教大家完成一个很奇特的权限实现做法。请忽略大纲标题
这是插件花开发的第一课时,后面还有2-3课时讲插件话开发。请以实际视频内容为准
瞬间秒懂微信开发原理。而不是拘泥于官方文档讲代码。也许你看了这一课就啥都明白了
拉拉浏览器,动动手指就能理解什么是布局以及流式布局
3分钟理解神马是栅格?并做出手机和pc同时适应的div
依然使用实际的登录表单,如果要调整位置,那么可以使用偏移,而千万不要自己去修改长度和宽度哦~~~~
1、在导航左侧栏上加logo2、在导航栏右边加上 注册和登录链接3、本课时主要是教大家怎么思考、怎么产生想法,然后才会知道怎么去官方文档中找到答案。
全部评价(9)
请问大家,课件在哪里下载!
喜欢老师讲课方式,讲解到位不啰嗦,喜欢
老师,请问哪里可以下载课件阿
十分经典的课程!就是名字起的太大众化了!呵呵!
up主这是要拖死火影和海贼吗?
怎么好久没更新了?
非常合适我的一个课程,老师讲课的方式也很喜欢,赞
沈老师,能不能把下面的课程视屏提前传上来啊,我想要快点学习玩
沈老师声音太有磁性了。内容非常好!期待沈老师的后面的课程。不建议您免费全部公开。
讲的比较详细,适合小白往上大牛往下的人来听。
课程逻辑性好,沈老师思维缜密,重点的地方详细,了解的地方一带而过。
最近在分析Discuz,对我的帮助很大,谢谢沈老师。
9课程211390学员
所属机构:(IT行业交流)
(IT行业交流)
(IT行业交流)
(IT行业交流)
(IT行业交流)
第三方登录:你应该如何来学习一个新的框架 - 开源中国社区
你应该如何来学习一个新的框架
英文原文:
Being a professional in the fast paced IT world we constantly have to learn something new.
In the beginning, you probably learn your first frameworks in a classroom setting with a professor or instructor working off of an established syllabus, but this pattern does not hold for long.&& For a variety of reasons, you eventually start learning on your own.
Always taking such structured classes gets to be expensive
Much of the material presented in such classes is often a rehash of stuff you already know
Sometimes you need to learn a new framework before structured classes are available
Quiet often the structured classes simply won’t fit into your schedule
其它翻译版本:1(点击译者名切换)
在这个高速发展的IT世界里想要成为专业人士,我们必须保持学习新技术。
刚开始,你可能在教室里学习了你的第一个由你的教授导师或指导员制定的既定教学大纲里的某个指定框架,但是这种模式持续不了多久。由于多种原因,你渐渐开始自己找框架学习。
获得那些结构良好化的类总是非常昂贵
这种类型的类中的大部分内容实质上通常是一些重复的东西,你早就已经知道它了
有时候,在能获得结构良好的类之前你需要学习一个新框架
普遍情况是这些结构的简化并不能排进你的计划,不适合
When we set out to teach ourselves a new framework or new technology or new language, etc we face a new set of challenges.
Where do I get quality information?
How do I filter out wild speculations from best speculations?
How do I tell if what I am reading is still relevant?
How do I translate a simplistic tutorial into something useful for the real world?
These questions and challenges are tough.&&& Depending on what you are trying to learn some of these challenges may be bigger than others.&&& Sometimes you even face the challenge of not finding any relevant content on your topics.&& Sometimes you may find an overwhelming amount of content and face a whole new set of challenges.
其它翻译版本:1(点击译者名切换)
当我们计划要自学一个新框架,或一门新技术,或一门新语言,等等时,我们面临一系列新的挑战.
到哪里获得有质量的信息?
怎样在大量信息中去伪存真?
怎么确定我正在阅读的仍然是与主题相关的?
我怎么把一个简单教程中传授的知识转换为现实世界有用的东西,怎样将理论付诸实践?
这些问题和挑战很有难度哦. & &根据你将要学习的内容这些挑战的难度也各有不同. & &有时你会面临在你学习的主题下找不到任何相关内容的挑战. & 而有时你会找到该领域庞大的知识内容,这同样是个全新的挑战.
One of the hottest new topics in web development right now is MVC.&& It is a substantial departure from Web Forms and many people face a certain amount of culture shock when the start the adventure.&& I started this adventure many years ago, and I am still enjoying the ride and occasionally getting lost in the weeds.
Several months ago, I started a new adventure with MVC.&& I began working with the folks at Simple Talk on .&& The goal here is to provide a tool to help people starting on the great adventure of learning MVC.
当前web开发领域中炙手可热的一个就是MVC. &它从实质上是WEB表单的分离,许多人开始MVC之旅会感受到带来的一定程度的思想冲击。我学习MVC是在多年以前了,而现在我仍然喜欢它,有时还痴迷于它。
几个月之前,我开始用MVC新弄一个项目,和一些本地人共同开发Simple Talk&&,这个网站的目标是提供一个工具来帮助其他人开始精彩的MVC学习之旅.
The SimplyWebDev site aims to be a guided tour making it easier& to find some of the best articles and blogs covering various topics about the MVC framework.&&& The goal is to help with the four challenges listed earlier.&& There are lots of articles out there.&&& Some are better than others.&& Some were relevant only to earlier version of the framework.&&& Some provide critical details that need to understood for any MVC application, and some are fairly arcane that will affect only a hand full of projects.
Now reading articles is only part of the quest.& We also need to play with working code.&& Working code is important because you get to start from a known good state.&& We like to step through the code with the debugger.&&& The debugger is very good at illuminating and explaining code.&&&& Also if you are like me, you learn by seeing how far you can twist it before it breaks.&& You really learn a lot by putting it all back together again.
SimplyWebDev的主旨是成为一个指南性的网站,大家可以在这个网站中比较容易地找到讨论MVC框架方面各种话题的最好的文章和博客。其目标就是为了帮助解决前文所列的四个挑战。该网站上面有大量的文章,但这些文章有的要好于其它的文章。其中有的文章讨论的是各种框架的比较早期的版本,有些为理解所有的MVC应用提供了所需关键性的信息,而有些文章相当晦涩,只涉及小部分的项目。
阅读文章只是学习任务中的一个部分。我们还需要把代码运行起来进行一些研究。可以运行起来的代码非常重要,因为你需要从一个已知的比较好的代码状态开始学起。我们喜欢在调试器中一行一行地执行代码。调试器对理解代码非常有帮助作用。你还可以象我一样,通过看看你能在将代码弄坏之前把它弄到多乱来进行学习。之后你再把代码弄回到正常状态,在这个过程中你可以学到很多东西。
So this is the next step, tying the great content together in the context of a working application.&& This will be quiet a challenge, but it should be interesting.
Hit the comments, let me know what you think of this new resource.&&& Are there articles that you think should be included?&&& Do you disagree with any of the supporting commentary?
Please let me know what you think!
所以这是接下来的步骤,在实际工作环境下开发应用,尝试将各种内容整合在一起. 这还是相当有难度的,但也将非常有趣.
在评论框中敲点什么吧,让我知道你你对于本文的看法。你认为还需要包含哪些文章呢? & 你有任何不同本文支持性评论的观点吗?
求你让我知道你是怎么想的!如何学习一个项目及项目的框架知识? - ITeye问答
现手头上有一完整的公司项目(J2EE项目),而又没事做,想学习一下项目。
怎样才能学习一个项目呢?
问题补充:Wind_ZhongGang 写道Debug,看源码
知道是看源码,我的意思是怎样着手?
启动项目,从项目的模块入手,个个功能如何实现
Debug,看源码
已解决问题
未解决问题}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信