Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 09caa78

Browse files
authored
Merge pull request #82 from Bashamega/gh-pages
New Website
2 parents 04c66b6 + 807624f commit 09caa78

16 files changed

+3714
-3631
lines changed

chapters/01-start-project.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@
3131

3232
如下是不同开源许可证的市场占有率及使用情况。
3333

34-
![License 使用情况](./img/permissive-vs-copylift-license-2.jpg)
34+
![License 使用情况](../img/permissive-vs-copylift-license-2.jpg)
3535

3636
又比如,在我们看到的一些外版书籍上,如果拥有代码。那么作者一般就会在前言或者类似的位置里,指明书中代码的版权所属。如:
3737

3838
> 也许你需要在自己的程序或文档中用到本书的代码,但除非大篇幅地使用,否则不必与我们联系取得授权。例如,用本书中的几段代码编写程序无需请求许可,blabla。
3939
4040
于是,选择一个合理的 LICENSE,就变成了一个有趣的话题。为此,笔者做了一个如何进行开源协议选型的流程图:
4141

42-
[![如何选择 License](./img/licenses.png)](https://github.com/phodal/licenses)
42+
[![如何选择 License](../img/licenses.png)](https://github.com/phodal/licenses)
4343

4444
简单地来说,这些 License 之间是一些权利的区别,如当你把代码放置到公有领域,就意味着任何人可以修改,并且不需要标明出注;可如果你想要别人标明出处及作者,你就需要 MIT 协议;而你希望别人闭源的话,那么你就需要 MPL 协议等等。
4545

chapters/02-github-fundamentals.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@ $git status
5656
5757
来看现在的状态,如下图是添加之前的:
5858
59-
![Before add](./img/before-add.png)
59+
![Before add](../img/before-add.png)
6060
6161
下面是添加之后 的
6262
63-
![After add](./img/after-add.png)
63+
![After add](../img/after-add.png)
6464
6565
可以看到状态的变化是从黄色到绿色,即 unstage 到 add。
6666
@@ -111,11 +111,11 @@ jQuery[^jQuery] 在发布版本``2.1.3``,一共有 152 个 commit。我们可
111111
112112
接着,我们试试在上面创建一个项目:
113113
114-
![GitHub Roam](./img/github-roam-create.jpg)
114+
![GitHub Roam](../img/github-roam-create.jpg)
115115
116116
就会有下面的提醒:
117117
118-
![GitHub Roam](./img/project-init.jpg)
118+
![GitHub Roam](../img/project-init.jpg)
119119
120120
它提供多种方式的创建方法:
121121
@@ -208,10 +208,10 @@ CLA 即 Contributor License Agreement,在为一些大的组织、机构提交
208208
209209
以下是我为 Google 提交的一个 PR
210210
211-
![Google CLA](./img/google-cla.png)
211+
![Google CLA](../img/google-cla.png)
212212
213213
以及 Eclipse 的一个 PR
214214
215-
![Eclipse CLA](./img/eclipse-cla.png)
215+
![Eclipse CLA](../img/eclipse-cla.png)
216216
217217
他们都要求我签署 CLA。

chapters/05-create-project-documents.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@
99

1010
通常这个会在项目的最上方会有一个项目的简介,如下图所示:
1111

12-
![GitHub Project Introduction](./img/github-intro.png)
12+
![GitHub Project Introduction](../img/github-intro.png)
1313

1414
## README
1515

1616
README 通常会显示在 GitHub 项目的下面,如下图所示:
1717

18-
![GitHub README](./img/readme-example.png)
18+
![GitHub README](../img/readme-example.png)
1919

2020
通常一个好的 README 会让你立马对项目产生兴趣。
2121

2222
如下面的内容是 React 项目的简介:
2323

24-
![React README](./img/react-intro.png)
24+
![React README](../img/react-intro.png)
2525

2626
下面的内容写清楚了他们的用途:
2727

chapters/06-refactor-project.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ public class replaceTemp {
335335
336336
选中 ``basePrice`` 很愉快地拿鼠标点上面的重构
337337
338-
![Replace Temp With Query](./img/replace.jpg)
338+
![Replace Temp With Query](../img/replace.jpg)
339339
340340
便会返回
341341

chapters/08-github-marketing.md

+11-11
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Vue 不是因为好用,而一下子火了。这一点我印象特别深,当
3333

3434
除此,还有一种可能是,你的 ID 不够 fancy,即你在社区的影响上比较少。此时,就需要**一点点慢慢积累人气**了。当你积累了一些人气,你就能和松本行弘一样,在创建 mRuby 的时候就有 1000+ 的 Star。并且,在社区上还有一些相关的文章介绍,各个头条也由他的粉丝发了上去。如,一年多以前,我创建了 [mole](https://github.com/phodal/mole) 项目。
3535

36-
![Mole](./img/mole.png)
36+
![Mole](../img/mole.png)
3737

3838
当时,是为了给自己做一个基于 GitHub 云笔记的工具,在完成度到一定程度的时候。我在我的微信公从号上发了相关的介绍,第二天就有 100+ 的 Star 了,还接收到一些鼓舞的话语。对应于国内则有:
3939

@@ -60,7 +60,7 @@ Vue 不是因为好用,而一下子火了。这一点我印象特别深,当
6060

6161
GitHub 的 Description 是我们在 Hacking News、GitHub Trneding 等等,第一时间看到的介绍。也是我们能快速介绍给别人的东西,如下图所示:
6262

63-
![GitHub Trending](./img/github-trending-example.png)
63+
![GitHub Trending](../img/github-trending-example.png)
6464

6565
这一句话,必须简单明了也介绍,它是干什么的。
6666

@@ -78,15 +78,15 @@ Vue 则是:A progressive, incrementally-adoptable JavaScript framework for bui
7878

7979
> Most machines on internet communicate with each other via TCP/IP. However TCP/IP only guarantees reliable data transmissions, we need to abstract more to build services:
8080
81-
![RPC 开源项目](./img/rpc-example.png)
81+
![RPC 开源项目](../img/rpc-example.png)
8282

8383
以上便是这个项目能解决的问题,不过这个项目能解决的问题倒是比较长,哈哈哈。
8484

8585
### 它有什么特性
8686

8787
当我们有 A、B、C 几个不同的框架的时候,作为一个开发人员,就需要对比他们的特性。如下是 Go 语言实现的 MQTT 示例:
8888

89-
![GO MQTT 示例](./img/go-mqtt.png)
89+
![GO MQTT 示例](../img/go-mqtt.png)
9090

9191
这个项目只支持的 Qos 级别为 0。如果我们需要的级别是 1,那么就不能用这个项目了。
9292

@@ -101,7 +101,7 @@ numbers, objects, strings, etc. Lodash’s modular methods are great for:
101101

102102
你会怎么写?脸皮够厚的话,可以直接写一下,与其它项目的对比,blabla:
103103

104-
![对比其它项目](./img/comparison.png)
104+
![对比其它项目](../img/comparison.png)
105105

106106
当然了,这种事不能太过,要不然会招来一堆黑。
107107

@@ -131,7 +131,7 @@ app.listen(3000);
131131

132132
好在这里的安装工作只有两步,而不是:
133133

134-
![Lan 安装过程](./img/lan-example.png)
134+
![Lan 安装过程](../img/lan-example.png)
135135

136136
对于那些需要复杂的安装过程的软件,应该简化安装过程,如提供 Docker 镜像,或者直接提供一个可运行的 Demo 环境。以免用户在看完 README 之后,直接放弃了使用该库。
137137

@@ -142,7 +142,7 @@ app.listen(3000);
142142

143143
由于,之前在某一个项目,经历过一个第三方 API 文档的大坑——文档中只罗列了 API 的用法。如下 Intellij Idea 生成的结构图:
144144

145-
![API 示例](./img/api-examples.png)
145+
![API 示例](../img/api-examples.png)
146146

147147
文档中上,罗列了每个函数,以及每个函数需要的参数。我使用 Intellij Idea 直接反编译 jar 包,看到的信息都比文档多多了。文档上,没有任务示例,甚至连怎么初始化这个库的代码都没有。
148148

@@ -152,15 +152,15 @@ WTF!
152152

153153
对于一个复杂的开源项目来说,文档上要写明安装、编译、配置等等的过程。如下图所示:
154154

155-
![Python Social Auth 文档](./img/python-social-auth-example.png)
155+
![Python Social Auth 文档](../img/python-social-auth-example.png)
156156

157157
并且在我们发布包的时候,就要不断地去重复这个过程——如果你使用了自动化测试,那么这个过程便自动完成了。
158158

159159
如果我们的项目使用起来相当的简单,那么我们就可以只写一些示例代码即可。
160160

161161
并且,我们可以将文档直接入到代码里。它可以有效地减少文档不同步,带来的一些问题。
162162

163-
![Lodash 示例](./img/lodash-code-example.png)
163+
![Lodash 示例](../img/lodash-code-example.png)
164164

165165
上图是使用了 JSDoc 的 Lodash 示例。
166166

@@ -172,7 +172,7 @@ WTF!
172172

173173
反正,除了一个 hello, world,你还要有各种场景下的示例:
174174

175-
![Redux](./img/redux-examples.png)
175+
![Redux](../img/redux-examples.png)
176176

177177
没有这么多示例,敢说自己是好用的开源项目?
178178

@@ -193,7 +193,7 @@ WTF!
193193

194194
这一点可以在 README,以及介绍上体现:
195195

196-
![Feel free to contribute!](./img/feel-free-to.png)
196+
![Feel free to contribute!](../img/feel-free-to.png)
197197

198198
哪怕只是一个错误字的 PR,那么你也可以 merge,啊哈哈~。然后,就有人帮你宣传了,『我给 xxx 项目一个 PR 了』。刚毕业的时候,我也是从这种类型的 PR 做起的~~
199199

chapters/10-git-tools.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Git 命令行增强
88

99
### [diff-so-fancy](https://github.com/so-fancy/diff-so-fancy)
1010

11-
![diff so fancy 截图](./img/git-diff-screenshot.png)
11+
![diff so fancy 截图](../img/git-diff-screenshot.png)
1212

1313
### [git-extras](https://github.com/tj/git-extras)
1414

@@ -66,11 +66,11 @@ SourceTree 方便用来查看一些非我写的项目,寻找其中的一些问
6666

6767
gitflow 分支合并、查看
6868

69-
![SourceTree 截图](./img/sourcetree.jpg)
69+
![SourceTree 截图](../img/sourcetree.jpg)
7070

7171
### GitHub Desktop
7272

73-
![GitHub Desktop](./img/github-desktop.jpg)
73+
![GitHub Desktop](../img/github-desktop.jpg)
7474

7575
Git 娱乐
7676
---
@@ -132,4 +132,4 @@ Set up your git name and email, this is important so that your commits can be id
132132

133133
### Gource
134134

135-
![Gource 历史](./img/gource.jpg)
135+
![Gource 历史](../img/gource.jpg)

chapters/11-analytics.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
最后效果图
1212

13-
![2014 01 01](./img/2014-01-01.png)
13+
![2014 01 01](../img/2014-01-01.png)
1414

1515
要解析的 JSON 文件位于``data/2014-01-01-0.json``,大小 6.6M,显然我们可能需要用每次只读一行的策略,这足以解释为什么诸如 sublime 打开的时候很慢,而现在我们只需要里面的 JSON 数据中的创建时间。。
1616

@@ -138,7 +138,7 @@ draw_date("data/2014-01-01-0.json")
138138

139139
继上篇之后,我们就可以分析用户的每周提交情况,以得出用户的真正的工具效率,每个程序员的工作时间可能是不一样的,如
140140

141-
![Phodal Huang's Report](./img/phodal-results.png)
141+
![Phodal Huang's Report](../img/phodal-results.png)
142142

143143
这是我的每周情况,显然如果把星期六移到前面的话,随着工作时间的增长,在 GitHub 上的使用在下降,作为一个
144144

@@ -150,7 +150,7 @@ draw_date("data/2014-01-01-0.json")
150150

151151
看一张分析后的结果
152152

153-
![Feb Results](./img/feb-results.png)
153+
![Feb Results](../img/feb-results.png)
154154

155155
结果正好与我的情况相反?似乎图上是这么说的,但是数据上是这样的情况。
156156

@@ -446,7 +446,7 @@ pipe.execute()
446446
447447
结果大致如下图所示:
448448
449-
![SMTWTFS](./img/smtwtfs.png)
449+
![SMTWTFS](../img/smtwtfs.png)
450450
451451
看看主要的事件是?
452452
@@ -456,7 +456,7 @@ pipe.execute()
456456
[[('PushEvent', 154.0), ('CreateEvent', 41.0), ('WatchEvent', 18.0), ('GollumEvent', 8.0), ('MemberEvent', 3.0), ('ForkEvent', 2.0), ('ReleaseEvent', 1.0)]]
457457
>>>
458458
459-
![Main Event](./img/main-events.png)
459+
![Main Event](../img/main-events.png)
460460
461461
蓝色的就是 push 事件,黄色的是 create 等等。
462462

chapters/13-read-code.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818

1919
在我阅读的前端库、Python 后台库的过程中,我们都是以造轮子为目的展开的。所以在最开始的时候,我需要一个可以工作,并且拥有我想要的功能的版本。
2020

21-
![it-works-cms.png](./img/it-works-cms.png)
21+
![it-works-cms.png](../img/it-works-cms.png)
2222

2323
紧接着,我就可以开始去实践这个版本中的一些功能,并理解他们是怎么工作的。再用 `git` 大法展开之前修改的内容,可以使用 IDE 自带的 Diff 工具:
2424

25-
![pycharm-diff.jpg](./img/pycharm-diff.jpg)
25+
![pycharm-diff.jpg](../img/pycharm-diff.jpg)
2626

2727
或者类似于 `SourceTree` 这样的工具,来查看修改的内容。
2828

@@ -33,7 +33,7 @@
3333

3434
我最早阅读的开源软件是 Linux,而下面则是 Linux 的 Release 过程:
3535

36-
![linux-history.png](./img/linux-history.png)
36+
![linux-history.png](../img/linux-history.png)
3737

3838
表格源自一本书叫《Linux内核0.11(0.95)完全注释》,简单地再介绍一下:
3939

@@ -61,25 +61,25 @@
6161

6262
一、先 Clone 它。
6363

64-
![clone-flask.png](./img/clone-flask.png)
64+
![clone-flask.png](../img/clone-flask.png)
6565

6666
二、从 Release 页面找到它的早期版本:
6767

68-
![flask.png](./img/flask.png)
68+
![flask.png](../img/flask.png)
6969

7070
三、 从上面拿到它的提交号 `8605cc3`,然后 checkout 到这次提交,查看功能。在这个版本里,一共有六百多行代码
7171

72-
![flask-0.1.png](./img/flask-0.1.png)
72+
![flask-0.1.png](../img/flask-0.1.png)
7373

7474
还是有点长
7575

7676
四、我们可以找到它的最早版本:
7777

78-
![flask-init.png](./img/flask-init.png)
78+
![flask-init.png](../img/flask-init.png)
7979

8080
然后查看它的 `flask.py` 文件,只有简单的三百多行,并且还包含一系列注释:
8181

82-
![flask-init.png](./img/flask-init.png)
82+
![flask-init.png](../img/flask-init.png)
8383

8484
五、接着,再回过头去阅读
8585

0 commit comments

Comments
 (0)