-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
434 lines (414 loc) · 28.8 KB
/
index.html
File metadata and controls
434 lines (414 loc) · 28.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
<!doctype html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>Tengfei's Work</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<header>
<hgroup>
<h1>Tengfei's Work log && All the computer knowledge of I know</h1>
<h2>这里是Tengfei的Github博客,记录了腾飞的所有职业相关的知识积累,您有任何想要更深了解的</h2>
</hgroup>
<nav>
<ul>
<li><a href="http://blog.qitengfei.com/" class="logo">Tengfei's Work Log</a></li>
<li class="pull-right"><a href="http://qiqi.me/" target="_blank">Blog</a></li>
<li class="pull-right"><a href="http://twitter.com/tengfeiqi" target="_blank">Twitter</a></li>
<li class="pull-right"><a href="http://weibo.com/tengfeijs" target="_blank">Weibo</a></li>
<li class="pull-right"><a href="http://t.qq.com/lamper_qi" target="_blank">QWeibo</a></li>
<li class="pull-right"><a href="https://www.facebook.com/qitengfeilove" target="_blank">Facebook</a></li>
<li class="pull-right"><a href="https://plus.google.com/100821353833570968941/about" target="_blank">G+</a></li>
<li class="pull-right"><a href="https://github.com/TengfeiQi" target="_blank">Github</a></li>
<li class="pull-right"><a href="http://www.quora.com/Tengfei-Qi" target="_blank">Quora</a></li>
<li class="pull-right"><a href="http://www.linkedin.com/profile/view?id=116210828" target="_blank">Linkedin</a></li>
<li class="pull-right"><a href="http://www.zhihu.com/people/qitengfei" target="_blank">Zhihu</a></li>
<li class="pull-right"><a href="https://vimeo.com/tengfei" target="_blank">Vimeo</a></li>
</ul>
</nav>
</header>
<section class="content">
<article>
<header class="article-head">
<h3>写给自己,做最好的自己</h3>
<span>Author:Tengfei</span>
<span>Date:2013-06-30</span>
<span>Categray: 致青春</span>
<div class="line"></div>
</header>
<p>
刚刚和丹姐、徜徉宝春杜鹏师兄他们吃完饭回到住处。一路上(包括去的路上)想了很多,想写点东西写给自己,做最好的自己。
</p>
<p>
算是又一个开始,刚刚过去的一个星期作为一个真正的社会人,从学校滚蛋成功。这种心理第一次体验。虽然算上实习,自己其实已经有整整一年的工作经历了。这一年收获了很多很多。无论是经历还是认识。但还是远远不够,无论是对互联网的认识,还是技术深度。想要成为怎样一个人,首先要明白自己心底最想做的事情,以及自己一辈子想做什么。而不是为了生计,去挣点工资糊口。到时候不会因为碌碌无为而悔恨不已。其实前几天从学校滚蛋的时候我的心里充满了不舍,和淡淡的悔恨。恨自己没能做的更好,其实这还远远没有达到我自己的预期。人就是这样一种动物,永远也得不到满足,就是在这种力量的趋势下去奋斗的。我这里所指的可以更好和薪水什么的没有任何关系,最讨厌别人是因为薪水评判一个人。鄙视!一个人骨子里是怎样的,他一直都是怎样的。这才是最关键的。我还是原来的我,可我已不是原来的我。
</p>
<p>
我就是我自己,不会为了任何人而改变。无论你有多么优秀,总会有人不喜欢你,也无论你怎么没用,总有会人把你当做手心里的宝。做最真实的自己。
</p>
<p>
去认识自己,认识世界。找到自己的方向,努力,再努力。认识自己可以通过性格测试什么的辅助(这个估计有人不太同意,不过没关系)。通过读书、交际认识世界。有一点影响深刻。大概一个月前,我认认真真看完了Google/IO/2013LarrayPage的演讲,看完之后有种感动的要哭的冲动。及时在哈尔滨的公交车上,当我想一些问题的时候脑子里总会回荡起Page的话,Page富有磁性,充满对这个世界浓浓的爱的语言感染了我。听完之后我只是觉得每个人都应该有这样一个理想,或者目标,自己来到这个世界,就应该为了让这个世界变的美好而做事。出于这个目的去做事的人最伟大。就像Page说的那样,农民是值得尊敬的,如果他真心想做农民,就想为这个世界生产更多更好的粮食。但是如果一个农民是不得已而做农民的,那就不好玩了。每个人都应该被尊重,被爱。很多公司把精力放在商业竞争等事情上面,而没有花精力在为这个世界做贡献上面。他讲出这句话的时候让我对他肃然起敬。虽然Google赚了很多很多很多的钱,但是Google改变了世界,今后还会改变。Google不是为了赚钱的目的而去的,这点让人特别的尊敬。昨天晚上还看到王垠老师的文章批评Google,说Google影响了人的价值观,在控制思想之类的。王垠老师说的也很有道理,一个人应该做自己,和自己服务的公司应该分开,人就是一个独立的个体。然而话说回来,又到刚开始的那句话,无论你有多好或者多不好都有人不喜欢你或者喜欢你。公司也是一样,无论多好多不好都有优点缺点。人无完人,公司更是,无论时代怎么变迁,这个世界不会出现一个完美的公司,完美的人。如果你觉得它不完美,你就去努力去让它(任何事物)完美,如果因为它的不完美而离去。也就不好玩了......
</p>
<p>
不过王垠老师的其他关于计算机科学的认知什么的非常认同,也非常佩服。
</p>
</article>
<article>
<header class="article-head">
<h3>光阴的故事</h3>
<span>Author:Tengfei</span>
<span>Date:2013-05-29</span>
<span>Categray: 致青春</span>
<div class="line"></div>
</header>
<p>
<video controls="" width="100%" name="media">
<source src="http://221.208.180.234/hc.yinyuetai.com/uploads/videos/common/897B013EB214FD4286DFCCA0FFAC692B.flv?sc=7b9fbc8baf33d170&br=781&ptp=mv&rd=yinyuetai.com" type="video/mp4"/>
</video>
</p>
</article>
<article>
<header class="article-head">
<h3>那些年画过的PSD</h3>
<span>Author:Tengfei</span>
<span>Date:2013-05-20</span>
<span>Categray: 设计</span>
<div class="line"></div>
</header>
<p>
<img class="lazy" src="img/loading-128.gif" data-src="upload/usth/index1.png" width="100%" alt="">
</p>
<p>
<img class="lazy" src="img/loading-128.gif" data-src="upload/usth/index2.png" width="100%" alt="">
</p>
<p>
<img class="lazy" src="img/loading-128.gif" data-src="upload/usth/index3.png" width="100%" alt="">
</p>
<p>
<img class="lazy" src="img/loading-128.gif" data-src="upload/usth/index4.png" width="100%" alt="">
</p>
<p>
<img class="lazy" src="img/loading-128.gif" data-src="upload/usth/index5.png" width="100%" alt="">
</p>
<p>
<img class="lazy" src="img/loading-128.gif" data-src="upload/usth/index6.png" width="100%" alt="">
</p>
<p>
<img class="lazy" src="img/loading-128.gif" data-src="upload/usth/index7.png" width="100%" alt="">
</p>
<p>
<img class="lazy" src="img/loading-128.gif" data-src="upload/usth/index8.png" width="100%" alt="">
</p>
</article>
<article>
<header class="article-head">
<h3>致青春——我这走过的四年</h3>
<span>Author:Tengfei</span>
<span>Date:2013-05-19</span>
<span>Categray: 心灵</span>
<div class="line"></div>
</header>
<h4>
为什么会有这段文字?
</h4>
<p>
4年前,我还是一个刚进大学的学生,不是我自己选的专业,阴差阳错的学了数学。结果半道上我学了计算机。
</p>
<p>
之后的故事很平淡,很多事情也都很偶然。
</p>
<p>
2012年的8月24日,我去了上海。
</p>
<p>
2013年1月1日,我去了北京。
</p>
<p>
去了北京,我才知道影响力是如此重要;去了北京,我才知道工程师不应该只是研究代码;去了北京 ,我才知道有观点并且表达出来是如此重要;其实之前从来不缺观点,缺的是让别人知道你的观点。不然这世界就会无视你的存在。
</p>
<p>
2013年的5月12号夜,我在火车上一口气读完了,《人人都是产品经理》。其实之前就知道产品经理是掌握一个产品灵魂的人。却不曾想过其实每个人都是产品经理,用产品经理的眼光看世界。曾几何时我曾用前端工程师的眼光看书法,并且还小小的总结了一下书法的那些个关键点。却也开心的不得了。
读完这本书,也萌生了自己想写一本书的想法。(这种想法又有时候真的很可笑,看人家在做什么,自己就想做什么),但其实不是这样的。一直想做,却不曾想一个未出茅庐的程序猿何以写得深刻。且不论深刻浅薄,人生就像一次旅行,灵魂和肉体的旅行。一直在路上难免会累,偶尔回回头,总想说点什么,对自己、对朋友。暂且用心的把自己的心路历程记录下来。给自己一个心灵的驿站。
</p>
<p>
如今却也返璞归真,直接用编辑器,写文字。文字放在静态页面。感觉如此的静。前两天Google Plus改版,受到启发,做了一个极简极简的主题。自己非常的喜欢,干净,宁静。都不忍心再添加任何的元素,就想干干净净的留一些文字在上面。
</p>
<h4>
从产品需求中想到的
</h4>
<p>
人类为什么有需求?
</p>
<p>
说一段书上有意思的话“‘食色性也’,‘食’是为了生存,保证个体的延续,‘色’是为了繁衍,保证物种的延续,这是生物(包括人)的本性,即最基本的需求”。
</p>
<p>
关于这个想法大家都能想到马斯洛的需求层次理论:
</p>
<p>
生理需求
</p>
<p>
安全需求
</p>
<p>
社交需求
</p>
<p>
尊重需求
</p>
<p>
自我实现需求
</p>
<p>
人活在地球上,为什么会有各种各样的而需求?就是因为生活中有太多令人不满意的事情。这些事情就导致了“理想与现实的差距”,为了削弱甚至消除这个“差距”,从而产生了需求。
</p>
</article>
<article>
<header class="article-head">
<h3>小结一点大学一路走过来的经验与学弟学妹们共勉</h3>
<span>Author:Tengfei</span>
<span>Date:2013-05-18</span>
<span>Categray: 心灵</span>
<div class="line"></div>
</header>
<p>
很荣幸吴老师给我这样机会,分享一点点关于找工作的经验。
</p>
<p>
其实首先要做的是找到自己真正感兴趣的事情。然后是看看喜欢的事情能否和自己的职业生涯相匹配。
</p>
<p>
其实大一的时候我很多的经历都放在了书法上面,我非常非常的喜欢这个中国古老的艺术。并且上天给了我还不错的造诣,在这方面。其实理想的职业就是自己做自己喜欢的事情,并且有人为愿意你做的事情买单。这样大家都快乐,这样的世界最和谐。后来放弃书法作为职业的选择是因为自古就没有这样一个职业,书法只是一些厉害的人的业余事情。
</p>
<p>
在大一快要结束的时候,我阴差阳错的进入了学校赵岩岩老师管理的“大学生多媒体课件开发中心”,刚进去的时候我什么都不会,甚至还不如看这些文字的你,那个时候我连下载一首歌曲都不会,更不要说其他。那个时候旁边的同学说话我都听不懂,各种专业词汇,不懂的我就百度,Google……
</p>
<p>
后来当自己做的第一个网站上线的时候,那个兴奋,虽然现在看来是个极其没有技术含量的东西。
</p>
<p>
大二的时候工作室的学长学姐们找工作,我们几个小的就跟着去工大听各种宣讲会,那个时候就听企业的要求,以及行业的趋势。那个时候我们还试水做笔试题之类的。印象最深的是2011年的十月份,我和工作室的同学在工大做的笔试题被新浪的一位工程师看中,邀请我们去聊聊,那个时候其实技能的积累还很浅,过去聊了之后收获颇多。正真知道了自己的差距在哪里。回到学校就学习新的技能……
</p>
<p>
等到了自己大四要找工作的时候,我却再也没有去宣讲会,也没有参加什么校园招聘,那个时候我已经在上海一家非常不错的公司(身边的同事都是惠普和SAP过来的)实习(其实他们没把我当实习生,当时是在做一个和保洁合作的项目)。后来因为有了更好的选择,我离开了上海。
</p>
<p>
以上简单的描述了一下之前的经历,经理这个东西还不太重要,每个人的经历都大同小异。最最关键的是怎样练自己的内功,这才是最重要的。
学会上网,不知道其他同学怎么样,反正我身边的同学(除了工作室的)几乎都不会上网(没有任何的恶意)。很多同学上网就知道去什么人人网 QQ空间之类的SNS,这个本无可厚非,多上上也是热爱生活的表现嘛。但是那其他的呢?还有想起来最最讨厌的,QQ空间里面大家时不时的分享“大学生应该***的100个网站”,这种标题党的垃圾内容却被很多人疯狂的转载着,那个背后是利益驱动的。
</p>
<p>
前不久周鸿祎在湖南卫视的节目里开玩笑说“你们都不用Google,真没文化……”当然开玩笑的,却道出了实在话。推荐一些个同学们不一定喜欢但我以为想要求知应该去上的网站。中国的互联网几乎全都是从美利坚Copy To China的。
</p>
<p>
<a href="http://www.zhihu.com/">知乎</a>——中国的<a href="http://www.quora.com/">Quora</a><br/>
<a href="http://www.linkedin.com/">linkedin</a>——全球性的求职网站<br/>
<a href="http://www.songshuhui.net/">科学松鼠会</a><br/>
<a href="http://www.douban.com/">豆瓣</a><br/>
<a href="http://www.github.com/">Github(程序员都在用的)</a><br/>
</p>
<p>
还有很多很多各个行业非常厉害的人的个人Blog,他们的观点,以及他们对业界的认识,以及未来发展的方向的把握。看了都会受益的。其实认识非常非常的重要。有一些书是能改变一个人的世界观的。例如《浪潮之巅》《关于书法的167个练习》,看完吴军博士的书就会清晰的了解美国信息产业历史以及未来信息产业的发展趋势。这个不限于做IT行业的同学,谁看谁知道。之前读过的一些还不错的书的<a href="http://book.douban.com/people/tengfeiqi/">列表</a>
</p>
<p>
最后关于找工作,其实就一句话,在大三之前,多去关注想要关注企业的招聘官网,都有详细的要求,那些要求都是最基本的要求。看看和自己对比对比自己那里不符合改变自己就可以。还有一点大家应该要知道职业的选择。如果按照这样做了,基本就不用在找工作的时候跑去招聘会了。在我看来直接在网络社区活动,或者直接联系公司负责招聘的主管要比去招聘会效率高出很多很多。都不用打印纸质简历。
</p>
<p>
最后如果有同学有任何其他问题想要问的,可以随时E-mail:Tengfei@qiqi.me
</p>
</article>
<article>
<header class="article-head">
<h3>怎样维护一个开源js库</h3>
<span>Author:Tengfei</span>
<span>Date:2013-05-15</span>
<span>Categray: 思维</span>
<div class="line"></div>
</header>
<blockquote>
原文链接:https://segment.io/blog/tips-for-maintaining-an-open-source-library/
作者:Calvin
翻译: <a href="https://plus.google.com/112377816818930264256/about">姚立</a> <a href="http://qiqi.me/about-me/">齐腾飞</a> <a href="https://plus.google.com/112958837604741273483/about">马磊</a>
</blockquote>
<p>
5个月前,我们通过Hacker News发布了一个叫做Analytics.js的小类库。几个小时后,它的点击率就爬升到第一。在短短的一天内,项目的星(star)由20个变为超过1000个。从中我们学到了大量的管理开源类库的经验,因此,我想和你们分享其中的一些小窍门。
</p>
<p>
一开始,我们对管理开源类库一无所知。我认为,我们中的任何一个人在这之前都没有过合并pull requests代码的经验。因此,我们必须快速学习相关的知识。
</p>
<p>
现在,Analytics.js已经有超过2000个星了,开源社区中有很多人贡献了很棒的代码。一路走来,我们学到了很多让pull requests保持高质量的经验,以及如何简化贡献者的开发流程。
</p>
<h4>1. 保持编码风格的统一</h4>
<p>
新的开发者将会从现有的代码库中学习如何为库增添新的功能,而这才是他们应该做的事情。所有的开发者都想按照代码库的规范去增加新的功能而不是他们自己的规范。你的主要工作就是使这种规范尽可能的简单。新的开发者将会从现有的代码库中学习如何为库增添新的功能,而这才是他们应该做的事情。所有的开发者都想按照代码库的规范去增加新的功能而不是他们自己的规范。作为一个开源项目的维护着主要工作就是使以上情况尽可能的简单。
</p>
<p>
当你的分支代码和核心代码表意含糊不清时无数的麻烦就来了,如果你在两个不同的地方用两种不同的方式做同一件事情,开发者怎么知道哪一种方式才是推荐的呢?答案是:他们不知道。
</p>
<p>
更糟糕的是由于你的编码风格不统一,开发者无从决定,那么也会编码不统一(按自己的偏好来)。
</p>
<p>
解决这个问题你需要花费很多的时间规范代码风格。作为一个准则,你不应该尝试在一个简单的开源库中用两种不同的方式。如果你一定要改变风格,那一定要迅速的在全球都改变。否则新人将无法区分你之前代码和现有代码的约定。
</p>
<p>
我们一开始用一种很差劲的方式处理这个问题,所有的代码在一个文件里面,函数没有一个良好的结构组织。(并且如果你检查我们的提交,就必须先理清代码)我们在设计代码规范统一上没有花时间,所以库里的代码编写风格混杂不堪。
</p>
<p>
当pull代码的时候我们每个人都与别人的代码发生冲突,因为每个人都修改了同一个文件,并且在他们想要插入新函数的地方加入自己的功能函数
</p>
<h4>2. 使用正确的方法,简单的方法</h4>
<p>
最初我们构建代码的方式,导致在合并 pull requests 的时候遇到了许多问题:换句话说,刚开始我们的代码就没有结构。我们做出的改善代码结构的比较大的改变之一是使用 Component。
</p>
<p>
我们喜欢 Component 因为它消除了编码风格不统一的问题,减少了代码库的规模。Component 使用 CommonJS,所以我们只需要在我们需要的地方,**引入**(require)我们需要的模块即可。所有的事情都简单明了,这就意味着我们的代码对于新人来说更容易跟进。这是代码库维护者的梦想。
</p>
<p>
在进行切换期间,我们写了一堆自己的组件来替换已经附在全局对象**analytics**上的通用函数。现在,组件可以在库的任何地方很简单的包含进来和使用,pull requesters 只是默认使用他们。
</p>
<p>
自从我们发布了正确的方法,并且使他更加清晰,pull requests 的代码质量获得了显著提升。
</p>
<p>
为了尽可能保持统一编码风格的延续,当有新的代码提交上来的时候,你必须积极主动。不要害怕给 pull requests 的代码添加注释,即使看起来只是一处很小的更正,也不要害怕拒绝不必要的可能会搞乱你的 API 的 requests。
</p>
<p>
必须牢记的是,同样要严格要求自己的代码。如果在添加新特性时,自己开小差,懒得统一编码风格,那么为什么项目的贡献者不可以开小差呢?总之。你的代码越干净,对于新手来说就有越多的好的示例学习。
</p>
<p>
如果说到不偷懒这个话题的话,那就……
</p>
<h4>
3. 写测试,并且连接到 Travis
</h4>
<p>
写非常好的测试覆盖无疑是加速开发最简洁而有效的方法。由于我们 一直 在提交更改,所以我们不能因为担心现有功能遭到破坏而浪费时间。我们写了 很多 的测试,同时得到了很多的收获:更快的开发、对我们的代码更有信心、对贡献者的代码更有信心,还有很多……
</p>
<p>
这也会吸引更多高质量的 pull requests!
</p>
<p>
当开发者临摹了我们库的编码风格,会把它延伸到测试中去。在添加相应的测试之前,我们是不会接收贡献者的代码。
</p>
<p>
好的一面是我们不必过多的强制执行。感谢Travis-CI,几乎所有的 pull requests 是经过完全测试过的,而这些测试都是参考了我们**已有的测试案例**。既然我们坚信我们已有的测试有很好的质量,自然,由此而衍生来的测试便有了一个更高的起点。
</p>
<p>
拥有一个 passing Travis 标记也会增加信任,表明你的库文件正在正确的轨道上运行并仍然在维护。更不用说同行让你感到压力来保持你的测试在好的状态(显而易见这是最难的部分)。
</p>
<h4>
4. 从第一天就开始版本管理
</h4>
<p>
良好的版本管理,就像测试一样,需要约定规范并很值得这么去做。当开发者遇到问题时就会马上去检查运行的是不是最新的版本。如果不是,他们会更新代码并解决这个bug。如果没有版本管理,你仍然会收到提交的 bug 甚至是你早已解决了的bug。
</p>
<p>
我们开始的时候,都完全不知道如何控制版本;我们的代码仓库基本上只是一堆提交。如果你频繁的上传更新,就会导致使用你的代码库的开发人员不必要的困扰。
</p>
<p>
一开始,你的版本控制需要如下三样东西:
</p>
<p>
A.一开始,你的版本控制需要如下三样东西:
</p>
<p>
B.添加版本号到源代码和 git 的标签中。
</p>
<p>
C.一个 History.md 来记录版本更改的日期和描述等信息。
</p>
<p>
拥有一个 changelog 对于开发人员跟踪 issues 很有必要。开发人员在任何时间发现了一个潜在的 bug,changelog就会成为开发人员第一个去查看并解决这个 bug 的地方。
</p>
<p>
给代码仓库添加标记也被证明是非常有用的。每个版本都有一个定义良好且已经稳定的代码的包。如果你正使用一个前端打包工具比如 Component或者Bower,你也能得到非常好的自动打包。
</p>
<p>
不要忘了把版本控制添加到你的源代码中去,放到使用它的开发人员能够接触的地方。因为当你在远程给别人 debug 的时候,就能快速的通过源代码来查看他们使用的版本来节省时间。
</p>
<p>
对了,还有使用semver。这是开源项目的标准。
</p>
<h4>
5. 添加Makefile文件——黑客的指导手册
</h4>
<p>
偷偷告诉你一个小秘密:我们几乎没有为那些想向这个类库贡献代码的人准备任何文档(这是另一个我们需要解决的问题)。但是我仍然很惊讶地发现,即使在没有任何构建或者测试手册的情况下,我们仍旧收到了很多的pull requests。
</p>
<p>
回过头来看下我们的代码库,那些新开发者是怎么知道如何构建脚本的呢?
</p>
<p>
正如我刚刚提到的,我们选择在Component上面构建流程。它远远领先我们老的构建流程,可惜并没有被广泛的接受(但是我们打赌终究会有那一天的)。
</p>
<p>
想象一下,大多数人之前并没有见过基于Component的代码库,我大胆猜测,他们是通过我们的Makefile文件学习的。make命令就是天然的入口点(译者注:make命令中的伪目标),从而了解整个新项目是怎样运行的。因此,它就成为既成事实的用户手册了。
</p>
<p>
我们在脚本中使用长标识(long flags),并且给每一个命令一个描述性的名称。因为使用Component构建我们的类库,我们可以首先参照他们的文档,然后再写自己的文档。一旦你理解了Component是如何工作的,你就会明白所有基于Component的代码库是如何构建的。
</p>
<p>
在不断 迭 代 代 码 的 过程中,我们做了很多工作来使我们的Makefile文件更加简洁明了。记住,你的构建和测试脚本也是你代码的一部分。它们也需要保持干净和可读性,因为它们是新来者最先接触到的东西。
</p>
<h4>
6. 不断迭代流程
</h4>
<p>
注意我所提到的所有技巧是如何精简流程的吗?这是因为维护一个流行项目必须如履薄冰,否则后果不堪设想。每当新的isuues出现时,你会不断地做小的修复工作,如果你不优化开发流程的话,你将会疲于奔波。
</p>
<p>
不仅如此,你的类库质量也会出现问题。如果没有一个好的构建系统、自动化测试和干净的代码库,修复小的bug就会像打扫家务一样繁琐,你需要花越来越多的时间去解决问题。当然没有人想要这样!
</p>
<p>
我们已经学到了很多管理像我们代码库这样大小的代码库的经验,但是面对管理一个真正大的项目时,我们还有很长的一段路需要走。管理一个大型的开源项目需要花费很多的功夫。随着代码量的增加,想要进行一次大的代码重构将会变得愈加困难。当越来越多的人依赖这个项目的时候,随之而来的pull requests也会开始增加。
</p>
<p>
我们还有一个些TODO事项,希望可以让管理Analytics.js更加容易:
</p>
<p>我们想要把测试文件拆开来以尽可能方便管理。目前而言,文件的大小有点超出可控范围了,这就意味着对新来的人来说,很难一次性记住所有的东西。</p>
<p>给贡献者提供更好的文档——听起来有些荒诞,我们竟然还没有做这件事。我们也很惊讶我们竟然能在没有文档的情况下处理所有的pull requests,因此,这是我们亟需要完成的。</p>
<p>我们自己也开始采用pull requests的方式修改代码,这样我们就有机会互相审核彼此提交的代码,而其他的贡献者也可以加入到我们的讨论中来。</p>
<p>
我们的很多策略都是沿袭了Node.js源码的管理策略,对于新的贡献者来说,它拥有很多很棒的指导方针。
</p>
<p>
每一个Node.js的提交都会首先被拉过来,在合并到主干之前都会经过核心贡献者的严格审核。每一个新的特性都会先在issues或者pull requests上讨论,所以不同的提议都会被考虑。Node的提交日志也非常清晰翔实。他们为新的贡献者准备了全面的指导手册,并且使用jslint做一个大致的代码风格检测。
</p>
<p>
金无足赤,没有一个项目工程是完美的。但是吸收这些第一手的经验教训,可以帮助我们更好地实践我们其他的类库。希望,这些小窍门同样对你有帮助!
</p>
<p>
你们有没有自己管理开源项目的经验教训或者在某些项目上做的非常的棒?如果有,我们将很荣幸能够听到这些经验。或者在Hacker News上把这些经验留言给我们。
</p>
</article>
</section>
<footer>
<p>Copyright © 2011 - 2013 QiQi.Me. All Rights Reserved Powered By Github.</p>
</footer>
<script src="js/base.js"></script>
<script>
(function($) {
var lazyloadImage = function(){
$('img.lazy').each(function(){
var distanceToTop = $(this).offset().top;
var scroll = $(window).scrollTop();
var windowHeight = $(window).height();
var isVisible = distanceToTop - scroll < windowHeight;
if (isVisible) {
$(this).attr('src', $(this).attr('data-src')).removeClass('lazy');
}
});
};
$(function(){
$(window).scroll(function() {
lazyloadImage();
});
});
lazyloadImage();
$('img').css({'margin-left':'48%'})
})(Tengfei);
</script>
</body>
</html>