|
欢迎来到CI新手101系列教程活动,请大家到这里发表和讨论自己感兴趣的话题。我会对有代表性的话题进行整理,每周一篇。也欢迎各位CIer整理自己觉得有意义的话题,并发表出来供大家学习讨论。
声明:本系列文章仅代表我个人观点,不代表CI中国社区官方观点。本人才疏学浅,如有疏漏,敬请指教。
方法论远比技术本身更重要。所以在开始谈论技术前,本周我希望和大家讨论这个问题:如何在最短时间内突破CI新手阶段?欢迎大家在本贴追加讨论。
CI进阶五大准则:
1. 比较好的英文阅读水平。
计算机和互联网技术是一个舶来品。近些年来,虽然中文报纸经常报道诸如”中国的计算机技术有追赶国外顶尖水平的趋势“,但在很大程度上我都认为这只是YY一下而已。就如大家目前所见到的现实一样,大部分优秀的互联网应用和技术仍然来自大洋彼岸。老祖宗说的”师夷长技以制夷“这一目标需要正在看帖子的你,在掌握好国外优秀和先进的技术之后,才能实现。
技术不分国界,但是语言分国界。拿CodeIgniter框架来说,虽然CI中国社区提供用户手册的中文翻译版本,但毕竟翻译中加入了译者自己的理解,加之英文水平的问题;在某些文档中可能存在翻译的误差和出入。所以,如果你希望了解来自框架开发者的真实原意,不妨从现在开始阅读一些英文文档,使用英语和开发者直接交流。
如果你感觉自己的英文功底不够好,从现在开始尝试看看Codeigniter手册的英文原版吧。
从现在开始,永远都不晚。It's never too old to learn!
最后介绍国外近些年来上升势头非常明显的web技术(教程)类社区:
2. 比较好的PHP基础语言功底
我曾多次对身边没有编程基础,却希望使用某个框架进行开发的朋友说:在没有较长时间接触这个编程语言(比如PHP)的前提下,请不要轻易尝试某个框架。从技术修养角度来说,它很有可能将你带入歧途。
这是框架所带来的一个潜在弊病。很多人误以为,学会了一个框架的初步使用,就等于学会了一门编程语言(这在RoR和Ruby的关系上体现得非常明显)。但真是这样吗?你能用CI在20分钟做出一个”博客",但你真的了解PHP相对底层的运行机制吗?比如下面这几个:
- 你知道PHP的垃圾回收机制(Garbage Collection)机制是怎样的吗?
- 你理解pass by value和pass by reference的区别吗?
- 你知道php也可以用来做daemon程序(守护程序)吗?
- 你知道什么是单入口web程序吗?它的优缺点各是什么?
如果你需要在不太了解PHP的情况下,使用CI开发应用程序,那么请一定在身边常备两件各位版主曾在本版不厌其烦回答的万金油武器:PHP手册和CI用户手册。对于PHP手册我这里多说一句,除了经常翻看自己不熟悉的函数说明之外,你不妨可以留意下每个函数页面下方的用户留言(user contributed notes)。这些留言均是关于某个函数的特别补充和使用上的注意事项。
比如这里一个用户总结了几种不适合在php使用mysql长链接的情况:http://www.php.net/manual/en/function.mysql-pconnect.php#85670
3. 学会自己解决问题
各位CIer在CI新手板块提出的问题,我大概可以分成两类:一类问题是因为不熟悉PHP所造成的(例子);另一类是因为不熟悉CI手册造成的(例子)。由于这个原因,我们的新手板块存在一个很有趣的现象,帮助解决问题的热心CIer和斑斑们手上都有一个杀手锏:认真看手册(这也是著名RTFM的由来)。
做工程技术就是不断的在和问题做斗争——问题不断的出现,需要我们不断的解决。解决各种问题都需要你胆大心细:碰到问题时,你应该首先尝试自行解决;无法解决时,需要阅读相关手册资料;最后才是向社区救助。否则,很多时候碰到太多RTFM问题,众多CIer是会拒绝回答的。毕竟大家都是凭兴趣和爱好聚集在一起,时间有限精力有限。
4. 学会使用版本控制工具
也许有同学会置疑:如果我一个人兼任某个网站的CEO/COO/CTO/程序开发和设计师,还需要用诸如SVN,Git和mecurial这样的版本控制工具吗?
从我个人的经历来说是非常需要。通常来说,一个健壮的程序需要不断的重写和重构,我们可以很容易从版本控制工具里面看到程序的成长轨迹,也可以很方便的回滚到过去的某个状态。所以,从知识管理和项目管理这个角度来说,是否使用版本控制工具与参与这个项目的人数没有关系。
的确,学习使用一款版本控制工具本身需要时间成本,但是养成习惯,你的获益要比付出的精力多得多。
最后推荐几个业界常用的免费web版本控制工具:
Google Code(svn/mecurial): http://code.google.com/hosting/
Github(git): http://github.com/
Bitbucket (mercurial): https://bitbucket.org
另外,从上面这几个网站上我们还可以找到大量使用CI开发的app的实例,比如stblog和pyrocms。
5. 尝试帮助其它CIer解决问题
帮助别人解决问题,实际上是帮助自己形成自我一套解决问题方法论的过程。
6. 参与到开源项目当去
这可以说技术成长最快的方式。
你还有神马补充的?
更新记录:
|
评分
-
查看全部评分
|