Browse Source

Gitbook Auto Published

willin 7 years ago
parent
commit
a78e44194c
100 changed files with 1056 additions and 219 deletions
  1. 1 0
      404.html
  2. 11 13
      INTRO.md
  3. 11 2
      README.md
  4. 67 56
      SUMMARY.md
  5. 0 0
      _static/basic/db/mysql.png
  6. 0 0
      _static/basic/framework/react.png
  7. 0 0
      _static/basic/git/rebase.jpg
  8. 0 0
      _static/basic/git/reset.jpg
  9. BIN
      _static/basic/js/fetch.png
  10. BIN
      _static/basic/osx/1.png
  11. BIN
      _static/basic/osx/2.png
  12. BIN
      _static/basic/osx/3.png
  13. BIN
      _static/basic/osx/4.png
  14. BIN
      _static/basic/source/iterm.png
  15. 0 0
      _static/basic/ss/image1.png
  16. 0 0
      _static/basic/ss/image10.png
  17. 0 0
      _static/basic/ss/image11.png
  18. 0 0
      _static/basic/ss/image12.png
  19. 0 0
      _static/basic/ss/image13.png
  20. 0 0
      _static/basic/ss/image2.png
  21. 0 0
      _static/basic/ss/image3.png
  22. 0 0
      _static/basic/ss/image4.png
  23. 0 0
      _static/basic/ss/image5.png
  24. 0 0
      _static/basic/ss/image6.png
  25. 0 0
      _static/basic/ss/image7.png
  26. 0 0
      _static/basic/ss/image8.png
  27. 0 0
      _static/basic/ss/image9.png
  28. 0 0
      _static/basic/travis/04.01.png
  29. 0 0
      _static/basic/travis/04.02.png
  30. 0 0
      _static/basic/travis/05.00.png
  31. 0 0
      _static/basic/travis/05.01.png
  32. 0 0
      _static/basic/travis/05.02.png
  33. 0 0
      _static/basic/travis/05.03.png
  34. 0 0
      _static/basic/travis/06.00.png
  35. 0 0
      _static/basic/travis/06.01.png
  36. 0 0
      _static/experience/design/er.png
  37. 0 0
      _static/experience/design/flow.png
  38. 0 0
      _static/experience/design/mind.png
  39. 0 0
      _static/experience/design/seq.png
  40. 0 0
      _static/experience/design/system.png
  41. 0 0
      _static/experience/design/use-case.png
  42. 0 0
      _static/experience/operation/restarter1.png
  43. 0 0
      _static/experience/operation/restarter2.png
  44. 0 0
      _static/experience/operation/rollback.png
  45. 0 0
      _static/experience/operation/workflow1.png
  46. 0 0
      _static/experience/operation/workflow2.png
  47. 0 0
      _static/experience/operation/workflow3-1.png
  48. 0 0
      _static/experience/operation/workflow3-2.png
  49. 0 0
      _static/experience/operation/workflow3-3.png
  50. 0 0
      _static/experience/operation/workflow4-1.png
  51. 0 0
      _static/experience/operation/workflow4-2.png
  52. 0 0
      _static/experience/project/flow.png
  53. 0 0
      _static/experience/project/hmap.png
  54. 0 0
      _static/experience/project/sys.png
  55. 0 0
      _static/experience/project/test.png
  56. 0 0
      _static/experience/project/user.graffle
  57. BIN
      _static/project/count.png
  58. 10 2
      basic/README.md
  59. 2 2
      project/db/mysql.md
  60. 0 0
      basic/db/redis.md
  61. 0 0
      basic/framework/electron.md
  62. 0 0
      basic/framework/hapi.md
  63. 0 0
      basic/framework/koa.md
  64. 0 0
      basic/framework/nativescript.md
  65. 1 1
      project/js/redux.md
  66. 0 0
      basic/framework/socketio.md
  67. 0 0
      basic/framework/udp.md
  68. 3 3
      project/js/es6.md
  69. 1 1
      project/fe/fetch.md
  70. 138 0
      basic/js/tricks.md
  71. 3 2
      project/tool/git.md
  72. 0 0
      basic/knowledge/http.md
  73. 0 2
      project/js/promise.md
  74. 0 2
      operation/shell.md
  75. 0 0
      basic/node/babel.md
  76. 0 0
      basic/node/benchmark.md
  77. 79 0
      project/tool/gitbook.md
  78. 9 9
      basic/hexo.md
  79. 0 0
      basic/node/npm.md
  80. 14 12
      project/tool/pkg.md
  81. 0 0
      basic/node/test.md
  82. 29 82
      basic/osx.md
  83. 149 0
      basic/resource/brew.md
  84. 1 3
      project/fe/packages.md
  85. 443 0
      basic/resource/ide.md
  86. 38 0
      basic/resource/iterm.md
  87. 13 2
      basic/offline.md
  88. 1 0
      basic/online.md
  89. 15 13
      basic/ss.md
  90. 2 1
      book.json
  91. 5 5
      cmd
  92. 0 0
      experience/design/README.md
  93. 0 0
      experience/design/architecture.md
  94. 4 0
      experience/design/choose.md
  95. 0 0
      experience/design/product.md
  96. 0 0
      experience/design/requirements.md
  97. 6 6
      design/system.md
  98. 0 0
      experience/operation/README.md
  99. 0 0
      experience/operation/later.md
  100. 0 0
      project/tool/pm2.md

+ 1 - 0
404.html

@@ -0,0 +1 @@
+<script type="text/javascript">window.location.href='https://leader.js.cool/';</script>

+ 11 - 13
INTRO.md

@@ -1,32 +1,30 @@
-# 可替代团队领袖培养计划
+# 可替代团队领袖培养计划
 
 > 对于工作上应该做什么事,如果你没有自己的想法,而是完全听主管的,很危险。多数的主管不会在乎你的成长,也不会把公司的利益摆第一位,他们最在乎的是自己的工作绩效,而他们的工作绩效是要靠你们去达成的。完全听他们的任务布置去做,没有自己的主张,东一榔头,西一棒槌,几年下来就变打杂的了。
 > ——蔡学镛
 
-本书主要包括如下几个方面:
+本书由浅及深主要包括如下几个方面:
 
-一、系统化设计
+## 知识
 
-包括产品设计和架构设计
+介绍OS X上个人常用的效率、开发、设计工具及使用技巧。从基础常识讲起,推荐一些工具、资源,以及自动化测试、持续集成的一些概念入门
 
-二、项目管理
+## 经验
 
-实现开发过程中的一些技术、管理、流程小细节。
+从产品架构设计到项目实践,再到部署运维的各方面的技术、管理、流程小细节。
 
-三、系统运维
+## 思想
 
-包括自动化测试、持续集成(CI)等
+未来的世界不属于富人,更不属于穷人,只会属于有思想的人
 
-四、能力培养及基础常识
-
-各方面能力的培养及网络通讯、开发环境、运维测试等基础常识。
+总结个人在工作中积累的思想原则,和看重的一些能力及培养方法。
 
 ---
 
+2016.8.3晚写下了本书的第一行话,当时想的名字为《可替代的团队领袖培养计划》,其寓意是希望这些知识经验在团队内部分享,能够培养出更优秀的人才,每个人都能够替代我做得更好。如果能够因此有所建树,则将会成为不可替代的团队领袖。
+
 源码:<https://coding.net/u/willin/p/leader.js.cool/git>
 
 欢迎Coding上进行反馈交流。
 
 &copy; Willin Wang
-
-

+ 11 - 2
README.md

@@ -1,6 +1,13 @@
-# 《可替代的团队领袖培养计划》
+# 《可替代的团队领袖培养计划》
 
-<http://leader.js.cool>
+你离技术经理,只差这本书: <http://leader.js.cool>
+
+```
+info: found 59 pages
+info: found 60 asset files
+Completed counting with 25441 words.
+info: >> generation finished with success in 11.8s !
+```
 
 ### 安装
 
