GitHub 漫游指南
我与 GitHub 的故事 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 GitHub 与收获 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 GitHub 与成长 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 为什么你应该深⼊ GitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 ⽅便⼯作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 获得⼀份⼯作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 扩⼤交际 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Git 基本知识与 GitHub 使⽤ 8 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Git 初⼊ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 GitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 版本管理与软件部署 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 GitHub 与 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 在 GitHub 创建项⽬ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 GitHub 流⾏项⽬分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Pull Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 我的第⼀个 PR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 CLA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 构建 GitHub 项⽬ 15 如何⽤好 GitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 敏捷软件开发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 CI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 代码质量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1 ⽬录 ⽬录 模块分离与测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 代码模块化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 ⾃动化测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Jshint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Mocha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 测试⽰例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 代码质量与重构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Code Climate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 代码的坏味道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 创建项⽬⽂档 29 README . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 在线⽂档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 可⽤⽰例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 测试 33 TDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 ⼀次测试驱动开发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 说说 TDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 TDD 思考 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 功能测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 轻量级⽹站测试 TWill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Twill 登陆测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Twill 测试脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Fake Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 重构 39 为什么重构? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 重构 uMarkdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2 ⽬录 ⽬录 代码说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Intellij Idea 重构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Rename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Extract Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Inline Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Pull Members Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 重构之以查询取代临时变量 . . . . . . . . . . . . . . . . . . . . . . . . . . 46 如何在 GitHub“寻找灵感 (fork)” 50 Lettuce 构建过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 需求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 计划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 实现第⼀个需求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 实现第⼆个需求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 GitHub ⽤户分析 55 ⽣成图表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 数据解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Matplotlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 每周分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 python github 每周情况分析 . . . . . . . . . . . . . . . . . . . . . . . . . 59 Python 数据分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Python Matplotlib 图表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 存储到数据库中 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 SQLite3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 数据导⼊ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 邻近算法与相似⽤户 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3 ⽬录 ⽬录 GitHub 连击 71 100 天 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 40 天的提升 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 100 天的挑战 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 140 天的希冀 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 200 天的 Showcase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 ⼀些项⽬简述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 google map solr polygon 搜索 . . . . . . . . . . . . . . . . . . . . . . . . . 77 技能树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 365 天 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 编程的基础能⼒ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 技术与框架设计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 领域与练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 其他 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 500 天 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 500 天与 10000 ⼩时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 编程的情绪周期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 有意图的练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 预见性练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 获得⼀份⼯作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 扩⼤交际 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Git 基本知识与 GitHub 使⽤ 8 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Git 初⼊ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 GitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 版本管理与软件部署 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 GitHub 与 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 在 GitHub 创建项⽬ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 GitHub 流⾏项⽬分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Pull Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 我的第⼀个 PR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 CLA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 构建 GitHub 项⽬ 15 如何⽤好 GitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 敏捷软件开发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 CI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 代码质量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1 ⽬录 ⽬录 模块分离与测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 代码模块化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 ⾃动化测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Jshint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Mocha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 测试⽰例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 代码质量与重构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Code Climate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 代码的坏味道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 创建项⽬⽂档 29 README . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 在线⽂档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 可⽤⽰例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 测试 33 TDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 ⼀次测试驱动开发 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 说说 TDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 TDD 思考 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 功能测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 轻量级⽹站测试 TWill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Twill 登陆测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Twill 测试脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Fake Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 重构 39 为什么重构? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 重构 uMarkdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2 ⽬录 ⽬录 代码说明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Intellij Idea 重构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Rename . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Extract Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Inline Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Pull Members Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 重构之以查询取代临时变量 . . . . . . . . . . . . . . . . . . . . . . . . . . 46 如何在 GitHub“寻找灵感 (fork)” 50 Lettuce 构建过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 需求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 计划 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 实现第⼀个需求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 实现第⼆个需求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 GitHub ⽤户分析 55 ⽣成图表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 数据解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Matplotlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 每周分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 python github 每周情况分析 . . . . . . . . . . . . . . . . . . . . . . . . . 59 Python 数据分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Python Matplotlib 图表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 存储到数据库中 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 SQLite3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 数据导⼊ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 邻近算法与相似⽤户 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3 ⽬录 ⽬录 GitHub 连击 71 100 天 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 40 天的提升 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 100 天的挑战 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 140 天的希冀 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 200 天的 Showcase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 ⼀些项⽬简述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 google map solr polygon 搜索 . . . . . . . . . . . . . . . . . . . . . . . . . 77 技能树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 365 天 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 编程的基础能⼒ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 技术与框架设计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 领域与练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 其他 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 500 天 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 500 天与 10000 ⼩时 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 编程的情绪周期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 有意图的练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 预见性练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
用户评论