From 5cb47f498b8072c8910925ee50aabfb165e9d066 Mon Sep 17 00:00:00 2001 From: Fengda HUANG Date: Sat, 24 Oct 2015 23:00:44 +0800 Subject: [PATCH] remove some chapters --- chapters/01-introduction.md | 47 ---- chapters/02-github-fundamentals.md | 243 +++++++++------------ chapters/03-analytics-project.md | 40 ---- chapters/04-create-your-project.md | 19 -- chapters/05-create-pull-request.md | 40 ---- chapters/06-build-github-project.md | 161 ++++++++++++++ github-roam.md | 194 +++++++---------- index.html | 323 +++++++++++++--------------- 8 files changed, 491 insertions(+), 576 deletions(-) delete mode 100644 chapters/03-analytics-project.md delete mode 100644 chapters/04-create-your-project.md delete mode 100644 chapters/05-create-pull-request.md diff --git a/chapters/01-introduction.md b/chapters/01-introduction.md index 1735c95..e69de29 100644 --- a/chapters/01-introduction.md +++ b/chapters/01-introduction.md @@ -1,47 +0,0 @@ -#介绍 - -##Github - -Wiki百科上是这么说的 - -> GitHub 是一个共享虚拟主机服务,用于存放使用Git版本控制的软件代码和内容项目。它由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath、PJ Hyett和Tom Preston-Werner -使用Ruby on Rails编写而成。 - -当然让我们看看官方的介绍: - -> GitHub is the best place to share code with friends, co-workers, classmates, and complete strangers. Over eight million people use GitHub to build amazing things together. - - -它还是什么? - -- 网站 -- 免费博客 -- 管理配置文件 -- 收集资料 -- 简历 -- 管理代码片段 -- 托管编程环境 -- 写作 - -等等。看上去像是大餐,但是你还需要了解点什么? - -###版本管理与软件部署 - -jQuery[^jQuery]在发布版本``2.1.3``,一共有152个commit。我们可以看到如下的提交信息: - - - Ajax: Always use script injection in globalEval … bbdfbb4 - - Effects: Reintroduce use of requestAnimationFrame … 72119e0 - - Effects: Improve raf logic … 708764f - - Build: Move test to appropriate module fbdbb6f - - Build: Update commitplease dev dependency - - ... - -###Github与Git - -> Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括Rubinius、Merb和Bitcoin在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。 - -> GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。 - -[^jQuery]: jQuery是一套跨浏览器的JavaScript库,简化HTML与JavaScript之间的操作。 - -
\ No newline at end of file diff --git a/chapters/02-github-fundamentals.md b/chapters/02-github-fundamentals.md index c6e51d0..132bcce 100644 --- a/chapters/02-github-fundamentals.md +++ b/chapters/02-github-fundamentals.md @@ -1,7 +1,50 @@ #Git基本知识与Github使用 -##Git +##Github +Wiki百科上是这么说的 + +> GitHub 是一个共享虚拟主机服务,用于存放使用Git版本控制的软件代码和内容项目。它由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath、PJ Hyett和Tom Preston-Werner +使用Ruby on Rails编写而成。 + +当然让我们看看官方的介绍: + +> GitHub is the best place to share code with friends, co-workers, classmates, and complete strangers. Over eight million people use GitHub to build amazing things together. + + +它还是什么? + +- 网站 +- 免费博客 +- 管理配置文件 +- 收集资料 +- 简历 +- 管理代码片段 +- 托管编程环境 +- 写作 + +等等。看上去像是大餐,但是你还需要了解点什么? + +###版本管理与软件部署 + +jQuery[^jQuery]在发布版本``2.1.3``,一共有152个commit。我们可以看到如下的提交信息: + + - Ajax: Always use script injection in globalEval … bbdfbb4 + - Effects: Reintroduce use of requestAnimationFrame … 72119e0 + - Effects: Improve raf logic … 708764f + - Build: Move test to appropriate module fbdbb6f + - Build: Update commitplease dev dependency + - ... + +###Github与Git + +> Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括Rubinius、Merb和Bitcoin在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。 + +> GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。 + +[^jQuery]: jQuery是一套跨浏览器的JavaScript库,简化HTML与JavaScript之间的操作。 + +##Git 从一般开发者的角度来看,git有以下功能: @@ -97,167 +140,81 @@ git push -u origin master 如果你完成了上面的步骤之后,那么我想你想知道你需要怎样的项目。 -
+##Github流行项目分析 -##用好Github +之前曾经分析过一些Github的用户行为,现在我们先来说说Github上的Star吧。(截止: 2015年3月9日23时。) -如何用好Github,并实践一些敏捷软件开发是一个很有意思的事情.我们可以在上面做很多事情,从测试到CI,再到自动部署. +用户 | 项目名 | Language | Star | Url +-----|---------- |----------|------|---- +twbs | Bootstrap | CSS | 78490 | [https://github.com/twbs/bootstrap](https://github.com/twbs/bootstrap) +vhf |free-programming books | - | 37240 | [https://github.com/vhf/free-programming-books](https://github.com/vhf/free-programming-books) +angular | angular.js | JavaScript | 36,061 | [https://github.com/angular/angular.js](https://github.com/angular/angular.js) +mbostock | d3 | JavaScript | 35,257 | [https://github.com/mbostock/d3](https://github.com/mbostock/d3) +joyent | node | JavaScript | 35,077 | [https://github.com/joyent/node](https://github.com/joyent/node) -###敏捷软件开发 +上面列出来的是前5的,看看大于1万个stars的项目的分布,一共有82个: -显然我是在扯淡,这和敏捷软件开发没有什么关系。不过我也不知道瀑布流是怎样的。说说我所知道的一个项目的组成吧: +语言 | 项目数 +-----|----- +JavaScript | 37 +Ruby | 6 +CSS | 6 +Python | 4 +HTML | 3 +C++ | 3 +VimL | 2 +Shell | 2 +Go | 2 +C | 2 - - 看板式管理应用程序(如trello,简单地说就是管理软件功能) - - CI(持续集成) - - 测试覆盖率 - - 代码质量(code smell) +类型分布: + + + - 库和框架: 和``jQuery`` + - 系统: 如``Linux``、``hhvm``、``docker`` + - 配置集: 如``dotfiles`` + - 辅助工具: 如``oh-my-zsh`` + - 工具: 如``Homewbrew``和``Bower`` + - 资料收集: 如``free programming books``,``You-Dont-Know-JS``,``Font-Awesome`` + - 其他:简历如``Resume`` -对于一个不是远程的团队(如只有一个人的项目) 来说,Trello、Jenkin、Jira不是必需的: +##创建Pull Request -> 你存在,我深深的脑海里 +除了创建项目之外,我们也可以创建Pull Request来做贡献。 -当只有一个人的时候,你只需要明确知道自己想要什么就够了。我们还需要的是CI、测试,以来提升代码的质量。 +###我的第一个PR -###测试 +我的第一个PR是给一个小的Node的CoAP相关的库的Pull Request。原因比较简单,是因为它的README.md写错了,导致我无法办法进行下一步。 -通常我们都会找Document,如果没有的话,你会找什么?看源代码,还是看测试? + const dgram = require('dgram') + - , coapPacket = require('coap-packet') + + , package = require('coap-packet') -```javascript -it("specifying response when you need it", function (done) { - var doneFn = jasmine.createSpy("success"); - - lettuce.get('/some/cool/url', function (result) { - expect(result).toEqual("awesome response"); - done(); - }); - - expect(jasmine.Ajax.requests.mostRecent().url).toBe('/some/cool/url'); - expect(doneFn).not.toHaveBeenCalled(); - - jasmine.Ajax.requests.mostRecent().respondWith({ - "status": 200, - "contentType": 'text/plain', - "responseText": 'awesome response' - }); -}); -``` - -代码来源: [https://github.com/phodal/lettuce](https://github.com/phodal/lettuce) - -上面的测试用例,清清楚楚地写明了用法,虽然写得有点扯。 - -等等,测试是用来干什么的。那么,先说说我为什么会想去写测试吧: - - - 我不希望每次做完一个个新功能的时候,再手动地去测试一个个功能。(自动化测试) - - 我不希望在重构的时候发现破坏了原来的功能,而我还一无所知。 - - 我不敢push代码,因为我没有把握。 - -虽然,我不是TDD的死忠,测试的目的是保证功能正常,TDD没法让我们写出质量更高的代码。但是有时TDD是不错的,可以让我们写出逻辑更简单地代码。 - -也许你已经知道了``Selenium``、``Jasmine``、``Cucumber``等等的框架,看到过类似于下面的测试 +很简单,却又很有用的步骤,另外一个也是: ``` - Ajax - ✓ specifying response when you need it - ✓ specifying html when you need it - ✓ should be post to some where - Class - ✓ respects instanceof - ✓ inherits methods (also super) - ✓ extend methods - Effect - ✓ should be able fadein elements - ✓ should be able fadeout elements -``` + else + cat << END + $0: error: module ngx_pagespeed requires the pagespeed optimization library. +-Look in obj/autoconf.err for more details. ++Look in objs/autoconf.err for more details. + END + exit 1 + fi +``` -代码来源: [https://github.com/phodal/lettuce](https://github.com/phodal/lettuce) - -看上去似乎每个测试都很小,不过补完每一个测试之后我们就得到了测试覆盖率 +###CLA -File | Statements | Branches | Functions | Lines ------|------------|----------|-----------|------ -lettuce.js | 98.58% (209 / 212)| 82.98%(78 / 94) | 100.00% (54 / 54) | 98.58% (209 / 212) +CLA即Contributor License Agreement,在为一些大的组织、机构提交Pull Request的时候,可能需要签署这个协议。他们会在你的Pull Request里问你,只有你到他们的网站去注册并同意协议才会接受你的PR。 -本地测试都通过了,于是我们添加了``Travis-CI``来跑我们的测试 +以下是我为Google提交的一个PR -###CI +![Google CLA](./img/google-cla.png) -虽然node.js不算是一门语言,但是因为我们用的node,下面的是一个简单的``.travis.yml``示例: +以及Eclipse的一个PR -```yml -language: node_js -node_js: - - "0.10" +![Eclipse CLA](./img/eclipse-cla.png) -notifications: - email: false - -before_install: npm install -g grunt-cli -install: npm install -after_success: CODECLIMATE_REPO_TOKEN=321480822fc37deb0de70a11931b4cb6a2a3cc411680e8f4569936ac8ffbb0ab codeclimate < coverage/lcov.info -``` - -代码来源: [https://github.com/phodal/lettuce](https://github.com/phodal/lettuce) - -我们把这些集成到``README.md``之后,就有了之前那张图。 - -CI对于一个开发者在不同城市开发同一项目上来说是很重要的,这意味着当你添加的部分功能有测试覆盖的时候,项目代码会更加强壮。 - -###代码质量 - -像``jslint``这类的工具,只能保证代码在语法上是正确的,但是不能保证你写了一堆bad smell的代码。 - - - 重复代码 - - 过长的函数 - - 等等 - -``Code Climate``是一个与github集成的工具,我们不仅仅可以看到测试覆盖率,还有代码质量。 - -先看看上面的ajax类: - -```javascript -Lettuce.get = function (url, callback) { - Lettuce.send(url, 'GET', callback); -}; - -Lettuce.send = function (url, method, callback, data) { - data = data || null; - var request = new XMLHttpRequest(); - if (callback instanceof Function) { - request.onreadystatechange = function () { - if (request.readyState === 4 && (request.status === 200 || request.status === 0)) { - callback(request.responseText); - } - }; - } - request.open(method, url, true); - if (data instanceof Object) { - data = JSON.stringify(data); - request.setRequestHeader('Content-Type', 'application/json'); - } - request.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - request.send(data); -}; -``` - -代码来源: [https://github.com/phodal/lettuce](https://github.com/phodal/lettuce) - -在[Code Climate](https://codeclimate.com/github/phodal/lettuce/src/ajax.js)在出现了一堆问题 - - - Missing "use strict" statement. (Line 2) - - Missing "use strict" statement. (Line 14) - - 'Lettuce' is not defined. (Line 5) - -而这些都是小问题啦,有时可能会有 - - - Similar code found in two :expression_statement nodes (mass = 86) - -这就意味着我们可以对上面的代码进行重构,他们是重复的代码。 - -###重构 - -不想在这里说太多关于``重构``的东西,可以参考Martin Flower的《重构》一书去多了解一些重构的细节。 - -这时想说的是,只有代码被测试覆盖住了,那么才能保证重构的过程没有出错。 +他们都要求我签署CLA。
\ No newline at end of file diff --git a/chapters/03-analytics-project.md b/chapters/03-analytics-project.md deleted file mode 100644 index a46136b..0000000 --- a/chapters/03-analytics-project.md +++ /dev/null @@ -1,40 +0,0 @@ -#Github流行项目分析 - -之前曾经分析过一些Github的用户行为,现在我们先来说说Github上的Star吧。(截止: 2015年3月9日23时。) - -用户 | 项目名 | Language | Star | Url ------|---------- |----------|------|---- -twbs | Bootstrap | CSS | 78490 | [https://github.com/twbs/bootstrap](https://github.com/twbs/bootstrap) -vhf |free-programming books | - | 37240 | [https://github.com/vhf/free-programming-books](https://github.com/vhf/free-programming-books) -angular | angular.js | JavaScript | 36,061 | [https://github.com/angular/angular.js](https://github.com/angular/angular.js) -mbostock | d3 | JavaScript | 35,257 | [https://github.com/mbostock/d3](https://github.com/mbostock/d3) -joyent | node | JavaScript | 35,077 | [https://github.com/joyent/node](https://github.com/joyent/node) - -上面列出来的是前5的,看看大于1万个stars的项目的分布,一共有82个: - -语言 | 项目数 ------|----- -JavaScript | 37 -Ruby | 6 -CSS | 6 -Python | 4 -HTML | 3 -C++ | 3 -VimL | 2 -Shell | 2 -Go | 2 -C | 2 - -类型分布: - - - - 库和框架: 和``jQuery`` - - 系统: 如``Linux``、``hhvm``、``docker`` - - 配置集: 如``dotfiles`` - - 辅助工具: 如``oh-my-zsh`` - - 工具: 如``Homewbrew``和``Bower`` - - 资料收集: 如``free programming books``,``You-Dont-Know-JS``,``Font-Awesome`` - - 其他:简历如``Resume`` - - -
\ No newline at end of file diff --git a/chapters/04-create-your-project.md b/chapters/04-create-your-project.md deleted file mode 100644 index e06095f..0000000 --- a/chapters/04-create-your-project.md +++ /dev/null @@ -1,19 +0,0 @@ -#创建你的项目 - -问题来了,我们在上面需要怎样的项目? 在上章中,我们说到了下面的内容会比较受欢迎: - -- 库和框架: 和``jQuery`` -- 系统: 如``Linux``、``hhvm``、``docker`` -- 配置集: 如``dotfiles`` -- 辅助工具: 如``oh-my-zsh`` -- 工具: 如``Homewbrew``和``Bower`` -- 资料收集: 如``free programming books``,``You-Dont-Know-JS``,``Font-Awesome`` -- 其他:简历如``Resume`` - -不过,在多数情况下,我想文档类如资料收集会比较受欢迎。但是,并非所有喜欢的程序员都喜欢去收集这样的内容,有时候我们想创造的是一个流行的库,这也是我最想做的开源项目。 - -##Hello,World - -So,你可以从Hello,World开始试试。 - -
\ No newline at end of file diff --git a/chapters/05-create-pull-request.md b/chapters/05-create-pull-request.md deleted file mode 100644 index 9a1f0a1..0000000 --- a/chapters/05-create-pull-request.md +++ /dev/null @@ -1,40 +0,0 @@ -#创建Pull Request - -除了创建项目之外,我们也可以创建Pull Request来做贡献。 - -##第一个PR - -我的第一个PR是给一个小的Node的CoAP相关的库的Pull Request。原因比较简单,是因为它的README.md写错了,导致我无法办法进行下一步。 - - const dgram = require('dgram') - - , coapPacket = require('coap-packet') - + , package = require('coap-packet') - -很简单,却又很有用的步骤,另外一个也是: - -``` - else - cat << END - $0: error: module ngx_pagespeed requires the pagespeed optimization library. --Look in obj/autoconf.err for more details. -+Look in objs/autoconf.err for more details. - END - exit 1 - fi -``` - -##CLA - -CLA即Contributor License Agreement,在为一些大的组织、机构提交Pull Request的时候,可能需要签署这个协议。他们会在你的Pull Request里问你,只有你到他们的网站去注册并同意协议才会接受你的PR。 - -以下是我为Google提交的一个PR - -![Google CLA](./img/google-cla.png) - -以及Eclipse的一个PR - -![Eclipse CLA](./img/eclipse-cla.png) - -他们都要求我签署CLA。 - -
\ No newline at end of file diff --git a/chapters/06-build-github-project.md b/chapters/06-build-github-project.md index e0f074d..b9a3af5 100644 --- a/chapters/06-build-github-project.md +++ b/chapters/06-build-github-project.md @@ -1,5 +1,166 @@ #构建Github项目 +##用好Github + +如何用好Github,并实践一些敏捷软件开发是一个很有意思的事情.我们可以在上面做很多事情,从测试到CI,再到自动部署. + +###敏捷软件开发 + +显然我是在扯淡,这和敏捷软件开发没有什么关系。不过我也不知道瀑布流是怎样的。说说我所知道的一个项目的组成吧: + + - 看板式管理应用程序(如trello,简单地说就是管理软件功能) + - CI(持续集成) + - 测试覆盖率 + - 代码质量(code smell) + +对于一个不是远程的团队(如只有一个人的项目) 来说,Trello、Jenkin、Jira不是必需的: + +> 你存在,我深深的脑海里 + +当只有一个人的时候,你只需要明确知道自己想要什么就够了。我们还需要的是CI、测试,以来提升代码的质量。 + +###测试 + +通常我们都会找Document,如果没有的话,你会找什么?看源代码,还是看测试? + +```javascript +it("specifying response when you need it", function (done) { + var doneFn = jasmine.createSpy("success"); + + lettuce.get('/some/cool/url', function (result) { + expect(result).toEqual("awesome response"); + done(); + }); + + expect(jasmine.Ajax.requests.mostRecent().url).toBe('/some/cool/url'); + expect(doneFn).not.toHaveBeenCalled(); + + jasmine.Ajax.requests.mostRecent().respondWith({ + "status": 200, + "contentType": 'text/plain', + "responseText": 'awesome response' + }); +}); +``` + +代码来源: [https://github.com/phodal/lettuce](https://github.com/phodal/lettuce) + +上面的测试用例,清清楚楚地写明了用法,虽然写得有点扯。 + +等等,测试是用来干什么的。那么,先说说我为什么会想去写测试吧: + + - 我不希望每次做完一个个新功能的时候,再手动地去测试一个个功能。(自动化测试) + - 我不希望在重构的时候发现破坏了原来的功能,而我还一无所知。 + - 我不敢push代码,因为我没有把握。 + +虽然,我不是TDD的死忠,测试的目的是保证功能正常,TDD没法让我们写出质量更高的代码。但是有时TDD是不错的,可以让我们写出逻辑更简单地代码。 + +也许你已经知道了``Selenium``、``Jasmine``、``Cucumber``等等的框架,看到过类似于下面的测试 + +``` + Ajax + ✓ specifying response when you need it + ✓ specifying html when you need it + ✓ should be post to some where + Class + ✓ respects instanceof + ✓ inherits methods (also super) + ✓ extend methods + Effect + ✓ should be able fadein elements + ✓ should be able fadeout elements +``` + +代码来源: [https://github.com/phodal/lettuce](https://github.com/phodal/lettuce) + +看上去似乎每个测试都很小,不过补完每一个测试之后我们就得到了测试覆盖率 + +File | Statements | Branches | Functions | Lines +-----|------------|----------|-----------|------ +lettuce.js | 98.58% (209 / 212)| 82.98%(78 / 94) | 100.00% (54 / 54) | 98.58% (209 / 212) + +本地测试都通过了,于是我们添加了``Travis-CI``来跑我们的测试 + +###CI + +虽然node.js不算是一门语言,但是因为我们用的node,下面的是一个简单的``.travis.yml``示例: + +```yml +language: node_js +node_js: + - "0.10" + +notifications: + email: false + +before_install: npm install -g grunt-cli +install: npm install +after_success: CODECLIMATE_REPO_TOKEN=321480822fc37deb0de70a11931b4cb6a2a3cc411680e8f4569936ac8ffbb0ab codeclimate < coverage/lcov.info +``` + +代码来源: [https://github.com/phodal/lettuce](https://github.com/phodal/lettuce) + +我们把这些集成到``README.md``之后,就有了之前那张图。 + +CI对于一个开发者在不同城市开发同一项目上来说是很重要的,这意味着当你添加的部分功能有测试覆盖的时候,项目代码会更加强壮。 + +###代码质量 + +像``jslint``这类的工具,只能保证代码在语法上是正确的,但是不能保证你写了一堆bad smell的代码。 + + - 重复代码 + - 过长的函数 + - 等等 + +``Code Climate``是一个与github集成的工具,我们不仅仅可以看到测试覆盖率,还有代码质量。 + +先看看上面的ajax类: + +```javascript +Lettuce.get = function (url, callback) { + Lettuce.send(url, 'GET', callback); +}; + +Lettuce.send = function (url, method, callback, data) { + data = data || null; + var request = new XMLHttpRequest(); + if (callback instanceof Function) { + request.onreadystatechange = function () { + if (request.readyState === 4 && (request.status === 200 || request.status === 0)) { + callback(request.responseText); + } + }; + } + request.open(method, url, true); + if (data instanceof Object) { + data = JSON.stringify(data); + request.setRequestHeader('Content-Type', 'application/json'); + } + request.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + request.send(data); +}; +``` + +代码来源: [https://github.com/phodal/lettuce](https://github.com/phodal/lettuce) + +在[Code Climate](https://codeclimate.com/github/phodal/lettuce/src/ajax.js)在出现了一堆问题 + + - Missing "use strict" statement. (Line 2) + - Missing "use strict" statement. (Line 14) + - 'Lettuce' is not defined. (Line 5) + +而这些都是小问题啦,有时可能会有 + + - Similar code found in two :expression_statement nodes (mass = 86) + +这就意味着我们可以对上面的代码进行重构,他们是重复的代码。 + +###重构 + +不想在这里说太多关于``重构``的东西,可以参考Martin Flower的《重构》一书去多了解一些重构的细节。 + +这时想说的是,只有代码被测试覆盖住了,那么才能保证重构的过程没有出错。 + ##从模块分离到测试 在之前说到 diff --git a/github-roam.md b/github-roam.md index a8ecc44..fc582ec 100644 --- a/github-roam.md +++ b/github-roam.md @@ -81,7 +81,7 @@
-#介绍 +#Git基本知识与Github使用 ##Github @@ -127,13 +127,8 @@ jQuery[^jQuery]在发布版本``2.1.3``,一共有152个commit。我们可以 [^jQuery]: jQuery是一套跨浏览器的JavaScript库,简化HTML与JavaScript之间的操作。 -
- -#Git基本知识与Github使用 - ##Git - 从一般开发者的角度来看,git有以下功能: 1. 从服务器上克隆数据库(包括代码和版本信息)到单机上。 @@ -228,7 +223,86 @@ git push -u origin master 如果你完成了上面的步骤之后,那么我想你想知道你需要怎样的项目。 -
+##Github流行项目分析 + +之前曾经分析过一些Github的用户行为,现在我们先来说说Github上的Star吧。(截止: 2015年3月9日23时。) + +用户 | 项目名 | Language | Star | Url +-----|---------- |----------|------|---- +twbs | Bootstrap | CSS | 78490 | [https://github.com/twbs/bootstrap](https://github.com/twbs/bootstrap) +vhf |free-programming books | - | 37240 | [https://github.com/vhf/free-programming-books](https://github.com/vhf/free-programming-books) +angular | angular.js | JavaScript | 36,061 | [https://github.com/angular/angular.js](https://github.com/angular/angular.js) +mbostock | d3 | JavaScript | 35,257 | [https://github.com/mbostock/d3](https://github.com/mbostock/d3) +joyent | node | JavaScript | 35,077 | [https://github.com/joyent/node](https://github.com/joyent/node) + +上面列出来的是前5的,看看大于1万个stars的项目的分布,一共有82个: + +语言 | 项目数 +-----|----- +JavaScript | 37 +Ruby | 6 +CSS | 6 +Python | 4 +HTML | 3 +C++ | 3 +VimL | 2 +Shell | 2 +Go | 2 +C | 2 + +类型分布: + + + - 库和框架: 和``jQuery`` + - 系统: 如``Linux``、``hhvm``、``docker`` + - 配置集: 如``dotfiles`` + - 辅助工具: 如``oh-my-zsh`` + - 工具: 如``Homewbrew``和``Bower`` + - 资料收集: 如``free programming books``,``You-Dont-Know-JS``,``Font-Awesome`` + - 其他:简历如``Resume`` + +##创建Pull Request + +除了创建项目之外,我们也可以创建Pull Request来做贡献。 + +###我的第一个PR + +我的第一个PR是给一个小的Node的CoAP相关的库的Pull Request。原因比较简单,是因为它的README.md写错了,导致我无法办法进行下一步。 + + const dgram = require('dgram') + - , coapPacket = require('coap-packet') + + , package = require('coap-packet') + +很简单,却又很有用的步骤,另外一个也是: + +``` + else + cat << END + $0: error: module ngx_pagespeed requires the pagespeed optimization library. +-Look in obj/autoconf.err for more details. ++Look in objs/autoconf.err for more details. + END + exit 1 + fi +``` + +###CLA + +CLA即Contributor License Agreement,在为一些大的组织、机构提交Pull Request的时候,可能需要签署这个协议。他们会在你的Pull Request里问你,只有你到他们的网站去注册并同意协议才会接受你的PR。 + +以下是我为Google提交的一个PR + +![Google CLA](./img/google-cla.png) + +以及Eclipse的一个PR + +![Eclipse CLA](./img/eclipse-cla.png) + +他们都要求我签署CLA。 + +
+ +#构建Github项目 ##用好Github @@ -391,112 +465,6 @@ Lettuce.send = function (url, method, callback, data) { 这时想说的是,只有代码被测试覆盖住了,那么才能保证重构的过程没有出错。 -
- -#Github流行项目分析 - -之前曾经分析过一些Github的用户行为,现在我们先来说说Github上的Star吧。(截止: 2015年3月9日23时。) - -用户 | 项目名 | Language | Star | Url ------|---------- |----------|------|---- -twbs | Bootstrap | CSS | 78490 | [https://github.com/twbs/bootstrap](https://github.com/twbs/bootstrap) -vhf |free-programming books | - | 37240 | [https://github.com/vhf/free-programming-books](https://github.com/vhf/free-programming-books) -angular | angular.js | JavaScript | 36,061 | [https://github.com/angular/angular.js](https://github.com/angular/angular.js) -mbostock | d3 | JavaScript | 35,257 | [https://github.com/mbostock/d3](https://github.com/mbostock/d3) -joyent | node | JavaScript | 35,077 | [https://github.com/joyent/node](https://github.com/joyent/node) - -上面列出来的是前5的,看看大于1万个stars的项目的分布,一共有82个: - -语言 | 项目数 ------|----- -JavaScript | 37 -Ruby | 6 -CSS | 6 -Python | 4 -HTML | 3 -C++ | 3 -VimL | 2 -Shell | 2 -Go | 2 -C | 2 - -类型分布: - - - - 库和框架: 和``jQuery`` - - 系统: 如``Linux``、``hhvm``、``docker`` - - 配置集: 如``dotfiles`` - - 辅助工具: 如``oh-my-zsh`` - - 工具: 如``Homewbrew``和``Bower`` - - 资料收集: 如``free programming books``,``You-Dont-Know-JS``,``Font-Awesome`` - - 其他:简历如``Resume`` - - -
- -#创建你的项目 - -问题来了,我们在上面需要怎样的项目? 在上章中,我们说到了下面的内容会比较受欢迎: - -- 库和框架: 和``jQuery`` -- 系统: 如``Linux``、``hhvm``、``docker`` -- 配置集: 如``dotfiles`` -- 辅助工具: 如``oh-my-zsh`` -- 工具: 如``Homewbrew``和``Bower`` -- 资料收集: 如``free programming books``,``You-Dont-Know-JS``,``Font-Awesome`` -- 其他:简历如``Resume`` - -不过,在多数情况下,我想文档类如资料收集会比较受欢迎。但是,并非所有喜欢的程序员都喜欢去收集这样的内容,有时候我们想创造的是一个流行的库,这也是我最想做的开源项目。 - -##Hello,World - -So,你可以从Hello,World开始试试。 - -
- -#创建Pull Request - -除了创建项目之外,我们也可以创建Pull Request来做贡献。 - -##第一个PR - -我的第一个PR是给一个小的Node的CoAP相关的库的Pull Request。原因比较简单,是因为它的README.md写错了,导致我无法办法进行下一步。 - - const dgram = require('dgram') - - , coapPacket = require('coap-packet') - + , package = require('coap-packet') - -很简单,却又很有用的步骤,另外一个也是: - -``` - else - cat << END - $0: error: module ngx_pagespeed requires the pagespeed optimization library. --Look in obj/autoconf.err for more details. -+Look in objs/autoconf.err for more details. - END - exit 1 - fi -``` - -##CLA - -CLA即Contributor License Agreement,在为一些大的组织、机构提交Pull Request的时候,可能需要签署这个协议。他们会在你的Pull Request里问你,只有你到他们的网站去注册并同意协议才会接受你的PR。 - -以下是我为Google提交的一个PR - -![Google CLA](./img/google-cla.png) - -以及Eclipse的一个PR - -![Eclipse CLA](./img/eclipse-cla.png) - -他们都要求我签署CLA。 - -
- -#构建Github项目 - ##从模块分离到测试 在之前说到 diff --git a/index.html b/index.html index cb8c5b1..c30b800 100644 --- a/index.html +++ b/index.html @@ -74,17 +74,22 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
  • 扩大人脉
  • -
  • 介绍