@@ -28,3 +35,5 @@ MIT
 通过支付宝捐赠:
 
 ![qr](https://cloud.githubusercontent.com/assets/1890238/15489630/fccbb9cc-2193-11e6-9fed-b93c59d6ef37.png)
+
+该项目始建于2016.8.3。

+ 67 - 56
SUMMARY.md

@@ -1,60 +1,71 @@
 # Summary
 
-- [设计](design/README.md)
-  - [需求分析](design/requirements.md)
-  - [产品设计](design/product.md)
-  - [系统架构](design/architecture.md)
-  - [系统实践](design/system.md)
-  - [忽略细节,就是屎](design/shit.md)
-- [项目](project/README.md)
-  - [结构](project/structure.md)
-    - [HAPI](project/source/hapi.md)
-    - [Socket.IO](project/source/socketio.md)
-    - [计划任务Later](project/source/later.md)
-    - [Electron](project/source/electron.md)
-    - [UDP](project/source/udp.md)
-    - [NativeScript](project/source/nativescript.md)
-    - [Koa](project/source/koa.md)
-  - [JavaScript](project/js/README.md)
-    - [Tricks](project/js/tricks.md)
-    - [Promise](project/js/promise.md)
-    - [ES6/7](project/js/es6.md)
-    - [Benchmark](project/js/benchmark.md)
-    - [Test](project/js/test.md)
-    - [React Redux](project/js/redux.md)
+- [知识篇](basic/README.md)
+  - [操作系统(OS X)](basic/osx.md)
+  - 必备神器
+    - [Brew](basic/resource/brew.md)
+    - [iTerm](basic/resource/iterm.md)
+    - [IDE](basic/resource/ide.md)
+    - [科学上网](basic/resource/ss.md)
+    - [在线资源](basic/resource/online.md)
+    - [离线资源](basic/resource/offline.md)
+    - [前端资源](basic/resource/frontend.md)
+  - 基础知识
+    - [HTTP](basic/knowledge/http.md)
+    - [SHELL](basic/knowledge/shell.md)
+    - [GIT](basic/knowledge/git.md)
+    - [Promise](basic/knowledge/promise.md)
+  - Vanilla JS
+    - [小技巧](basic/js/tricks.md)
+    - [Fetch AJAX](basic/js/fetch.md)
+    - [ES Next](basic/js/es.md)
+  - Node.js
+    - [包管理](basic/node/pkg.md)
+    - [Hexo静态博客搭建](basic/node/hexo.md)
+    - [GitBook静态文档生成](basic/node/gitbook.md)
+    - [Babel](basic/node/babel.md)
+    - [Test](basic/node/test.md)
+    - [Benchmark](basic/node/benchmark.md)
+    - [造轮子(NPM)篇](basic/node/npm.md)
   - DB
-    - [MySQL](project/db/mysql.md)
-    - [Redis](project/db/redis.md)
-  - Front-End
-    - [Fetch AJAX](project/fe/fetch.md)
-    - [前端库](project/fe/packages.md)
-  - [Tool](project/tool/README.md)
-    - [代码管理GIT](project/tool/git.md)
-    - [包管理](project/tool/pkg.md)
-    - [文档GitBook](project/tool/gitbook.md)
-    - [Babel](project/tool/babel.md)
-    - [守护进程PM2](project/tool/pm2.md)
-    - [造轮子(NPM)篇](project/tool/tool.md)
-  - [开发指南](project/develop.md)
-    - [功能模块设计](project/user/module.md)
-    - [数据库设计](project/user/db.md)
-    - [缓存设计](project/user/cache.md)
-    - [BDD实践](project/user/bdd.md)
-    - [代码细节处理](project/user/particulars.md)
-- [运维](operation/README.md)
-  - [SHELL](operation/shell.md)
-  - [服务器配置](operation/server.md)
-  - [CI工作流](operation/workflow.md)
-  - [重启服务](operation/restarter.md)
-  - [版本回退](operation/rollback.md)
-- [常识能力原则思想](basic/README.md)
-  - [问题处理能力](basic/solving.md)
+    - [MySQL](basic/db/mysql.md)
+    - [Redis](basic/db/redis.md)
+  - 常用框架
+    - [HAPI](basic/framework/hapi.md)
+    - [Socket.IO](basic/framework/socketio.md)
+    - [Electron](basic/framework/electron.md)
+    - [UDP](basic/framework/udp.md)
+    - [NativeScript](basic/framework/nativescript.md)
+    - [Koa](basic/framework/koa.md)
+    - [React Redux](basic/framework/redux.md)
+- [经验篇](experience/README.md)
+  - [设计](experience/design/README.md)
+    - [需求分析](experience/design/requirements.md)
+    - [产品设计](experience/design/product.md)
+    - [系统架构](experience/design/architecture.md)
+    - [系统架构设计实践](experience/design/system.md)
+    - [原生还是框架*](experience/design/choose.md)
+  - [项目](experience/project/README.md)
+    - [项目结构](experience/project/structure.md)
+    - [开发指南](experience/project/develop.md)
+    - [功能模块设计](experience/project/user/module.md)
+    - [数据库设计](experience/project/user/db.md)
+    - [缓存设计](experience/project/user/cache.md)
+    - [BDD实践](experience/project/user/bdd.md)
+    - [代码细节处理](experience/project/user/particulars.md)
+  - [运维](experience/operation/README.md)
+    - [服务器配置](experience/operation/server.md)
+    - [PM2守护进程](experience/operation/pm2.md)
+    - [Later计划任务](experience/operation/later.md)
+    - [CI工作流](experience/operation/workflow.md)
+    - [重启服务](experience/operation/restarter.md)
+    - [版本回退](experience/operation/rollback.md)
+- [思想篇](mind/README.md)
+  - 能力
+    - [问题处理能力](mind/capability/solving.md)
   - 原则
-    - [招聘原则](basic/hire.md)
-  - 基础常识
-    - [在线资源](basic/online.md)
-    - [离线资源](basic/offline.md)
-    - [OS X](basic/osx.md)
-    - [HTTP](basic/http.md)
-    - [Hexo静态博客搭建](basic/hexo.md)
-    - [翻|越G|F|W](basic/ss.md)
+    - [招聘原则](mind/tenet/hire.md)
+  - 思维模式
+    - [忽略细节,就是屎](mind/thinking/shit.md)
+    - [辩证思维*](mind/thinking/dialectical.md)
+

_static/project/mysql.png → _static/basic/db/mysql.png


_static/project/react.png → _static/basic/framework/react.png


_static/project/rebase.jpg → _static/basic/git/rebase.jpg


_static/project/reset.jpg → _static/basic/git/reset.jpg


BIN
_static/basic/js/fetch.png


BIN
_static/basic/osx/1.png


BIN
_static/basic/osx/2.png


BIN
_static/basic/osx/3.png


BIN
_static/basic/osx/4.png


BIN
_static/basic/source/iterm.png


_static/basic/image1.png → _static/basic/ss/image1.png


_static/basic/image10.png → _static/basic/ss/image10.png


_static/basic/image11.png → _static/basic/ss/image11.png


_static/basic/image12.png → _static/basic/ss/image12.png


_static/basic/image13.png → _static/basic/ss/image13.png


_static/basic/image2.png → _static/basic/ss/image2.png


_static/basic/image3.png → _static/basic/ss/image3.png


_static/basic/image4.png → _static/basic/ss/image4.png


_static/basic/image5.png → _static/basic/ss/image5.png


_static/basic/image6.png → _static/basic/ss/image6.png


_static/basic/image7.png → _static/basic/ss/image7.png


_static/basic/image8.png → _static/basic/ss/image8.png


_static/basic/image9.png → _static/basic/ss/image9.png


_static/basic/04.01.png → _static/basic/travis/04.01.png


_static/basic/04.02.png → _static/basic/travis/04.02.png


_static/basic/05.00.png → _static/basic/travis/05.00.png


_static/basic/05.01.png → _static/basic/travis/05.01.png


_static/basic/05.02.png → _static/basic/travis/05.02.png


_static/basic/05.03.png → _static/basic/travis/05.03.png


_static/basic/06.00.png → _static/basic/travis/06.00.png


_static/basic/06.01.png → _static/basic/travis/06.01.png


_static/design/er.png → _static/experience/design/er.png


_static/design/flow.png → _static/experience/design/flow.png


_static/design/mind.png → _static/experience/design/mind.png


_static/design/seq.png → _static/experience/design/seq.png


_static/design/system.png → _static/experience/design/system.png


_static/design/use-case.png → _static/experience/design/use-case.png


_static/operation/restarter1.png → _static/experience/operation/restarter1.png


_static/operation/restarter2.png → _static/experience/operation/restarter2.png


_static/operation/rollback.png → _static/experience/operation/rollback.png


_static/operation/workflow1.png → _static/experience/operation/workflow1.png


_static/operation/workflow2.png → _static/experience/operation/workflow2.png


_static/operation/workflow3-1.png → _static/experience/operation/workflow3-1.png


_static/operation/workflow3-2.png → _static/experience/operation/workflow3-2.png


_static/operation/workflow3-3.png → _static/experience/operation/workflow3-3.png


_static/operation/workflow4-1.png → _static/experience/operation/workflow4-1.png


_static/operation/workflow4-2.png → _static/experience/operation/workflow4-2.png


_static/project/flow.png → _static/experience/project/flow.png


_static/project/hmap.png → _static/experience/project/hmap.png


_static/project/sys.png → _static/experience/project/sys.png


_static/project/test.png → _static/experience/project/test.png


_static/project/user.graffle → _static/experience/project/user.graffle


BIN
_static/project/count.png


+ 10 - 2
basic/README.md

@@ -1,5 +1,13 @@
-# 能力培养及基础常识
+# 知识篇
 
-贡献知识: <https://coding.net/u/willin/p/leader.js.cool/git>
+工欲善其事,必先利其器。
 
+本章节将围绕以下几个话题依次展开:
+
+* 操作系统(OS X)
+* 效率工具
+* 设计工具
+* 开发工具
+* 测试工具
+* 技术相关基础常识
 

+ 2 - 2
project/db/mysql.md

@@ -81,8 +81,8 @@ WHERE --xxx;
 
 ## 其他
 
-阿里云RDS DMS工具: <https://dms-rds.aliyun.com/?host=>
+阿里云RDS DMS工具: <https://dms-rds.aliyun.com/>
 
 阿里云RDS性能优化工具:
 
-![Image](/_static/project/mysql.png)
+![Image](/_static/basic/db/mysql.png)

project/db/redis.md → basic/db/redis.md


project/source/electron.md → basic/framework/electron.md


project/source/hapi.md → basic/framework/hapi.md


project/source/koa.md → basic/framework/koa.md


project/source/nativescript.md → basic/framework/nativescript.md


+ 1 - 1
project/js/redux.md

@@ -6,7 +6,7 @@
 
 ## 流程图
 
-![pic-1](/_static/project/react.png)
+![pic-1](/_static/basic/framework/react.png)
 
 ## 目录结构
 

project/source/socketio.md → basic/framework/socketio.md


project/source/udp.md → basic/framework/udp.md


+ 3 - 3
project/js/es6.md

@@ -1,6 +1,6 @@
-# ES 6/7
+# ES Next
 
-## Async
+## Async (ES 7)
 
 ```js
 async function fn(args){
@@ -38,7 +38,7 @@ let bar = await barPromise;
 
 上面两种写法,`getFoo`和`getBar`都是同时触发,这样就会缩短程序的执行时间。
 
-## Proxy
+## Proxy (ES 6)
 
 经测试Node v6.1.0之后版本已集成。
 

+ 1 - 1
project/fe/fetch.md

@@ -2,7 +2,7 @@
 
 ## 浏览器兼容性
 
-<http://caniuse.com/#feat=fetch>
+![caniuse](/_static/basic/js/fetch.png)
 
 ## 支持检查
 

+ 138 - 0
basic/js/tricks.md

@@ -0,0 +1,138 @@
+# Tricks
+
+## Deep Clone
+
+问题现象:
+
+```js
+var obj1 = {
+  key1: 'value1',
+  key2: 'value2',
+  children: {
+    key3: 'value3',
+    key4: 'value4'
+  }
+}
+var obj2 = Object.assign({},obj1);
+obj2.children.key3 = 'test';
+console.log(obj1.children);
+// { key3: 'test', key4: 'value4' }
+```
+
+快速解决方案:
+
+```js
+const obj2 = JSON.parse(JSON.stringify( obj1 ));
+```
+
+## Scroll Debounce
+
+用于解决前端滚动侦听事件触发频率过高问题。
+
+核心代码:
+
+```js
+function debounce(func, wait = 20, immediate = true) {
+  var timeout;
+  return function() {
+    var context = this, args = arguments;
+    var later = function() {
+      timeout = null;
+      if (!immediate) func.apply(context, args);
+    };
+    var callNow = immediate && !timeout;
+    clearTimeout(timeout);
+    timeout = setTimeout(later, wait);
+    if (callNow) func.apply(context, args);
+  };
+};
+```
+
+
+示例代码:
+
+```js
+function testFunc(e) {
+  console.count(e);
+}
+
+window.addEventListener('scroll', ()=>console.count('bounce'));
+window.addEventListener('scroll', debounce(testFunc));
+```
+
+在浏览器中测试。
+
+## 遍历用Map还是For
+
+同是遍历,但实际有很大不同。
+
+### 对比
+
+#### map
+
+改变自身。
+
+```js
+[1,2,3,4,5].map(x => x+1)
+// [ 2, 3, 4, 5, 6 ]
+```
+
+#### for
+
+只是循环。
+
+### Benchmark测试
+
+<!-- more -->
+
+benchmark脚本:
+
+```js
+suite('iterator', function () {
+  bench('for', function () {
+    const a = [1, 2, 3, 4, 5];
+    for (let i = 0; i < a.length; i++) {
+      // nothing
+    }
+  });
+  bench('foreach', function () {
+    const a = [1, 2, 3, 4, 5];
+    a.forEach(function (d) {
+      // nothing
+    });
+  });
+  bench('for of', function () {
+    const a = [1, 2, 3, 4, 5];
+    for (let i of a) {
+      // nothing
+    }
+  });
+  bench('map', function () {
+    const a = [1, 2, 3, 4, 5];
+    a.map(x => x);
+  });
+});
+```
+
+测试结果:
+
+```bash
+                      iterator
+      50,038,931 op/s » for
+       8,980,276 op/s » foreach
+       8,990,758 op/s » for of
+       1,713,807 op/s » map
+
+
+  Suites:  1
+  Benches: 4
+  Elapsed: 5,710.33 ms
+```
+
+### 结论
+
+单凭循环 `for` 最可靠。
+
+`foreach` 和 `for ... of` 差不多。
+
+`map` 性能最低。

+ 3 - 2
project/tool/git.md

@@ -83,13 +83,14 @@ Git的checkout有两个作用,其一是在不同的branch之间进行切换,
 #### git rebase:
 
 用下面两幅图解释会比较清楚一些,rebase命令执行后,实际上是将分支点从C移到了G,这样分支也就具有了从C到G的功能
-![img](/_static/project/rebase.jpg)
+
+![img](/_static/basic/git/rebase.jpg)
 
 #### git reset:
 
 将当前的工作目录完全回滚到指定的版本号,假设如下图,我们有A-G五次提交的版本,其中C的版本号是 bbaf6fb5060b4875b18ff9ff637ce118256d6f20,我们执行了'git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20'那么结果就只剩下了A-C三个提交的版本
 
-![img](/_static/project/reset.jpg)
+![img](/_static/basic/git/reset.jpg)
 
 1. Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
 

basic/http.md → basic/knowledge/http.md


+ 0 - 2
project/js/promise.md

@@ -1,5 +1,3 @@
-<!-- toc -->
-
 # Promise思想
 
 改善Callback Hell问题

+ 0 - 2
operation/shell.md

@@ -1,7 +1,5 @@
 # 常用SHELL命令
 
-推荐使用zsh: <http://ohmyz.sh/>
-
 ## 查看磁盘可用空间
 
 ```bash

project/tool/babel.md → basic/node/babel.md


project/js/benchmark.md → basic/node/benchmark.md


+ 79 - 0
project/tool/gitbook.md

@@ -2,6 +2,8 @@
 
 GitBook是一个基于 Node.js 的命令行工具,可使用 Github/Git 和 Markdown 来制作精美的电子书
 
+## 安装使用
+
 * 登陆gitbook,使用github账号登陆,新建一个book,然后选择link to github.(不要选择gitbook在线编辑)
 
 * 新建github仓库比如some_book.git
@@ -42,3 +44,80 @@ Gitbook首先把你的Markdown文件编译为HTML文件,并根据SUMMARY.md生
 然后使用markdown语法编辑文章,开启本地服务器:
 
     $ gitbook serve
+
+## 插件使用
+
+添加插件后使用 
+
+```bash
+gitbook install
+```
+
+进行安装
+
+### TOC 目录生成
+
+book.json 配置:
+
+```json
+{
+    "plugins": ["atoc"],
+    "pluginsConfig": {
+        "atoc": {
+            "addClass": true,
+            "className": "atoc"
+        }
+    }
+}
+```
+
+在需要使用目录的章节文字顶部加入
+
+```html
+<!-- toc -->
+```
+
+即可生成文档目录。
+
+
+### 捐赠插件
+
+book.json配置:
+
+```json
+{
+    "plugins": ["donate"],
+    "pluginsConfig": {
+        "donate": {
+          "wechat": "例:/images/qr.png",
+          "alipay": "http://blog.willin.wang/static/images/qr.png",
+          "title": "默认空",
+          "button": "默认值:Donate",
+          "alipayText": "默认值:支付宝捐赠",
+          "wechatText": "默认值:微信捐赠"
+        }
+    }
+}
+```
+
+### 文章字数统计
+
+book.json配置:
+
+```json
+{
+    "plugins": ["wordcount"]
+}
+```
+
+运行示例:
+
+```
+info: found 24 pages
+info: found 99 asset files
+Completed counting with 13313 words.
+info: >> generation finished with success in 5.8s !
+
+Starting server ...
+Serving book on http://localhost:4000
+```

+ 9 - 9
basic/hexo.md

@@ -236,36 +236,36 @@ git clone -b raw <仓库克隆URL> #只Clone出新建的raw分支 保留master
 ## 3. 使用Travis CI
 
 首先我们先打开[Travis CI](https://travis-ci.org/),可以在右上角找到使用GitHub登陆的按钮。
-![travis ci](/_static/basic/travis.png)
+![travis ci](/_static/basic/travis/travis.png)
 
 授权完成后,你可以在左上角找到My Repositories一旁的加号“+”,点击它,它就会列出你所有的仓库,你只需要找到刚才的 hexo.github.io 并把它左侧的开关打开就可以了。
 
-![img](/_static/basic/04.01.png)
-![img](/_static/basic/04.02.png)
+![img](/_static/basic/travis/04.01.png)
+![img](/_static/basic/travis/04.02.png)
 
 ## 4. 生成GitHub Personal Access Token
 登录GitHub,在右上角头像处进入设置。
 
-![img](/_static/basic/05.00.png)
+![img](/_static/basic/travis/05.00.png)
 
 在左侧找到 Personal access tokens,并点击右上角的 Generate new token。
 
-![img](/_static/basic/05.01.png)
+![img](/_static/basic/travis/05.01.png)
 
 需要为新的Token输入一个名字,这里我们就填入 Travis CI 好了。
 
-![img](/_static/basic/05.02.png)
+![img](/_static/basic/travis/05.02.png)
 
 确定生成后,Token将显示在页面上,此时需要将其复制并保存好,并避免泄露。遗忘Token后不能找回,只能重新生成。
 
-![img](/_static/basic/05.03.png)
+![img](/_static/basic/travis/05.03.png)
 
 最后,我们还需要[生成随机字符串](https://www.random.org/strings/?num=10&len=20&digits=on&upperalpha=on&loweralpha=on&unique=on&format=html&rnd=new),并在其中选择一行随机字符串,为下文备用。
 
 ## 5. 配置Travis CI
 首先在Travis CI中找到已经启用自动构建的仓库,并在右侧找到设置按钮。
 
-![img](/_static/basic/06.00.png)
+![img](/_static/basic/travis/06.00.png)
 
 注意:该图片中的仓库名称为SumiMakito.github.io,但我们这里的名称应该为Hexo.github.io。
 
@@ -279,7 +279,7 @@ GitHubKEY = 上文生成的GitHub Personal Access Token
 NOTIFY_TOKEN = 上文生成的随机字符串
 ```
 
-![img](/_static/basic/06.01.png)
+![img](/_static/basic/travis/06.01.png)
 
 在每次Push后,Travis CI将检查分支下的 .travis.yml 文件,并以此作为配置进行构建。
 

project/tool/tool.md → basic/node/npm.md


+ 14 - 12
project/tool/pkg.md

@@ -1,12 +1,14 @@
-# 包管理 NPM
+# Node.js 包管理 
 
-## 初始化项目
+## NPM
+
+### 初始化项目
 
 ```bash
 npm init
 ```
 
-## 安装依赖
+### 安装依赖
 
 ```bash
 # 产品环境依赖
@@ -17,7 +19,7 @@ npm install -D package-name
 npm install -O package-name
 ```
 
-## 命令
+### 命令
 
 Package.json里:
 
@@ -54,11 +56,11 @@ npm run test
 * 通过`npm install --save-dev CLI`安装
 * 使用`./node_modules/.bin/CLI`
 
-# 包管理 Yarn
+## Yarn
 
 <https://yarnpkg.com/>
 
-## 安装 Yarn
+### 安装 Yarn
 
 前置条件Brew(Mac OS X)
 
@@ -74,15 +76,15 @@ brew install yarn
 export PATH="$PATH:`yarn global bin`"
 ```
 
-## 使用
+### 使用
 
-### 新建项目
+#### 新建项目
 
 ```bash
 yarn init
 ```
 
-### 安装依赖
+#### 安装依赖
 
 ```bash
 yarn add [package]
@@ -90,7 +92,7 @@ yarn add [package]@[version]
 yarn add [package]@[tag]
 ```
 
-### 更新依赖
+#### 更新依赖
 
 ```bash
 yarn upgrade [package]
@@ -98,13 +100,13 @@ yarn upgrade [package]@[version]
 yarn upgrade [package]@[tag]
 ```
 
-### 删除依赖
+#### 删除依赖
 
 ```bash
 yarn remove [package]
 ```
 
-### 安装项目所有依赖
+#### 安装项目所有依赖
 
 ```bash
 yarn

project/js/test.md → basic/node/test.md


+ 29 - 82
basic/osx.md

@@ -1,113 +1,60 @@
 # OS X
 
+最适合设计开发的操作系统,无论是对于GUI依赖者还是命令行发烧友。
+
 ## 应用安装
 
-> 系统偏好设置 -> 安全性与隐私 -> 允许从以下位置下载的应用  -> 改为“任何来源”
+大多数非App Store下载的应用在安装的时候都会提示未知开发者,所以需要将系统设置为允许任何来源,才可以安装这些应用
 
-<!-- ## 关闭SIP
+![2](/_static/basic/osx/2.png)
 
-重启Mac,按CMD+R,进入recovery界面,在顶部工具栏选择“终端”:
+设置步骤如下:
 
-```
-csrutil disable
-``` -->
+> 系统偏好设置 -> 安全性与隐私 -> 允许从以下位置下载的应用  -> 改为“任何来源”
 
-## 安装Xcode
+![1](/_static/basic/osx/1.png)
 
-以及 Command Line Tools
+如果是`10.12`及以后版本,会没有“任何来源”这个选项,需要在`终端(Terminal)`中执行以下命令:
 
+```bash
+sudo spctl --master-disable
+```
 
-## 本地DNS配置
+![3](/_static/basic/osx/3.png)
 
-Localhost下的泛域名指定
+输入密码,然后再重复上面的设置步骤。
 
-需要先安装 `brew` (离线资源)
+## 安装Command Line Tools
 
-```
-brew install dnsmasq
-mkdir -pv $(brew --prefix)/etc/
-echo 'address=/.cxl/10.2.1.86' > $(brew --prefix)/etc/dnsmasq.conf
-sudo cp -v $(brew --prefix dnsmasq)/homebrew.mxcl.dnsmasq.plist /Library/LaunchDaemons
-sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
-sudo mkdir -v /etc/resolver
-sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/cxl'
-```
+大多数开发软件都会依赖这个工具。
 
-## Parallels 全屏禁止触发角
+### 方法一: 通过XCode安装
 
-在 `配置` -> `安全` -> `退出windows全屏模式时候需要密码` 打勾即可
+缺点就是速度慢,如果不是 OS X 或 iOS 开发可以通过命令行安装。
 
-## 百度网盘下载工具 Aria2
+### 方法二: 命令行
 
-### 通过Brew安装Aria2
+终端命令:
 
 ```bash
-brew install aria2
+xcode-select --install
 ```
 
-### 浏览器插件
 
-<https://github.com/acgotaku/BaiduExporter/releases>
+## Parallels 全屏禁止触发角
 
+![4](/_static/basic/osx/4.png)
 
-### 运行
+在 `配置` -> `安全` -> `退出windows全屏模式时候需要密码` 打勾即可
 
-```bash
-aria2c --conf-path=~/.aria2.conf -D
-```
 
-.aria2.conf:
 
-```
-#设置加密的密钥
-#rpc-secret=token
-#允许rpc
-enable-rpc=true
-#允许所有来源, web界面跨域权限需要
-rpc-allow-origin-all=true
-#允许外部访问,false的话只监听本地端口
-rpc-listen-all=true
-#RPC端口, 仅当默认端口被占用时修改
-#rpc-listen-port=6800
-#最大同时下载数(任务数), 路由建议值: 3
-max-concurrent-downloads=5
-#断点续传
-continue=true
-#同服务器连接数
-max-connection-per-server=5
-#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
-min-split-size=10M
-#单文件最大线程数, 路由建议值: 5
-split=10
-#下载速度限制
-max-overall-download-limit=0
-#单文件速度限制
-max-download-limit=0
-#上传速度限制
-max-overall-upload-limit=0
-#单文件速度限制
-max-upload-limit=0
-#断开速度过慢的连接
-#lowest-speed-limit=0
-#验证用,需要1.16.1之后的release版本
-#referer=*
-#文件保存路径, 默认为当前启动位置
-dir=~/Downloads
-#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
-#disk-cache=0
-#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
-#enable-mmap=true
-#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
-#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
-file-allocation=prealloc
-```
+## 关闭SIP
 
-### GUI界面
+重启Mac,按住CMD+R,进入recovery界面,在顶部工具栏选择“终端”:
 
-<http://binux.github.io/yaaw/demo/>
-
-设置URL:
+```bash
+csrutil disable
+``` 
 
-```
-http://127.0.0.1:6800/jsonrpc
-```
+注意: 该项仅在需要安装 `xtraFinder` 之类应用时才需要。

+ 149 - 0
basic/resource/brew.md

@@ -0,0 +1,149 @@
+# Brew
+
+官方网址: <http://brew.sh/>
+
+用于安装各类 *nix 依赖包和应用。
+
+```bash
+/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+```
+
+## 常用应用
+
+安装示例:
+
+```bash
+brew install wget
+```
+
+常用命令:
+
+* wget
+* tree
+* autojump 配合zsh使用
+* thefuck
+
+Node.js相关:
+
+* node
+* yarn
+* pkg-config
+
+代理:
+
+* proxychains-ng
+
+数据库、缓存:
+
+* mysql
+* redis
+
+## Brew Cask
+
+可以用于安装管理桌面应用。
+
+### 安装 Brew Cask
+
+```bash
+brew tap caskroom/cask
+```
+
+### Brew Cask 常用应用
+
+```
+brew cask install google-chrome
+```
+
+* launchrocket 可以管理服务,如Redis、MySQL、Nginx等
+* filezilla
+* macdown
+
+查找可用应用: <https://caskroom.github.io/search>
+
+## 本地DNS配置
+
+Localhost下的泛域名指定
+
+```
+brew install dnsmasq
+mkdir -pv $(brew --prefix)/etc/
+echo 'address=/.cxl/10.2.1.86' > $(brew --prefix)/etc/dnsmasq.conf
+sudo cp -v $(brew --prefix dnsmasq)/homebrew.mxcl.dnsmasq.plist /Library/LaunchDaemons
+sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
+sudo mkdir -v /etc/resolver
+sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/cxl'
+```
+
+## 百度网盘下载工具 Aria2
+
+### 通过Brew安装Aria2
+
+```bash
+brew install aria2
+```
+
+### 浏览器插件
+
+<https://github.com/acgotaku/BaiduExporter/releases>
+
+### 运行
+
+```bash
+aria2c --conf-path=~/.aria2.conf -D
+```
+
+.aria2.conf:
+
+```
+#设置加密的密钥
+#rpc-secret=token
+#允许rpc
+enable-rpc=true
+#允许所有来源, web界面跨域权限需要
+rpc-allow-origin-all=true
+#允许外部访问,false的话只监听本地端口
+rpc-listen-all=true
+#RPC端口, 仅当默认端口被占用时修改
+#rpc-listen-port=6800
+#最大同时下载数(任务数), 路由建议值: 3
+max-concurrent-downloads=5
+#断点续传
+continue=true
+#同服务器连接数
+max-connection-per-server=5
+#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
+min-split-size=10M
+#单文件最大线程数, 路由建议值: 5
+split=10
+#下载速度限制
+max-overall-download-limit=0
+#单文件速度限制
+max-download-limit=0
+#上传速度限制
+max-overall-upload-limit=0
+#单文件速度限制
+max-upload-limit=0
+#断开速度过慢的连接
+#lowest-speed-limit=0
+#验证用,需要1.16.1之后的release版本
+#referer=*
+#文件保存路径, 默认为当前启动位置
+dir=~/Downloads
+#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
+#disk-cache=0
+#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
+#enable-mmap=true
+#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
+#所需时间 none < falloc ? trunc << prealloc, falloc和trunc需要文件系统和内核支持
+file-allocation=prealloc
+```
+
+### GUI界面
+
+<http://binux.github.io/yaaw/demo/>
+
+设置URL:
+
+```
+http://127.0.0.1:6800/jsonrpc
+```

+ 1 - 3
project/fe/packages.md

@@ -1,6 +1,4 @@
-# 前端库
-
-尽量使用`Vanilla JS`提升性能,避免使用`jQuery`、`EXTJS`、`Zepto`等。
+# 前端资源
 
 《你可能用不上jQuery》:<http://youmightnotneedjquery.com/>
 

+ 443 - 0
basic/resource/ide.md

@@ -0,0 +1,443 @@
+# 安装配置IDE
+
+适合前端、后端、全栈工程师,尤其以Javascript(Node.js)为主。
+
+目前我个人用的最多的是VS Code。
+
+该章节不过多对比,根据个人喜好选择。入门请使用WebStorm,进阶Atom、VS Code, Sublime Text不适合项目开发使用,比较适合调试使用。
+
+具体配置及按键映射,如Atom和VS Code的,也需要根据个人喜好来设置,可以在安装后查看全局配置,自行修改调整。记得做好备份。
+
+## WebStorm
+
+官方地址: <http://www.jetbrains.com/webstorm/>
+
+适合新手入门。
+
+## Sublime Text 3
+
+### 安装
+
+下载地址: <http://www.sublimetext.com/3>
+
+### 配置subl快捷命令(OS X)
+
+图省事的话可以直接先尝试在终端(或iTerm)里 执行:
+
+```
+ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl
+```
+
+-------------------
+
+#### 详细过程分解
+
+Finder中打开应用程序目录,找到 `Sublime Text`应用,右键菜单选择 `显示包内容`,
+
+进入 `Contents -> SharedSupport -> bin` 目录,看到一个subl文件
+
+打开终端,输入:
+
+```
+ln -s (停止输入,把Finder里的那个subl文件拖进来,按一个空格继续输入) /usr/local/bin/subl
+```
+
+如果提示 `ln: /usr/local/bin123/subl: No such file or directory` 输入:
+
+```
+mkdir /usr/local/bin
+```
+
+然后再重新执行上一条命令。
+
+
+### 安装 Package Control
+
+安装完成后,打开Sublime , 按下 `ctrl + ~`,在弹出的控制台中输入:
+
+```python
+import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())
+```
+
+以后使用快捷键 `⌘(command) + ⇧(shift) + p` 输入 Install, 就能够调出Package Install进行Sublime的插件主题安装了.
+
+### 安装配置主题
+
+调出Package Install, 输入 `theme`, 大多数主题都是以 `Theme:` 开头,可以鼠标或键盘上下键选择,点击或回车便开始进行安装。
+
+安装完成后从 `Preference (左上角苹果按钮旁边点Sublime Text) -> Color Scheme` 选择你所安装的主题并启用。
+
+### 常用插件
+
+1.Terminal
+
+安装完成后从 `Preference -> Package Settings -> Terminal -> Settings - Default` 进入配置,
+
+修改
+
+```
+	"terminal": "",
+```
+
+为
+
+
+```
+	"terminal": "iTerm.sh",
+```
+
+即可右键从 iTerm 中打开当前目录了。
+
+## Atom
+
+下载地址: <https://atom.io/>
+
+进阶使用,或VS Code。
+
+之前我个人一直用的WebStorm,一方面这是个付费的IDE;另一方面是该环境内存开销比较大,自带功能太多,对于新人来讲是不错的选择,但是慢慢的对开发熟悉后,并不太需要那些辅助的功能和插件,所以会尝试一些更轻量级、灵活的编辑器。
+
+### 插件列表 / Plugin List
+
+```
+Community Packages (49) /Users/willin/.atom/packages
+├── activate-power-mode@0.7.4
+├── atom-beautify
+├── atom-jade@0.3.0
+├── atom-material-syntax@0.4.6
+├── atom-material-ui@1.3.3
+├── atom-terminal-panel@4.4.4
+├── atom-ternjs@0.14.2
+├── atom-typescript@10.1.6
+├── auto-update-packages@1.0.1
+├── autoclose-html@0.23.0
+├── autocomplete-modules@1.6.1
+├── ava@0.7.0
+├── color-picker@2.2.2
+├── csslint@1.1.5
+├── docblockr@0.8.2
+├── editorconfig@1.4.1
+├── file-icons@1.7.18
+├── git-log@0.4.1
+├── git-time-machine@1.5.3
+├── highlight-selected@0.11.2
+├── hyperclick@0.0.37
+├── js-hyperclick@1.4.2
+├── language-babel
+├── language-dots@0.0.4
+├── language-javascript-jsx@0.3.7
+├── language-swigjs@0.3.1
+├── linter@1.11.16
+├── linter-eslint@7.2.4
+├── linter-tslint@0.11.1
+├── markdown-scroll-sync@2.1.2
+├── merge-conflicts@1.4.4
+├── minimap@4.24.7
+├── minimap-git-diff@4.3.1
+├── minimap-highlight-selected@4.4.0
+├── minimap-pigments@0.2.1
+├── open-in-browser@0.4.7
+├── open-recent@5.0.0
+├── pigments@0.31.2
+├── project-manager@2.9.7
+├── project-switcher@0.3.0
+├── rest-client@1.2.1
+├── screen-recorder@1.2.0
+├── seti-ui@1.3.1
+├── simplified-chinese-menu@3.4.11
+├── sort-lines@0.14.0
+├── terminal-plus@0.14.5
+├── todo-show@1.7.0
+├── tool-bar@1.0.1
+└── tool-bar-config@0.1.0
+```
+
+### 推荐配置
+
+```
+"*":
+  "activate-power-mode":
+    particles:
+      size: {}
+      spawnCount: {}
+      totalCount: {}
+    screenShake: {}
+  "atom-beautify":
+    apex: {}
+    arduino: {}
+    c: {}
+    cfml: {}
+    coffeescript:
+      indent_size: 2
+    cpp: {}
+    cs: {}
+    css: {}
+    d: {}
+    ejs: {}
+    erb: {}
+    fortran: {}
+    general:
+      _analyticsUserId: "ea162638-166c-40b5-835b-108ef72f93f3"
+      analytics: false
+      beautifyEntireFileOnSave: false
+    gherkin: {}
+    handlebars: {}
+    html:
+      end_with_newline: true
+      indent_inner_html: true
+      indent_size: 2
+      max_preserve_newlines: 1
+    jade: {}
+    java: {}
+    js:
+      brace_style: "collapse-preserve-inline"
+      end_with_comma: true
+      end_with_newline: true
+      indent_size: 2
+      keep_function_indentation: true
+    json:
+      beautify_on_save: true
+      indent_size: 2
+    jsx: {}
+    latex: {}
+    less: {}
+    marko: {}
+    mustache: {}
+    objectivec: {}
+    pawn: {}
+    perl: {}
+    php: {}
+    python: {}
+    riot: {}
+    ruby: {}
+    rust: {}
+    sass: {}
+    scss: {}
+    spacebars: {}
+    sql: {}
+    svg: {}
+    swig: {}
+    tss: {}
+    twig: {}
+    typescript: {}
+    vala: {}
+    visualforce: {}
+    xml: {}
+    xtemplate: {}
+  "autoclose-html": {}
+  autosave:
+    enabled: true
+  core:
+    disabledPackages: [
+      "atom-terminal-panel"
+      "atom-beautify"
+      "editorconfig"
+    ]
+    themes: [
+      "atom-material-ui"
+      "atom-material-syntax"
+    ]
+  editor:
+    fontFamily: "'Source Code Pro for Powerline','Electrolize'"
+    fontSize: 15
+    invisibles: {}
+    showIndentGuide: true
+    softWrap: true
+  "exception-reporting":
+    userId: "69f2bdd3-5fcf-f92b-ecd5-461248e4bd3f"
+  "file-icons":
+    onChanges: true
+  "highlight-selected": {}
+  "js-hyperclick": {}
+  linter:
+    errorPanelHeight: 71
+    showErrorPanel: false
+    showErrorTabLine: true
+  "linter-eslint":
+    fixOnSave: true
+  "merge-conflicts": {}
+  minimap:
+    plugins:
+      "git-diff": true
+      "git-diffDecorationsZIndex": 0
+      "highlight-selected": true
+      "highlight-selectedDecorationsZIndex": 0
+      pigments: true
+      pigmentsDecorationsZIndex: 0
+  "project-manager":
+    sortBy: "last modified"
+  "rest-client": {}
+  "simplified-chinese-menu": {}
+  "split-diff":
+    diffWords: true
+    ignoreWhitespace: true
+    leftEditorColor: "red"
+    rightEditorColor: "green"
+    syncHorizontalScroll: true
+  "terminal-plus":
+    core:
+      mapTerminalsTo: "Folder"
+    style:
+      fontFamily: "'Source Code Pro for Powerline'"
+  "todo-show":
+    ignoreThesePaths: [
+      "**/node_modules/"
+      "**/vendor/"
+      "**/bower_components/"
+      "**/public/"
+    ]
+  "tool-bar":
+    position: "Left"
+  "tool-bar-config": [
+    {
+      icon: "document"
+      iconSet: "ion"
+      title: "New File"
+      callback: "application:new-file"
+    }
+    {
+      icon: "folder"
+      iconSet: "ion"
+      title: "Open..."
+      callback: "application:open-folder"
+    }
+    {
+      icon: "archive"
+      iconSet: "ion"
+      title: "Save"
+      callback: "core:save"
+    }
+    {
+      icon: "spacer"
+    }
+    {
+      icon: "search"
+      iconSet: "ion"
+      title: "Find in Buffer"
+      callback: "find-and-replace:show"
+    }
+    {
+      icon: "shuffle"
+      iconSet: "ion"
+      title: "Replace in Buffer"
+      callback: "find-and-replace:show-replace"
+    }
+    {
+      icon: "spacer"
+    }
+    {
+      icon: "navicon-round"
+      iconSet: "ion"
+      title: "Toggle Command Palette"
+      callback: "command-palette:toggle"
+    }
+    {
+      icon: "gear-a"
+      iconSet: "ion"
+      title: "Open Settings View"
+      callback: "settings-view:open"
+    }
+    {
+      icon: "spacer"
+    }
+    {
+      icon: "refresh"
+      iconSet: "ion"
+      title: "Reload Window"
+      callback: "window:reload"
+    }
+  ]
+  "tree-view":
+    autoReveal: true
+  welcome:
+    showOnStartup: false
+```
+
+### keymap.cson
+
+(`快捷键`根据个人喜好和习惯设定 / up to your habit)
+
+
+```
+'atom-text-editor':
+  'cmd-alt-l': 'atom-beautify:beautify-editor'
+  'cmd-shift-l': 'atom-beautify:beautify-editor'
+  'cmd-alt-j': 'activate-power-mode:toggle'
+  'cmd-shift-j': 'activate-power-mode:toggle'
+  'cmd-`': 'terminal-plus:toggle'
+  'cmd-alt-up': 'pane:split-up'
+  'cmd-alt-down': 'pane:split-down'
+  'cmd-alt-left': 'pane:split-left'
+  'cmd-alt-right': 'pane:split-right'
+  'cmd-alt-shift-up':'window:focus-pane-on-up'
+  'cmd-alt-shift-down':'window:focus-pane-on-down'
+  'cmd-alt-shift-left':'window:focus-pane-on-left'
+  'cmd-alt-shift-right':'window:focus-pane-on-right'
+  'cmd-k':'pane:close'
+  'cmd-1':'todo-show:find-in-project'
+```
+
+## Visual Studio Code
+
+下载地址: <https://code.visualstudio.com/>
+
+在用了半年多Atom之后,一次更新导致了Terminal插件失效,所以转到了VS Code。
+
+在1.6之后的版本中内置了终端,所以还算不错。
+
+比Atom快了很多,尤其是压缩过的js代码,在Atom中打开简直就是噩梦,可能是因为代码自动格式化引起的,原因不详。
+
+VS Code不足在于:
+
+* ESLint 报错不能直接跳转到网站详细说明
+* 没有MiniMap插件
+* 没有Power Mode插件,当然这个只是自嗨用的,无关痛痒
+
+整体来讲,还是头一次对微软的东西这么满意。
+
+### 配置
+
+```
+{
+    "editor.tabSize": 2,
+    "editor.fontSize": 13,
+    "editor.fontFamily": "'Source Code Pro for Powerline', Menlo, Monaco, 'Courier New', monospace",
+    "editor.fontWeight": "normal",
+    "editor.formatOnType": true,
+    "editor.wordWrap": true,
+    "extensions.autoUpdate": true,
+    "files.autoSave": "afterDelay",
+    "files.autoSaveDelay": 5000,
+    "terminal.external.osxExec": "iTerm.app",
+    "telemetry.enableTelemetry": false,
+    "telemetry.enableCrashReporter": false,
+    "window.zoomLevel": 1,
+    // 插件定义
+    "eslint.autoFixOnSave": true
+  }
+```
+
+### 按键
+
+```
+[
+  // HHKB
+  { "key": "cmd+escape", "command": "workbench.action.terminal.toggleTerminal" },
+  { "key": "cmd+shift+escape", "command": "workbench.action.showErrorsWarnings"},
+  { "key": "alt+i", "command": "cursorUp", "when": "editorTextFocus" },
+  { "key": "alt+j", "command": "cursorLeft", "when": "editorTextFocus" },
+  { "key": "alt+k", "command": "cursorDown", "when": "editorTextFocus" },
+  { "key": "alt+l", "command": "cursorRight", "when": "editorTextFocus" }
+]
+```
+
+### 插件
+
+* Auto Close Tag
+* ESLint
+* exports autocomplete
+* Material Icon Theme
+* Material-theme
+* Project Manager
+* Sass
+* TODO Highlight
+* VS Color Picker

+ 38 - 0
basic/resource/iterm.md

@@ -0,0 +1,38 @@
+# iTerm
+
+![iterm](/_static/basic/source/iterm.png)
+
+下载安装: <https://www.iterm2.com/>
+
+## 安装 Oh My Zsh
+
+安装:
+
+```bash
+sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
+```
+
+## 配置iTerm主题
+
+推荐使用`Solarized`, 下载地址: <http://ethanschoonover.com/solarized/files/solarized.zip>
+
+解压后`iterm2-colors-solarized`目录下,双击即可安装
+
+安装完成后 在iTerm的 `Preference (左上角苹果按钮旁边点Sublime Text) -> Profiles 顶部大选项卡 -> Colors 偏右小选项卡 -> Load Presets 底部下拉菜单` 启用主题
+
+## 配置Oh My Zsh主题和插件
+
+配置文件路径:
+
+```
+~/.zshrc
+```
+
+搜索 `ZSH_THEME=` 修改主题,默认主题为 `robbyrussell`, 想要折腾的话,可以试试`agnoster`, 需要安装 `PowerLine` 字体
+
+可用主题列表: <https://github.com/robbyrussell/oh-my-zsh/wiki/Themes>
+
+搜索 `plugins=` 增改弃用的插件
+
+可用插件列表: <https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins>
+

+ 13 - 2
basic/offline.md

@@ -11,14 +11,22 @@
 * Skim: [http://skim-app.sourceforge.net/](http://skim-app.sourceforge.net/) (PDF阅读)
 * Moom (调整窗口大小)
 * Autojump (Terminal自动定位到目录的神器): brew install autojump (然后修改 `.zshrc` 在 `plugins` 里面加上`autojump`)
-
+* Dash (文档管理)
 
 ## IDE
 
+* **VS Code** <https://code.visualstudio.com/>
 * **Atom:** <https://atom.io/>
 * WebStorm *(收费)*: [http://www.jetbrains.com/webstorm/](http://www.jetbrains.com/webstorm/)
 * Sublime Text 3: [http://www.sublimetext.com/3](http://www.sublimetext.com/3)
-* MacDown: [http://macdown.uranusjr.com/](http://macdown.uranusjr.com/)
+* MacDown [http://macdown.uranusjr.com/](http://macdown.uranusjr.com/)
+
+## 设计工具
+
+* OmniGraffle (UML建模)
+* Mindjet MindManager (思维导图)
+* Sketch (原型)
+* Axure (原型)
 
 ## 浏览器插件
 
@@ -26,11 +34,13 @@
 
 Chrome Dev: [https://dl.google.com/chrome/mac/dev/GoogleChrome.dmg](https://dl.google.com/chrome/mac/dev/GoogleChrome.dmg)
 
+* **HTTP/2 检测 HTTP/2 and SPDY indicator:** <https://chrome.google.com/webstore/detail/http2-and-spdy-indicator/mpbpobfflnpcgagjijhmgnchggcjblin>
 * **梯|子 Proxy SwitchyOmega:** [https://chrome.google.com/webstore/detail/padekgcemlokbadohgkifijomclgjgif](https://chrome.google.com/webstore/detail/padekgcemlokbadohgkifijomclgjgif)
 * **正则工具 RegExp Tester App:** [https://chrome.google.com/webstore/detail/regexp-tester-app/cmmblmkfaijaadfjapjddbeaoffeccib](https://chrome.google.com/webstore/detail/regexp-tester-app/cmmblmkfaijaadfjapjddbeaoffeccib)
 * **取色器 ColorZilla:** [https://chrome.google.com/webstore/detail/bhlhnicpbhignbdhedgjhgdocnmhomnp](https://chrome.google.com/webstore/detail/bhlhnicpbhignbdhedgjhgdocnmhomnp)
 * **JSON美化 JsonView:** [https://chrome.google.com/webstore/detail/jsonview-jsonviewer-json/hdmbdioamgdkppmocchpkjhbpfmpjiei](https://chrome.google.com/webstore/detail/jsonview-jsonviewer-json/hdmbdioamgdkppmocchpkjhbpfmpjiei)
 * **模拟请求 Postman:** [https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm](https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm)
+* 服务器环境嗅探 Wappalyzer: <https://chrome.google.com/webstore/detail/wappalyzer/gppongmhjkpfnbhagpmjfkannfbllamg>
 * 服务器环境嗅探 ChromeSnifferPlus: [https://github.com/justjavac/ChromeSnifferPlus](https://github.com/justjavac/ChromeSnifferPlus)
 * 时间戳 Utime: [https://chrome.google.com/webstore/detail/utime/kpcibgnngaaabebmcabmkocdokepdaki](https://chrome.google.com/webstore/detail/utime/kpcibgnngaaabebmcabmkocdokepdaki)
 
@@ -47,6 +57,7 @@ Chrome Dev: [https://dl.google.com/chrome/mac/dev/GoogleChrome.dmg](https://dl.g
 
 ### Node.js
 
+* YARN: <https://yarnpkg.com/>
 * NVM: [https://github.com/creationix/nvm](https://github.com/creationix/nvm)
 * CNPM: [http://npm.taobao.org/](http://npm.taobao.org/)
 * Labeb: <https://github.com/mohebifar/lebab> (ES5代码转ES6工具)

+ 1 - 0
basic/online.md

@@ -11,6 +11,7 @@
 
 ## 代码运行
 
+* <http://runjs.cn/code/>
 * <http://jsbin.com/>
 * <http://codepen.io/pen/>
 * <https://jsfiddle.net/>

+ 15 - 13
basic/ss.md

@@ -1,6 +1,8 @@
 ## Shad0ws0cks
 
-  Shad0ws0cks是一款轻量级socks代理软件,速度快,而且可以跨平台使用。 在这里假定我们已经获取到账号.
+> Across the Great Wall we can reach every corner in the world.
+
+Shad0ws0cks是一款轻量级socks代理软件,速度快,而且可以跨平台使用。 在这里假定我们已经获取到账号.
 
 下载:
 
@@ -12,13 +14,13 @@ os-x: <https://github.com/Shad0ws0cks/Shad0ws0cksX-NG/releases>
 
 找到安装包解压,右键shad0ws0cks.exe,以管理员身份运行,在任务栏里面找到图标,右键,服务器->编辑服务器
 
-![](/_static/basic/image1.png)
+![](/_static/basic/ss/image1.png)
 
 根据购买的服务器帐号信息,添加服务器IP,端口,密码,点击确定,如果有多个账号,就点击添加,最后确定。
 
 然后程序就会自动连接服务器.
 
-![](/_static/basic/image2.png)
+![](/_static/basic/ss/image2.png)
 
 然后通过 Firefox 下的 Autoproxy 或者 Chrome 下的 SwichyOmega 之类惯用的扩展插件设置一下 SOCKS 5 代理服务
 
@@ -27,45 +29,45 @@ os-x: <https://github.com/Shad0ws0cks/Shad0ws0cksX-NG/releases>
 下载:
 SwichyOmega:[https://github.comShad0ws0cks/FelisCatus/SwitchyOmega/releases](https://github.com/FelisCatus/SwitchyOmega/releases)
 
-![](/_static/basic/image3.png)
+![](/_static/basic/ss/image3.png)
 
 下载.rcx文件,下载完成拖入谷歌扩展程序列表安装并开启.安装完毕后会自动开启选项界面:
 
-![](/_static/basic/image4.png)
+![](/_static/basic/ss/image4.png)
 
 这里有一段介绍性的教程。如果想了解SwitchyOmega的不妨跟着教程走一遍。
 
 点击proxy情景模式:
 
-![](/_static/basic/image5.png)
+![](/_static/basic/ss/image5.png)
 
 按照选择的代理服务器要求填写以上红线部分,这里用的是Shad0ws0cks,所以代理协议选择socks5,代理端口号为刚刚在编辑服务器时设置的本机端口号。
 
 点击选择自动代理情景模式
 
-![](/_static/basic/image6.png)
+![](/_static/basic/ss/image6.png)
 
 添加条件设置,即添加需要永久自动启动代理访问的域名:
 
-![](/_static/basic/image7.png)
+![](/_static/basic/ss/image7.png)
 
 就可以使得这些域名通配符匹配的域名可以通过代理访问,永久的(即以后浏览这些网站都自动使用代理模式)。
 除了在选项界面添加条件,也可以在浏览器右上角小图标设置,如下:
 
-![](/_static/basic/image8.png)
+![](/_static/basic/ss/image8.png)
 
 点击添加条件
 
-![](/_static/basic/image9.png)
+![](/_static/basic/ss/image9.png)
 
 或者点击资源未加载
 
-![](/_static/basic/image10.png)
+![](/_static/basic/ss/image10.png)
 
 就可以添加到自动代理模式。
 
 但是,有些网站有时候抽风需要翻墙访问,有时候不需要,那就可以临时设置代理模式,默认是直接连接,如下:
 
-![](/_static/basic/image11.png)
+![](/_static/basic/ss/image11.png)
 
-点击proxy,此时,就可以访问临时需要翻墙的网站了。图标为![](/_static/basic/image12.png)时为直接连接,图标为![](/_static/basic/image13.png)时为代理模式。
+点击proxy,此时,就可以访问临时需要翻墙的网站了。图标为![](/_static/basic/ss/image12.png)时为直接连接,图标为![](/_static/basic/ss/image13.png)时为代理模式。

+ 2 - 1
book.json

@@ -8,7 +8,7 @@
   },
   "plugins": [
     "addcssjs",
-    "atoc",
+    "-atoc",
     "fancybox",
     "donate",
     "github",
@@ -17,6 +17,7 @@
     "-edit-link",
     "adsense",
     "-maxiang",
+    "wordcount",
     "sitemap"
   ],
   "pluginsConfig": {

+ 5 - 5
cmd

@@ -13,8 +13,8 @@ git commit -m "Gitbook Auto Deployed"
 git remote add origin git@git.coding.net:willin/leader.js.cool.git
 git push -f origin master:coding-pages
 
-cd ..
-cd _private
-git add .
-git commit -m 'Gitbook Auto Published'
-git push origin master
+# cd ..
+# cd _private
+# git add .
+# git commit -m 'Gitbook Auto Published'
+# git push origin master

design/README.md → experience/design/README.md


design/architecture.md → experience/design/architecture.md


+ 4 - 0
experience/design/choose.md

@@ -0,0 +1,4 @@
+# 选择原生JS还是用框架?
+
+使用`Vanilla JS`可以极大提升性能,使用`jQuery`、`EXTJS`、`Zepto`可以缩减开发时间。
+

design/product.md → experience/design/product.md


design/requirements.md → experience/design/requirements.md


+ 6 - 6
design/system.md

@@ -33,24 +33,24 @@
 
 思维导图(脑图):
 
-![Image](/_static/design/mind.png)
+![Image](/_static/experience/design/mind.png)
 
 系统结构图:
 
-![Image](/_static/design/system.png)
+![Image](/_static/experience/design/system.png)
 
 
 用例图:
 
-![Image](/_static/design/use-case.png)
+![Image](/_static/experience/design/use-case.png)
 
 时序图:
 
-![Image](/_static/design/seq.png)
+![Image](/_static/experience/design/seq.png)
 
 流程图:
 
-![Image](/_static/design/flow.png)
+![Image](/_static/experience/design/flow.png)
 
 ## 第三步:设计数据库表结构
 
@@ -64,7 +64,7 @@
 
 示例:
 
-![ER图](/_static/design/er.png)
+![ER图](/_static/experience/design/er.png)
 
 上图为ER图的一个示例,Windows下有 PowerDesigner、Visio等工具,Mac下用MySQLWorkbench。
 

operation/README.md → experience/operation/README.md


project/source/later.md → experience/operation/later.md


+ 0 - 0
project/tool/pm2.md


Some files were not shown because too many files changed in this diff