diff --git a/chapters/01-prelude.md b/chapters/00-prelude.md
similarity index 100%
rename from chapters/01-prelude.md
rename to chapters/00-prelude.md
diff --git a/chapters/01-start-project.md b/chapters/01-start-project.md
new file mode 100644
index 0000000..7a9d30b
--- /dev/null
+++ b/chapters/01-start-project.md
@@ -0,0 +1,17 @@
+创建开源项目
+---
+
+
+取一个好的名字
+---
+
+
+挑选好 LICENSE
+---
+
+
+官方主页
+---
+
+GitHub Pages
+
diff --git a/chapters/04-create-project-documents.md b/chapters/03-create-project-documents.md
similarity index 99%
rename from chapters/04-create-project-documents.md
rename to chapters/03-create-project-documents.md
index 179bc8a..6acab04 100644
--- a/chapters/04-create-project-documents.md
+++ b/chapters/03-create-project-documents.md
@@ -1,4 +1,4 @@
-#创建项目文档
+# 创建项目文档
我们需要为我们的项目创建一个文档,通常我们可以将核心代码以外的东西都称为文档:
diff --git a/chapters/03-build-github-project.md b/chapters/04-build-github-project.md
similarity index 99%
rename from chapters/03-build-github-project.md
rename to chapters/04-build-github-project.md
index 14cdf81..6086e2f 100644
--- a/chapters/03-build-github-project.md
+++ b/chapters/04-build-github-project.md
@@ -1,6 +1,6 @@
-#构建GitHub项目
+# 构建GitHub项目
-##如何用好GitHub
+## 如何用好GitHub
如何用好GitHub,并实践一些敏捷软件开发是一个很有意思的事情.我们可以在上面做很多事情,从测试到CI,再到自动部署.
diff --git a/chapters/05-tdd-with-autotest.md b/chapters/05-tdd-with-autotest.md
index 3b0a548..0252739 100644
--- a/chapters/05-tdd-with-autotest.md
+++ b/chapters/05-tdd-with-autotest.md
@@ -1,4 +1,4 @@
-#测试
+# 改善 GitHub 项目代码质量:测试
##TDD
diff --git a/chapters/06-refactor-project.md b/chapters/06-refactor-project.md
index 7055ca5..68a9b42 100644
--- a/chapters/06-refactor-project.md
+++ b/chapters/06-refactor-project.md
@@ -1,4 +1,4 @@
-#重构
+# 改善 GitHub 项目代码质量:重构
或许你应该知道了,重构是怎样的,你也知道重构能带来什么。在我刚开始学重构和设计模式的时候,我需要去找一些好的示例,以便于我更好的学习。有时候不得不创造一些更好的场景,来实现这些功能。
@@ -8,7 +8,7 @@
艺,需要有创造性的方法。
-##为什么重构?
+## 为什么重构?
> 为了更好的代码。
@@ -24,7 +24,7 @@
让我们来看看我们的第一个训练,相当有挑战性。
-##重构uMarkdown
+## 重构uMarkdown
代码及setup请见github: [js-refactor](https://github.com/artisanstack/js-refactor)
diff --git a/chapters/07-github-marketing.md b/chapters/07-github-marketing.md
new file mode 100644
index 0000000..7a35588
--- /dev/null
+++ b/chapters/07-github-marketing.md
@@ -0,0 +1,132 @@
+除了擅长编写 md 电子书来攒 star,我还写了一系列的开源软件,也掌握了一些项目运营的技巧。
+
+**开源并不是你把软件、README 写好就行了,还有详细的文档、示例程序等等**。
+
+**开源也不是你的项目好了,就会有一堆人参与进来**。
+
+**开源还要你帮助别人解决 Bug,……**。
+
+**人们做事都是有原因的**,即动机。再举例一下,如果你的项目不够火,别人都没听过,那么**写到简历上可能没啥用**。
+
+Marketing First
+---
+
+开源需要一些营销的技巧,这些技巧可以帮你吸引关注。举个简单的例子,司徒正美的 [avalon](https://github.com/RubyLouvre/avalon) 框架出身得很早,也 MV* 方面也做得很不错,但是在 marketing 上就……。以至于国内的很多前端,都不了解这个框架,要不今天在国内可能就是 AVRR 四大框架了。
+
+Vue 不是因为好用,而一下子火了。这一点我印象特别深,当时在 GitHub Trending 上看到了这个项目,发现它还不能很好地 work。
+
+而如文章 《[FIRST WEEK OF LAUNCHING VUE.JS](http://blog.evanyou.me/2014/02/11/first-week-of-launching-an-oss-project/)》所说,项目刚开始的时候作者做了一系列的营销计划:
+
+ - HackerNews
+ - Reddit /r/javascript
+ - EchoJS
+ - The DailyJS blog
+ - JavaScript Weekly
+ - Maintain a project Twitter account(维护项目的 Vue 账户)
+
+除此,文中还提到了一篇文章《[How to Spread The Word About Your Code](https://hacks.mozilla.org/2013/05/how-to-spread-the-word-about-your-code/?utm_source=statuscode&utm_medium=email)》 。
+
+这一点相当的有意思,如果你的想法好的话,那么大家都会肯定,点下链接,为你来个 star。那么,你就获得更好的动力去做这件事。项目也在开头的时候,获得了相当多的关注。而如果大家觉得你的项目没有新意的话,那么你懂的~。
+
+除此,还有一种可能是,你的 ID 不够 fancy,即你在社区的影响上比较少。此时,就需要**一点点慢慢积累人气**了。当你积累了一些人气,你就能和松本行弘一样,在创建 mRuby 的时候就有 1000+ 的 star。并且,在社区上还有一些相关的文章介绍,各个头条也由他的粉丝发了上去。如,一年多以前,我创建了 [mole](https://github.com/phodal/mole) 项目。
+
+
+
+当时,是为了给自己做一个基于 GitHub 云笔记的工具,在完成度到一定程度的时候。我在我的微信公从号上发了相关的介绍,第二天就有 100+ 的 star 了,还接收至最一些鼓舞的话语。对应于国内则有:
+
+ - 极客头条
+ - 掘金
+ - 开发者头条
+ - v2ex
+ - 知乎
+ - 不成器的微博
+
+所以,你觉得呢?
+
+编写 README
+---
+
+在一个开源项目里,README 是最重要的内容。它快速地介绍了这个项目,并决定了它能不能吸引用户:
+
+ - **这个项目做什么?**
+ - **它解决了什么问题**
+ - **它有什么特性**
+ — **hello, world 示例**
+
+### 这个项目做什么——一句话文案
+
+GitHub 的 Description 是我们在 Hacking News、GitHub Trneding 等等,第一时间看到的介绍。也是我们能快速介绍给别人的东西,如下图所示:
+
+
+
+这一句话,必须简单明了也介绍,它是干什么的。
+
+如 Angular 的一句话方案是:One framework. Mobile & desktop.
+
+而 React 是:A declarative, efficient, and flexible JavaScript library for building user interfaces.
+
+Vue 则是:A progressive, incrementally-adoptable JavaScript framework for building UI on the web.
+
+### 它解决了什么问题
+
+上面的一句话描述,它不能很好地说明,它能解决什么问题。
+
+如下是今天在 GitHub Trending 上榜的 RPC 项目的简介:
+
+> 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:
+
+
+
+以上便是这个项目能解决的问题,不过这个项目能解决的问题倒是比较长,哈哈哈。
+
+### 它有什么特性
+
+当我们有 A、B、C 几个不同的框架的时候,作为一个开发人员,就需要对比他们的特性,。如下是 Go 语言实现的 MQTT 示例:
+
+
+
+这个项目只支持的 Qos 级别为 0。如果我们需要的级别是 1,那么就不能用这个项目了。
+
+又比如 lodash 项目:
+
+> Lodash makes JavaScript easier by taking the hassle out of working with arrays,
+numbers, objects, strings, etc. Lodash’s modular methods are great for:
+
+ - Iterating arrays, objects, & strings
+ - Manipulating & testing values
+ - Creating composite functions
+
+你会怎么写?
+
+### hello, world 示例
+
+在我们看完了上面的介绍之后,紧接着就是一个 hello, world 的示例。如 React 的示例:
+
+```
+class HelloMessage extends React.Component {
+ render() {
+ return
Hello {this.props.name}
;
+ }
+}
+
+ReactDOM.render(
+ ,
+ document.getElementById('container')
+);
+```
+
+这个
+
+技术文档——手把手教会别人
+---
+
+
+示例程序
+---
+
+
+
+吸引贡献者
+---
+
+
diff --git a/chapters/08-maintain-project.md b/chapters/08-maintain-project.md
new file mode 100644
index 0000000..e69de29
diff --git a/chapters/07-find-github-project.md b/chapters/10-find-github-project.md
similarity index 100%
rename from chapters/07-find-github-project.md
rename to chapters/10-find-github-project.md
diff --git a/chapters/10-streak-your-github.md b/chapters/11-streak-your-github.md
similarity index 100%
rename from chapters/10-streak-your-github.md
rename to chapters/11-streak-your-github.md
diff --git a/chapters/11-milestone.md b/chapters/12-milestone.md
similarity index 100%
rename from chapters/11-milestone.md
rename to chapters/12-milestone.md
diff --git a/chapters/08-analytics.md b/chapters/13-analytics.md
similarity index 100%
rename from chapters/08-analytics.md
rename to chapters/13-analytics.md
diff --git a/github-roam.md b/github-roam.md
index d17457e..61d8ee2 100644
--- a/github-roam.md
+++ b/github-roam.md
@@ -81,6 +81,24 @@
---
+创建开源项目
+---
+
+
+取一个好的名字
+---
+
+
+挑选好 LICENSE
+---
+
+
+官方主页
+---
+
+GitHub Pages
+
+
#Git基本知识与GitHub使用
##Git
@@ -301,9 +319,82 @@ CLA即Contributor License Agreement,在为一些大的组织、机构提交Pul
-#构建GitHub项目
+# 创建项目文档
-##如何用好GitHub
+我们需要为我们的项目创建一个文档,通常我们可以将核心代码以外的东西都称为文档:
+
+1. README
+2. 文档
+3. 示例
+4. 测试
+
+通常这个会在项目的最上方会有一个项目的简介,如下图所示:
+
+
+
+##README
+
+README通常会显示在GitHub项目的下面,如下图所示:
+
+
+
+通常一个好的README会让你立马对项目产生兴趣。
+
+如下面的内容是React项目的简介:
+
+
+
+下面的内容写清楚了他们的用途:
+
+* **Just the UI:** Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology stack, it's easy to try it out on a small feature in an existing project.
+* **Virtual DOM:** React abstracts away the DOM from you, giving a simpler programming model and better performance. React can also render on the server using Node, and it can power native apps using [React Native](https://facebook.github.io/react-native/).
+* **Data flow:** React implements one-way reactive data flow which reduces boilerplate and is easier to reason about than traditional data binding.
+
+通常在这个README里,还会有:
+
+* 针对人群
+* 安装指南
+* 示例
+* 运行的平台
+* 如何参与贡献
+* 协议
+
+##在线文档
+
+很多开源项目都会有自己的网站,并在上面有一个文档,而有的则会放在[https://readthedocs.org/](https://readthedocs.org/)。
+
+> Read the Docs 托管文档,让文档可以被全文搜索和更易查找。您可以导入您使用任何常用的版本控制系统管理的文档,包括 Mercurial、Git、Subversion 和 Bazaar。 我们支持 webhooks,因此可以在您提交代码时自动构建文档。并且同样也支持版本功能,因此您可以构建来自您代码仓库中某个标签或分支的文档。查看完整的功能列表 。
+
+在一个开源项目中,良好和专业的文档是相当重要的,有时他可能会比软件还会重要。因为如果一个开源项目好用的话,多数人可能不会去查看软件的代码。这就意味着,多数时候他在和你的文档打交道。文档一般会有:API 文档、 配置文档、帮助文档、用户手册、教程等等
+
+写文档的软件有很多,如Markdown、Doxygen、Docbook等等。
+
+##可用示例
+
+一个简单上手的示例非常重要,特别是通常我们是在为着某个目的而去使用一个开源项目的是时候,我们希望能马上使用到我们的项目中。
+
+你希望看到的是,你打开浏览器,输入下面的代码,然后**It Works**:
+
+```
+var HelloMessage = React.createClass({
+ render: function() {
+ return
Hello {this.props.name}
;
+ }
+});
+
+React.render(
+ ,
+ document.getElementById('container')
+);
+```
+
+而不是需要繁琐的步骤才能进行下一步。
+
+---
+
+# 构建GitHub项目
+
+## 如何用好GitHub
如何用好GitHub,并实践一些敏捷软件开发是一个很有意思的事情.我们可以在上面做很多事情,从测试到CI,再到自动部署.
@@ -845,80 +936,7 @@ SQLiteHelper.prototype.getData = function (url, callback) {
---
-#创建项目文档
-
-我们需要为我们的项目创建一个文档,通常我们可以将核心代码以外的东西都称为文档:
-
-1. README
-2. 文档
-3. 示例
-4. 测试
-
-通常这个会在项目的最上方会有一个项目的简介,如下图所示:
-
-
-
-##README
-
-README通常会显示在GitHub项目的下面,如下图所示:
-
-
-
-通常一个好的README会让你立马对项目产生兴趣。
-
-如下面的内容是React项目的简介:
-
-
-
-下面的内容写清楚了他们的用途:
-
-* **Just the UI:** Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology stack, it's easy to try it out on a small feature in an existing project.
-* **Virtual DOM:** React abstracts away the DOM from you, giving a simpler programming model and better performance. React can also render on the server using Node, and it can power native apps using [React Native](https://facebook.github.io/react-native/).
-* **Data flow:** React implements one-way reactive data flow which reduces boilerplate and is easier to reason about than traditional data binding.
-
-通常在这个README里,还会有:
-
-* 针对人群
-* 安装指南
-* 示例
-* 运行的平台
-* 如何参与贡献
-* 协议
-
-##在线文档
-
-很多开源项目都会有自己的网站,并在上面有一个文档,而有的则会放在[https://readthedocs.org/](https://readthedocs.org/)。
-
-> Read the Docs 托管文档,让文档可以被全文搜索和更易查找。您可以导入您使用任何常用的版本控制系统管理的文档,包括 Mercurial、Git、Subversion 和 Bazaar。 我们支持 webhooks,因此可以在您提交代码时自动构建文档。并且同样也支持版本功能,因此您可以构建来自您代码仓库中某个标签或分支的文档。查看完整的功能列表 。
-
-在一个开源项目中,良好和专业的文档是相当重要的,有时他可能会比软件还会重要。因为如果一个开源项目好用的话,多数人可能不会去查看软件的代码。这就意味着,多数时候他在和你的文档打交道。文档一般会有:API 文档、 配置文档、帮助文档、用户手册、教程等等
-
-写文档的软件有很多,如Markdown、Doxygen、Docbook等等。
-
-##可用示例
-
-一个简单上手的示例非常重要,特别是通常我们是在为着某个目的而去使用一个开源项目的是时候,我们希望能马上使用到我们的项目中。
-
-你希望看到的是,你打开浏览器,输入下面的代码,然后**It Works**:
-
-```
-var HelloMessage = React.createClass({
- render: function() {
- return
Hello {this.props.name}
;
- }
-});
-
-React.render(
- ,
- document.getElementById('container')
-);
-```
-
-而不是需要繁琐的步骤才能进行下一步。
-
----
-
-#测试
+# 改善 GitHub 项目代码质量:测试
##TDD
@@ -1158,7 +1176,7 @@ req.end();
---
-#重构
+# 改善 GitHub 项目代码质量:重构
或许你应该知道了,重构是怎样的,你也知道重构能带来什么。在我刚开始学重构和设计模式的时候,我需要去找一些好的示例,以便于我更好的学习。有时候不得不创造一些更好的场景,来实现这些功能。
@@ -1168,7 +1186,7 @@ req.end();
艺,需要有创造性的方法。
-##为什么重构?
+## 为什么重构?
> 为了更好的代码。
@@ -1184,7 +1202,7 @@ req.end();
让我们来看看我们的第一个训练,相当有挑战性。
-##重构uMarkdown
+## 重构uMarkdown
代码及setup请见github: [js-refactor](https://github.com/artisanstack/js-refactor)
@@ -1570,6 +1588,226 @@ public class replaceTemp {
---
+除了擅长编写 md 电子书来攒 star,我还写了一系列的开源软件,也掌握了一些项目运营的技巧。
+
+**开源并不是你把软件、README 写好就行了,还有详细的文档、示例程序等等**。
+
+**开源也不是你的项目好了,就会有一堆人参与进来**。
+
+**开源还要你帮助别人解决 Bug,……**。
+
+**人们做事都是有原因的**,即动机。再举例一下,如果你的项目不够火,别人都没听过,那么**写到简历上可能没啥用**。
+
+Marketing First
+---
+
+开源需要一些营销的技巧,这些技巧可以帮你吸引关注。举个简单的例子,司徒正美的 [avalon](https://github.com/RubyLouvre/avalon) 框架出身得很早,也 MV* 方面也做得很不错,但是在 marketing 上就……。以至于国内的很多前端,都不了解这个框架,要不今天在国内可能就是 AVRR 四大框架了。
+
+Vue 不是因为好用,而一下子火了。这一点我印象特别深,当时在 GitHub Trending 上看到了这个项目,发现它还不能很好地 work。
+
+而如文章 《[FIRST WEEK OF LAUNCHING VUE.JS](http://blog.evanyou.me/2014/02/11/first-week-of-launching-an-oss-project/)》所说,项目刚开始的时候作者做了一系列的营销计划:
+
+ - HackerNews
+ - Reddit /r/javascript
+ - EchoJS
+ - The DailyJS blog
+ - JavaScript Weekly
+ - Maintain a project Twitter account(维护项目的 Vue 账户)
+
+除此,文中还提到了一篇文章《[How to Spread The Word About Your Code](https://hacks.mozilla.org/2013/05/how-to-spread-the-word-about-your-code/?utm_source=statuscode&utm_medium=email)》 。
+
+这一点相当的有意思,如果你的想法好的话,那么大家都会肯定,点下链接,为你来个 star。那么,你就获得更好的动力去做这件事。项目也在开头的时候,获得了相当多的关注。而如果大家觉得你的项目没有新意的话,那么你懂的~。
+
+除此,还有一种可能是,你的 ID 不够 fancy,即你在社区的影响上比较少。此时,就需要**一点点慢慢积累人气**了。当你积累了一些人气,你就能和松本行弘一样,在创建 mRuby 的时候就有 1000+ 的 star。并且,在社区上还有一些相关的文章介绍,各个头条也由他的粉丝发了上去。如,一年多以前,我创建了 [mole](https://github.com/phodal/mole) 项目。
+
+
+
+当时,是为了给自己做一个基于 GitHub 云笔记的工具,在完成度到一定程度的时候。我在我的微信公从号上发了相关的介绍,第二天就有 100+ 的 star 了,还接收至最一些鼓舞的话语。对应于国内则有:
+
+ - 极客头条
+ - 掘金
+ - 开发者头条
+ - v2ex
+ - 知乎
+ - 不成器的微博
+
+所以,你觉得呢?
+
+编写 README
+---
+
+在一个开源项目里,README 是最重要的内容。它快速地介绍了这个项目,并决定了它能不能吸引用户:
+
+ - **这个项目做什么?**
+ - **它解决了什么问题**
+ - **它有什么特性**
+ — **hello, world 示例**
+
+### 这个项目做什么——一句话文案
+
+GitHub 的 Description 是我们在 Hacking News、GitHub Trneding 等等,第一时间看到的介绍。也是我们能快速介绍给别人的东西,如下图所示:
+
+
+
+这一句话,必须简单明了也介绍,它是干什么的。
+
+如 Angular 的一句话方案是:One framework. Mobile & desktop.
+
+而 React 是:A declarative, efficient, and flexible JavaScript library for building user interfaces.
+
+Vue 则是:A progressive, incrementally-adoptable JavaScript framework for building UI on the web.
+
+### 它解决了什么问题
+
+上面的一句话描述,它不能很好地说明,它能解决什么问题。
+
+如下是今天在 GitHub Trending 上榜的 RPC 项目的简介:
+
+> 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:
+
+
+
+以上便是这个项目能解决的问题,不过这个项目能解决的问题倒是比较长,哈哈哈。
+
+### 它有什么特性
+
+当我们有 A、B、C 几个不同的框架的时候,作为一个开发人员,就需要对比他们的特性,。如下是 Go 语言实现的 MQTT 示例:
+
+
+
+这个项目只支持的 Qos 级别为 0。如果我们需要的级别是 1,那么就不能用这个项目了。
+
+又比如 lodash 项目:
+
+> Lodash makes JavaScript easier by taking the hassle out of working with arrays,
+numbers, objects, strings, etc. Lodash’s modular methods are great for:
+
+ - Iterating arrays, objects, & strings
+ - Manipulating & testing values
+ - Creating composite functions
+
+你会怎么写?
+
+### hello, world 示例
+
+在我们看完了上面的介绍之后,紧接着就是一个 hello, world 的示例。如 React 的示例:
+
+```
+class HelloMessage extends React.Component {
+ render() {
+ return
Just the UI: Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology stack, it’s easy to try it out on a small feature in an existing project.
+
Virtual DOM: React abstracts away the DOM from you, giving a simpler programming model and better performance. React can also render on the server using Node, and it can power native apps using React Native.
+
Data flow: React implements one-way reactive data flow which reduces boilerplate and is easier to reason about than traditional data binding.
@@ -1050,66 +1128,7 @@ line 21 col 62 Strings must use singlequote.
};
重构完后的代码比原来还长,这似乎是个问题~~
-
创建项目文档
-
我们需要为我们的项目创建一个文档,通常我们可以将核心代码以外的东西都称为文档:
-
-
README
-
文档
-
示例
-
测试
-
-
通常这个会在项目的最上方会有一个项目的简介,如下图所示:
-
-GitHub Project Introduction
-
-
README
-
README通常会显示在GitHub项目的下面,如下图所示:
-
-GitHub README
-
-
通常一个好的README会让你立马对项目产生兴趣。
-
如下面的内容是React项目的简介:
-
-React README
-
-
下面的内容写清楚了他们的用途:
-
-
Just the UI: Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology stack, it’s easy to try it out on a small feature in an existing project.
-
Virtual DOM: React abstracts away the DOM from you, giving a simpler programming model and better performance. React can also render on the server using Node, and it can power native apps using React Native.
-
Data flow: React implements one-way reactive data flow which reduces boilerplate and is easier to reason about than traditional data binding.
如 Angular 的一句话方案是:One framework. Mobile & desktop.
+
而 React 是:A declarative, efficient, and flexible JavaScript library for building user interfaces.
+
Vue 则是:A progressive, incrementally-adoptable JavaScript framework for building UI on the web.
+
它解决了什么问题
+
上面的一句话描述,它不能很好地说明,它能解决什么问题。
+
如下是今天在 GitHub Trending 上榜的 RPC 项目的简介:
+
+
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:
+
+
+RPC 开源项目
+
+
以上便是这个项目能解决的问题,不过这个项目能解决的问题倒是比较长,哈哈哈。
+
它有什么特性
+
当我们有 A、B、C 几个不同的框架的时候,作为一个开发人员,就需要对比他们的特性,。如下是 Go 语言实现的 MQTT 示例:
+
+GO MQTT 示例
+
+
这个项目只支持的 Qos 级别为 0。如果我们需要的级别是 1,那么就不能用这个项目了。
+
又比如 lodash 项目:
+
+
Lodash makes JavaScript easier by taking the hassle out of working with arrays, numbers, objects, strings, etc. Lodash’s modular methods are great for:
+
+
+
Iterating arrays, objects, & strings
+
Manipulating & testing values
+
Creating composite functions
+
+
你会怎么写?
+
hello, world 示例
+
在我们看完了上面的介绍之后,紧接着就是一个 hello, world 的示例。如 React 的示例: