-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathdb.json
1 lines (1 loc) · 87.5 KB
/
db.json
1
{"meta":{"version":1,"warehouse":"4.0.2"},"models":{"Asset":[{"_id":"source/404.html","path":"404.html","modified":0,"renderable":0},{"_id":"source/CNAME","path":"CNAME","modified":0,"renderable":0},{"_id":"source/README.md","path":"README.md","modified":0,"renderable":0},{"_id":"themes/hexo-theme-snippet/source/favicon.ico","path":"favicon.ico","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/assets/highlight.pack.js","path":"assets/highlight.pack.js","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/assets/tagcanvas.min.js","path":"assets/tagcanvas.min.js","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/assets/valine.min.js","path":"assets/valine.min.js","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/css/bootstrap.min.css","path":"css/bootstrap.min.css","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/css/font-awesome.min.css","path":"css/font-awesome.min.css","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/css/style.css","path":"css/style.css","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/fonts/FontAwesome.otf","path":"fonts/FontAwesome.otf","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/fonts/fontawesome-webfont.eot","path":"fonts/fontawesome-webfont.eot","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/fonts/fontawesome-webfont.svg","path":"fonts/fontawesome-webfont.svg","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/fonts/fontawesome-webfont.ttf","path":"fonts/fontawesome-webfont.ttf","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/fonts/fontawesome-webfont.woff","path":"fonts/fontawesome-webfont.woff","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/fonts/fontawesome-webfont.woff2","path":"fonts/fontawesome-webfont.woff2","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/img/avatar.jpg","path":"img/avatar.jpg","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/img/branding.png","path":"img/branding.png","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/img/head-img.jpg","path":"img/head-img.jpg","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/img/loading.gif","path":"img/loading.gif","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/img/reward-wepay.jpg","path":"img/reward-wepay.jpg","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/img/timeline-clock.gif","path":"img/timeline-clock.gif","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/img/timeline-dot.gif","path":"img/timeline-dot.gif","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/img/timeline.gif","path":"img/timeline.gif","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/js/app.js","path":"js/app.js","modified":0,"renderable":1},{"_id":"themes/hexo-theme-snippet/source/js/search.js","path":"js/search.js","modified":0,"renderable":1}],"Cache":[{"_id":"source/404.html","hash":"b984d9a2915f48c8f1a9ca27d9295d64377fff48","modified":1679215418384},{"_id":"source/CNAME","hash":"75910aba7e378a4eec864ac64c75aac92850c661","modified":1679215994977},{"_id":"source/README.md","hash":"0accec0d61fcdb2ddafea537e8fead0a90223532","modified":1679215418385},{"_id":"source/categories/index.md","hash":"82db5804cda403587290553fd617300abae0b1b8","modified":1679215418385},{"_id":"source/_posts/JavaScript代码检查工具对比.md","hash":"45202a03dbff41cb5d4f61e30beae9621cb052c8","modified":1679215418385},{"_id":"source/_posts/史上最全的Webstorm快捷键大全.md","hash":"cd646bbae47487dad9a23ad4bec3ef9a3ff98f7c","modified":1679215418385},{"_id":"source/_posts/站在人工智能风口的Python程序员.md","hash":"ff6d1c113ccd75e5744084c5a219155709c0165f","modified":1679215418385},{"_id":"source/tags/index.md","hash":"7a3fcbfe9260a8ff3b16a560e1a76958eda50260","modified":1679215418385},{"_id":"themes/hexo-theme-snippet/.gitignore","hash":"31f8ef02455f53e8ed27f0ce45aeeb0cdebf90dd","modified":1679215418386},{"_id":"themes/hexo-theme-snippet/LICENSE","hash":"c720db99e36a717d9808bf97b736612462e883dd","modified":1679215418386},{"_id":"themes/hexo-theme-snippet/.travis.yml","hash":"035bb5d4d375b7a42b17aec10a475418572f2e0b","modified":1679215418386},{"_id":"themes/hexo-theme-snippet/_config.yml","hash":"2da1f264caf5859ca09c959fd8d60859ae1762e0","modified":1679216039539},{"_id":"themes/hexo-theme-snippet/gulpfile.js","hash":"09ddb6e30365851312e819e8fd3670754b903277","modified":1679215418387},{"_id":"themes/hexo-theme-snippet/package.json","hash":"3c9dad6642beda7c8243b97ec038e5e08d6e19a5","modified":1679215418393},{"_id":"themes/hexo-theme-snippet/layout/archive.ejs","hash":"647c33319fc6cf44f1a9c20a112755b42cc5078d","modified":1679215418392},{"_id":"themes/hexo-theme-snippet/package-lock.json","hash":"fe6182fca99930466dab2085fe3cbb3439b53a11","modified":1679215418393},{"_id":"themes/hexo-theme-snippet/layout/category.ejs","hash":"c97be36b33bb44957778587f00c978f2d28016f8","modified":1679215418392},{"_id":"themes/hexo-theme-snippet/_travis.sh","hash":"d0b4a07c26bce13dd3491d8b5f487e26e53b88b7","modified":1679215418387},{"_id":"themes/hexo-theme-snippet/.github/ISSUE_TEMPLATE.md","hash":"c32410f2186c2546afff6ef87a9f78b000f64c3e","modified":1679215418386},{"_id":"themes/hexo-theme-snippet/README.md","hash":"83c7fe94490c3238fbfef40972ee4417ef5c10b5","modified":1679216308393},{"_id":"themes/hexo-theme-snippet/layout/page.ejs","hash":"14617b46bd608e3e352bf372b02dc7107893f167","modified":1679215418392},{"_id":"themes/hexo-theme-snippet/layout/tag.ejs","hash":"9b42656e75c58e7145e52408b51f017f6b6d9464","modified":1679215418393},{"_id":"themes/hexo-theme-snippet/layout/layout.ejs","hash":"c986efe07c070e0870b89181cc47010b118e2d04","modified":1679215418392},{"_id":"themes/hexo-theme-snippet/scripts/helper.js","hash":"6ba486b24ad69a4532b6e2aa7a97e59a55d95565","modified":1679215418393},{"_id":"themes/hexo-theme-snippet/layout/index.ejs","hash":"f938801434414a0930a02dde3567226cb80b3243","modified":1679215418392},{"_id":"themes/hexo-theme-snippet/layout/post.ejs","hash":"d5d3ee4c4f559dcaf2fa56ca663803f482b31e0b","modified":1679215418392},{"_id":"themes/hexo-theme-snippet/languages/default.yml","hash":"358313b8a4a48bd32c7d58fc9ef3a4ebe395bf8d","modified":1679215418387},{"_id":"themes/hexo-theme-snippet/languages/zh-CN.yml","hash":"ca133a70bfb0a37773f21a7670d7db7570bbc46a","modified":1679215418387},{"_id":"themes/hexo-theme-snippet/languages/zh-TW.yml","hash":"a0bd8ba3e9ad19116e072983cfefd1aabe39d2cd","modified":1679215418387},{"_id":"themes/hexo-theme-snippet/languages/ja.yml","hash":"fcafdb03d5e000c225a664d65f38a75c7efdef03","modified":1679215418387},{"_id":"themes/hexo-theme-snippet/scripts/process.js","hash":"71bb3b5dad940e3f0bab143cebedfe39e325f61f","modified":1679215418393},{"_id":"themes/hexo-theme-snippet/.github/ISSUE_TEMPLATE/bug_report.md","hash":"7b7e1a165277be729ce2d7c7bb93d5c637e163fb","modified":1679215418386},{"_id":"themes/hexo-theme-snippet/.github/ISSUE_TEMPLATE/feature_request.md","hash":"18220a6e95afe1004e19311f07b8de6953ecf21a","modified":1679215418386},{"_id":"themes/hexo-theme-snippet/layout/_partial/article-meta.ejs","hash":"d99e3e46f7ab84c5803c9d95cde559a8578826e2","modified":1679215418388},{"_id":"themes/hexo-theme-snippet/layout/_partial/busuanzi.ejs","hash":"161df591ed171a3158c1c92dfee806735853cf94","modified":1679215418388},{"_id":"themes/hexo-theme-snippet/layout/_partial/gallery.ejs","hash":"0c4c330d263b015fe34847216b2589daaaf916ea","modified":1679215418388},{"_id":"themes/hexo-theme-snippet/source/favicon.ico","hash":"65f26147ea3433ffd64d3f18bf281af48dc5d06e","modified":1679215418397},{"_id":"themes/hexo-theme-snippet/layout/_partial/archive.ejs","hash":"e53457ef725b451b442230b95d99384332525190","modified":1679215418388},{"_id":"themes/hexo-theme-snippet/layout/_partial/article.ejs","hash":"5d01801803f750be6e330b6c69439ae13c0c80e6","modified":1679215418388},{"_id":"themes/hexo-theme-snippet/layout/_partial/copyright.ejs","hash":"5fe84af9e44d1674006c038dc5a3059859b8b904","modified":1679215418388},{"_id":"themes/hexo-theme-snippet/layout/_partial/footer.ejs","hash":"87085cd9986462d133378a7e5862d50e8dc6bd9c","modified":1679215418388},{"_id":"themes/hexo-theme-snippet/layout/_partial/head.ejs","hash":"ac0a96ea47e93d8f434b0c6ebd31cb5b73bcd14b","modified":1679215418388},{"_id":"themes/hexo-theme-snippet/layout/_partial/pagination.ejs","hash":"aeba7032666ab41c2bcc111e8def56e44b96d0df","modified":1679215418389},{"_id":"themes/hexo-theme-snippet/layout/_partial/reward.ejs","hash":"7f5f2656096644ab92f0132e74ef5dbc9fd7f23e","modified":1679215418389},{"_id":"themes/hexo-theme-snippet/layout/_partial/header.ejs","hash":"51f143b08910e0a9a1baf1d276e838caa61c45be","modified":1679215418388},{"_id":"themes/hexo-theme-snippet/layout/_partial/sidebar.ejs","hash":"3499f3a3964985584d4acb98b4baa4e23b23d879","modified":1679215418389},{"_id":"themes/hexo-theme-snippet/layout/_partial/script.ejs","hash":"4ad3bc0a4e8dbcdd97bf267bd019e3a204710e04","modified":1679215418389},{"_id":"themes/hexo-theme-snippet/layout/_partial/nav.ejs","hash":"61a4826c1251e4406d58ac7d960acc236ca97b62","modified":1679215418389},{"_id":"themes/hexo-theme-snippet/layout/_vendor/baidu_sitemap.ejs","hash":"92308b21aceee36ed9c36d4b7924aa46504706da","modified":1679215418390},{"_id":"themes/hexo-theme-snippet/layout/_widget/archive.ejs","hash":"065aba2294879452116abfd71bed00fb7f3f59f0","modified":1679215418391},{"_id":"themes/hexo-theme-snippet/layout/_partial/toc.ejs","hash":"851fd0d5ace97c9b6eaf87f7c4839b21ba6f7d34","modified":1679215418389},{"_id":"themes/hexo-theme-snippet/layout/_widget/notification.ejs","hash":"9f00c9632b52a812006e2be635122e3de81529a6","modified":1679215418391},{"_id":"themes/hexo-theme-snippet/layout/_widget/category.ejs","hash":"f9f38fc026ac7a2b17085db24482c5ccbd2974b7","modified":1679215418391},{"_id":"themes/hexo-theme-snippet/layout/_widget/social.ejs","hash":"472d8280c4f18fd11acdda7d9e647962fa9fe777","modified":1679215418392},{"_id":"themes/hexo-theme-snippet/layout/_widget/friends.ejs","hash":"b1618ece7368384769d95d9359fb71aa0f1fd92a","modified":1679215418391},{"_id":"themes/hexo-theme-snippet/layout/_widget/search.ejs","hash":"5cbe8c3a590957373f5a71ca6fdfc16e4eed0691","modified":1679215418392},{"_id":"themes/hexo-theme-snippet/source/assets/highlight.pack.js","hash":"f39840759ec9afe56ec1ca30579d1f1c9d1f6026","modified":1679215418394},{"_id":"themes/hexo-theme-snippet/source/assets/tagcanvas.min.js","hash":"a14280f4e924428ac0cdbac7635a7279cab1b6bf","modified":1679215418394},{"_id":"themes/hexo-theme-snippet/layout/_widget/stick.ejs","hash":"51617c83fd3cd4378308e6f9c9b3e806a697cef2","modified":1679215418392},{"_id":"themes/hexo-theme-snippet/layout/_widget/tagcloud.ejs","hash":"3fff86675a8e037671888b1657a102de0cb573ba","modified":1679215418392},{"_id":"themes/hexo-theme-snippet/source/css/style.css","hash":"427e307fbbd45b4f6d9228244ef2939678272813","modified":1679215418397},{"_id":"themes/hexo-theme-snippet/source/css/font-awesome.min.css","hash":"512c7d79033e3028a9be61b540cf1a6870c896f8","modified":1679215418396},{"_id":"themes/hexo-theme-snippet/source/img/head-img.jpg","hash":"a318d304665c2f410f79e6d2eb1b98119f675b4b","modified":1679215418403},{"_id":"themes/hexo-theme-snippet/source/img/branding.png","hash":"18bee49d6a4c521ad230047c0b416245e009c2c9","modified":1679215418403},{"_id":"themes/hexo-theme-snippet/source/img/timeline-clock.gif","hash":"2bec1bf5efd948ab2e5942b6da8164faa41b62b2","modified":1679215418404},{"_id":"themes/hexo-theme-snippet/source/img/avatar.jpg","hash":"512025710a8c6c938ab636fcb3c9da1c8df0eec0","modified":1679215418403},{"_id":"themes/hexo-theme-snippet/source/img/reward-wepay.jpg","hash":"2a56391f2b6282b49e724b72bf610b0dabf53742","modified":1679215418404},{"_id":"themes/hexo-theme-snippet/source/img/timeline-dot.gif","hash":"c85ef87be5b631c009e7c5737d33b61dfe580a4d","modified":1679215418404},{"_id":"themes/hexo-theme-snippet/source/js/search.js","hash":"c8a9033d7317927bf29f4ba33d152d7d33397ca6","modified":1679215418404},{"_id":"themes/hexo-theme-snippet/source/js/app.js","hash":"45cba4ab03cc65db7c80e50e1eb84f8c45fa4d26","modified":1679215418404},{"_id":"themes/hexo-theme-snippet/source/img/timeline.gif","hash":"b7c7aac44e618df19626d882dc46db48a4aa3673","modified":1679215418404},{"_id":"themes/hexo-theme-snippet/layout/_partial/_head-sections/style.ejs","hash":"97169403ad6528450dd152012c732ace8379d88e","modified":1679215418388},{"_id":"themes/hexo-theme-snippet/layout/_partial/_head-sections/seo.ejs","hash":"43ea6973fbe5745a48a5ebf5c8da2af18c6be845","modified":1679215418388},{"_id":"themes/hexo-theme-snippet/layout/_partial/_head-sections/IE.ejs","hash":"2a9b0f87c9e584806defe94d57922db68a3fa252","modified":1679215418387},{"_id":"themes/hexo-theme-snippet/layout/_vendor/analytics/cnzz.ejs","hash":"54e42e22f58d8f3868805fe97cd5f285a50da3df","modified":1679216649569},{"_id":"themes/hexo-theme-snippet/layout/_vendor/analytics/baidu.ejs","hash":"b002ce9708cf48dc6934f7ff8ddedf05f0ffed09","modified":1679215418389},{"_id":"themes/hexo-theme-snippet/layout/_vendor/analytics/google.ejs","hash":"da36992925a8bdfa9ce24139658dedf0f8673da8","modified":1679215418389},{"_id":"themes/hexo-theme-snippet/layout/_partial/_head-sections/title.ejs","hash":"c9c0a1245da1297f823dfdc7838281bd9e4508ee","modified":1679215418388},{"_id":"themes/hexo-theme-snippet/layout/_vendor/comments/changyan.ejs","hash":"156f28b8885a29ffcac0bd7d1881b1e73f57db1a","modified":1679215418390},{"_id":"themes/hexo-theme-snippet/layout/_vendor/comments/disqus.ejs","hash":"ca711b29eff4cc5d2d460d9c39b6097f22d1a646","modified":1679215418390},{"_id":"themes/hexo-theme-snippet/layout/_vendor/analytics/index.ejs","hash":"6315abe9c31f4c4de719fa3cbfa2b1c6f294b0de","modified":1679215418390},{"_id":"themes/hexo-theme-snippet/layout/_vendor/analytics/tencent.ejs","hash":"80a74b80b1f7b79f32a44b29ae8ee09a5f797db9","modified":1679215418390},{"_id":"themes/hexo-theme-snippet/layout/_vendor/comments/gitalk.ejs","hash":"0918ba3c5c214924084b00f9acba862b0775e03d","modified":1679215418391},{"_id":"themes/hexo-theme-snippet/layout/_vendor/comments/index.ejs","hash":"f888afc3e1221f9cd2fa0a3decea8b84932f8221","modified":1679215418391},{"_id":"themes/hexo-theme-snippet/layout/_vendor/comments/utterances.ejs","hash":"8531e0a90e49914531480320faf939b366f032a9","modified":1679215418391},{"_id":"themes/hexo-theme-snippet/layout/_vendor/comments/gitment.ejs","hash":"23e4c31b8db6be6c9aa3b498014d312ea0bdb3f9","modified":1679215418391},{"_id":"themes/hexo-theme-snippet/layout/_vendor/comments/livere.ejs","hash":"ce70468b18519c16593b1bf8a14d491f8cc4c173","modified":1679215418391},{"_id":"themes/hexo-theme-snippet/layout/_vendor/comments/uyan.ejs","hash":"2c2abe17f4f5c5ba1a9aaa948ef0a88d99f653f8","modified":1679215418391},{"_id":"themes/hexo-theme-snippet/layout/_vendor/comments/valine.ejs","hash":"af5c3ca24c8a904f7aa3626aaf3ed11ff173a5dd","modified":1679215418391},{"_id":"themes/hexo-theme-snippet/source/css/less/_style.less","hash":"cb1f00633ae5096721de079aa26c58ed92c18b0d","modified":1679215418396},{"_id":"themes/hexo-theme-snippet/source/css/less/_highlight.less","hash":"82d7bc9b73dba4a4d50f2931d3a3abb8460cc4e9","modified":1679215418396},{"_id":"themes/hexo-theme-snippet/source/css/less/_reward.less","hash":"1b1b2c97ec05086bd5fbd52d03d17c03504da6f8","modified":1679215418396},{"_id":"themes/hexo-theme-snippet/source/css/less/_timeline.less","hash":"6a02f8e39594a28bc2e8e270a774e2175097cef5","modified":1679215418397},{"_id":"themes/hexo-theme-snippet/source/css/less/_scrollbar.less","hash":"cb96092d66b1d0be9035530652ffd0e5b04fe55e","modified":1679215418396},{"_id":"themes/hexo-theme-snippet/source/css/less/_mixins.less","hash":"8f19d20f2f5ee3e4447ee0fae125c846bf269d0c","modified":1679215418396},{"_id":"themes/hexo-theme-snippet/source/css/less/_variable.less","hash":"fcfda3a0d25062bd5abac44edda620840d0864a8","modified":1679215418397},{"_id":"themes/hexo-theme-snippet/source/assets/valine.min.js","hash":"d9d4a8f81f288b77b3d0a3866d004e2b5eb30038","modified":1679215418395},{"_id":"themes/hexo-theme-snippet/source/css/bootstrap.min.css","hash":"6527d8bf3e1e9368bab8c7b60f56bc01fa3afd68","modified":1679215418395},{"_id":"themes/hexo-theme-snippet/source/fonts/fontawesome-webfont.woff","hash":"28b782240b3e76db824e12c02754a9731a167527","modified":1679215418402},{"_id":"themes/hexo-theme-snippet/source/fonts/fontawesome-webfont.woff2","hash":"d6f48cba7d076fb6f2fd6ba993a75b9dc1ecbf0c","modified":1679215418402},{"_id":"themes/hexo-theme-snippet/source/img/loading.gif","hash":"6cea4dc953ac09fb744c7fedc12a1f4736faf8ec","modified":1679215418403},{"_id":"themes/hexo-theme-snippet/source/fonts/fontawesome-webfont.eot","hash":"d980c2ce873dc43af460d4d572d441304499f400","modified":1679215418399},{"_id":"themes/hexo-theme-snippet/source/fonts/FontAwesome.otf","hash":"048707bc52ac4b6563aaa383bfe8660a0ddc908c","modified":1679215418398},{"_id":"themes/hexo-theme-snippet/source/fonts/fontawesome-webfont.ttf","hash":"13b1eab65a983c7a73bc7997c479d66943f7c6cb","modified":1679215418402},{"_id":"themes/hexo-theme-snippet/source/fonts/fontawesome-webfont.svg","hash":"98a8aa5cf7d62c2eff5f07ede8d844b874ef06ed","modified":1679215418401},{"_id":"public/atom.xml","hash":"159b12cc4d3f30cd34c9aad4ffae5d7eddfc50a4","modified":1679221082729},{"_id":"public/sitemap.xml","hash":"2b5714b62340e7f29fceb540941583b193216cee","modified":1679221082729},{"_id":"public/content.json","hash":"e326b0677079627af3483666211f9fd36191a344","modified":1679221082729},{"_id":"public/categories/index.html","hash":"1a16e1c9d94d5f0905a3624c27b9041eb9f3a7c3","modified":1679221082729},{"_id":"public/tags/index.html","hash":"87bea7951c4357169beb01c427441c0c7b8c1a8a","modified":1679221082729},{"_id":"public/archives/63096.html","hash":"6c03391f681e839c2039fe8a654b4681e438360e","modified":1679221082729},{"_id":"public/archives/index.html","hash":"57cce37754c9721ca9a446b5863ba05f07a54427","modified":1679221082729},{"_id":"public/archives/2017/index.html","hash":"a34802f9e334f1259a1b2b617897ae359984bf97","modified":1679221082729},{"_id":"public/archives/2017/04/index.html","hash":"d5a5220a7df6bed9e92fd234f4274f1f0a1f116b","modified":1679221082729},{"_id":"public/archives/2017/08/index.html","hash":"d5e864b04ace685c82cbdaab2b48306f3cbf3747","modified":1679221082729},{"_id":"public/archives/2017/09/index.html","hash":"88f641e0fd01c904c03d11ff6ff563c6b4d70ff7","modified":1679221082729},{"_id":"public/categories/工具/index.html","hash":"241fd581bcd904b4493be7def8aa674a322a5b59","modified":1679221082729},{"_id":"public/categories/后端/index.html","hash":"4f059f560f4d1beec074c7ab32812de9d12b9146","modified":1679221082729},{"_id":"public/categories/前端/index.html","hash":"14c1dd493957c2b739800814deb0942dc80b58f8","modified":1679221082729},{"_id":"public/tags/Webstrorm/index.html","hash":"b020dae57227bff0d6e646e311bfb585c47700a7","modified":1679221082729},{"_id":"public/tags/快捷键/index.html","hash":"47c7f3f203f8619cb76b9305324f60ba09111e53","modified":1679221082729},{"_id":"public/tags/IDE/index.html","hash":"bc658aa25186566c78c5a0b71f3380c63116f0e8","modified":1679221082729},{"_id":"public/tags/python/index.html","hash":"fb757e834154088f538f91ae8c477d19c0841718","modified":1679221082729},{"_id":"public/tags/JavaScript/index.html","hash":"3aeb3fb5122f2347c45b0d91dfedb27fcb613bee","modified":1679221082729},{"_id":"public/tags/jsLint/index.html","hash":"f9114b6beb21ff3cf2ec59bad0fce5b8721525b7","modified":1679221082729},{"_id":"public/archives/47814.html","hash":"5b218304c623ca444a012475d138facfafa3bc9d","modified":1679221082729},{"_id":"public/archives/26064.html","hash":"54f794d846d8543ca668c7d886b39338961c69f6","modified":1679221082729},{"_id":"public/index.html","hash":"a5159ae4615e0d56069490f60010513c4caa66ba","modified":1679221082729},{"_id":"public/favicon.ico","hash":"65f26147ea3433ffd64d3f18bf281af48dc5d06e","modified":1679221082729},{"_id":"public/img/avatar.jpg","hash":"512025710a8c6c938ab636fcb3c9da1c8df0eec0","modified":1679221082729},{"_id":"public/img/branding.png","hash":"18bee49d6a4c521ad230047c0b416245e009c2c9","modified":1679221082729},{"_id":"public/img/head-img.jpg","hash":"a318d304665c2f410f79e6d2eb1b98119f675b4b","modified":1679221082729},{"_id":"public/img/timeline-clock.gif","hash":"2bec1bf5efd948ab2e5942b6da8164faa41b62b2","modified":1679221082729},{"_id":"public/img/reward-wepay.jpg","hash":"2a56391f2b6282b49e724b72bf610b0dabf53742","modified":1679221082729},{"_id":"public/img/timeline-dot.gif","hash":"c85ef87be5b631c009e7c5737d33b61dfe580a4d","modified":1679221082729},{"_id":"public/img/timeline.gif","hash":"b7c7aac44e618df19626d882dc46db48a4aa3673","modified":1679221082729},{"_id":"public/404.html","hash":"b984d9a2915f48c8f1a9ca27d9295d64377fff48","modified":1679221082729},{"_id":"public/CNAME","hash":"75910aba7e378a4eec864ac64c75aac92850c661","modified":1679221082729},{"_id":"public/README.md","hash":"0accec0d61fcdb2ddafea537e8fead0a90223532","modified":1679221082729},{"_id":"public/fonts/fontawesome-webfont.woff","hash":"28b782240b3e76db824e12c02754a9731a167527","modified":1679221082729},{"_id":"public/fonts/fontawesome-webfont.woff2","hash":"d6f48cba7d076fb6f2fd6ba993a75b9dc1ecbf0c","modified":1679221082729},{"_id":"public/img/loading.gif","hash":"6cea4dc953ac09fb744c7fedc12a1f4736faf8ec","modified":1679221082729},{"_id":"public/assets/highlight.pack.js","hash":"f39840759ec9afe56ec1ca30579d1f1c9d1f6026","modified":1679221082729},{"_id":"public/js/app.js","hash":"45cba4ab03cc65db7c80e50e1eb84f8c45fa4d26","modified":1679221082729},{"_id":"public/js/search.js","hash":"c8a9033d7317927bf29f4ba33d152d7d33397ca6","modified":1679221082729},{"_id":"public/assets/tagcanvas.min.js","hash":"a14280f4e924428ac0cdbac7635a7279cab1b6bf","modified":1679221082729},{"_id":"public/css/bootstrap.min.css","hash":"6527d8bf3e1e9368bab8c7b60f56bc01fa3afd68","modified":1679221082729},{"_id":"public/css/style.css","hash":"427e307fbbd45b4f6d9228244ef2939678272813","modified":1679221082729},{"_id":"public/assets/valine.min.js","hash":"d9d4a8f81f288b77b3d0a3866d004e2b5eb30038","modified":1679221082729},{"_id":"public/css/font-awesome.min.css","hash":"512c7d79033e3028a9be61b540cf1a6870c896f8","modified":1679221082729},{"_id":"public/fonts/FontAwesome.otf","hash":"048707bc52ac4b6563aaa383bfe8660a0ddc908c","modified":1679221082729},{"_id":"public/fonts/fontawesome-webfont.eot","hash":"d980c2ce873dc43af460d4d572d441304499f400","modified":1679221082729},{"_id":"public/fonts/fontawesome-webfont.ttf","hash":"13b1eab65a983c7a73bc7997c479d66943f7c6cb","modified":1679221082729},{"_id":"public/fonts/fontawesome-webfont.svg","hash":"98a8aa5cf7d62c2eff5f07ede8d844b874ef06ed","modified":1679221082729}],"Category":[{"name":"工具","_id":"clff5n8sl00045ms681qefuz5"},{"name":"后端","_id":"clff5n8sn00075ms6hy799lt0"},{"name":"前端","_id":"clff5n8sn000a5ms6df44azpx"}],"Data":[],"Page":[{"title":"categories","date":"2019-08-16T09:48:58.000Z","_content":"","source":"categories/index.md","raw":"---\ntitle: categories\ndate: 2019-08-16 17:48:58\n---\n","updated":"2023-03-19T08:43:38.385Z","path":"categories/index.html","comments":1,"layout":"page","_id":"clff5n8sg00005ms6hezc7h2h","content":"","site":{"data":{}},"excerpt":"","more":""},{"title":"tags","date":"2019-08-16T09:43:43.000Z","_content":"","source":"tags/index.md","raw":"---\ntitle: tags\ndate: 2019-08-16 17:43:43\n---\n","updated":"2023-03-19T08:43:38.385Z","path":"tags/index.html","comments":1,"layout":"page","_id":"clff5n8sk00025ms6a0mbcsv0","content":"","site":{"data":{}},"excerpt":"","more":""}],"Post":[{"title":"史上最全的Webstorm快捷键及技巧","comments":1,"img":"https://s2.ax1x.com/2019/09/06/nucIKK.md.jpg","abbrlink":47814,"date":"2017-09-21T02:44:48.000Z","_content":"\n> Webstorm是一款前端开发神器,此文介绍webstorm的快捷键和技巧分享。\n\n所谓工欲善其事,必先利其器嘛,想着如果要提高开发效率,那掌握一些常用的快捷键应该是少不了的,所以把webstorm快捷键及技巧分享给大家。持续更新中\n\nwebstorm官方下载地址:[http://www.jetbrains.com/webstorm/](http://www.jetbrains.com/webstorm/)\n\n## 快捷键大全\n\n### 编辑类\n---\n【Ctrl + Space 】基本代码完成 (任何类、 方法或变量名称)\n【Alt + Enter】 展示意图动作和快速修复\n【Ctrl + P】显示调用方法内参数信息\n【Ctrl + Q】 快速记录查找\n【Ctrl + mouse】放在代码上面-显示简短的代码信息\n【Ctrl + F1】在插入符号显示错误或警告的说明\n【Alt + Insert】生成代码\n【Ctrl + Alt + T】快速生成(if..else, try..catch, for, etc.)等\n【Ctrl + J】插入Live模板\n【Ctrl + / 】行注释与取消行注释\n【Ctrl + Shift + / 】块注释与取消块注释\n【Ctrl + W 】增加选择中代码块\n【Ctrl + Shift + W 】减少当前所选内容代码块\n【Alt + Q 】上下文信息\n【Ctrl + Alt + L 】格式化代码\n【Ctrl + Alt + I 】自动缩进的行数\n【Tab / Shift + Tab 】缩进/取消缩进选定的行\n【Ctrl + X , Shift + Delete】 剪切到剪贴板的当前行或者所选代码块\n【Ctrl + C】Ctrl + 插入复制当前行或者所选代码块到剪贴板\n【Ctrl + V】Shift + 从剪贴板插入粘贴\n【Ctrl + Shift + V 】最近缓冲区粘贴\n【Ctrl + D】复制当前行或者所选代码块\n【Ctrl + Y】删除行\n【Ctrl + Shift + J 】加入行\n【Ctrl + enter 】拆分行\n【shift + Enter 】 重新开始一行(无论光标在哪个位置)\n【Ctrl + Shift + U 】切换选中词或所选代码块的大小写\n【Ctrl + Shift +]】选中直到代码块的开始\n【Ctrl + Shift +[】选择直到代码块的结束\n【Ctrl + Delete】 删除光标右侧的词\n【Ctrl + backspace】 删除光标左侧的词\n【Ctrl + NumPad+】展开代码块\n【Ctrl + NumPad-】折叠代码块\n【Ctrl + Shift + NumPad+】展开所有代码块\n【Ctrl + Shift + NumPad-】折叠所有代码块\n【Ctrl + F4 】关闭当前标签页\n\n### 同时编辑多行\n---\n【Alt + Click】 同时选中多行,同时编辑\n【Shift + Ctrl + Alt + J】选择所有当前选中的词\n【Alt + J】选择下一个相同的词\n【Alt + Shift + J】取消所有选中的词\n【Esc】取消选择所有选中的词或插入符号\n\n### 运行类\n---\n【Alt + Shift + F10/F9】 选择配置和运行/调试\n【Shift + F10/F9】 运行/调试\n【Ctrl + Shift + F10/F9】 运行/调试上下文配置从编辑器\n【Alt + Shift + R】 重新运行测试\n\n### 调试类\n---\n【F8】不进入函数\n【F7】 单步执行\n【Shift + F7】 只能单步执行\n【Shift + F8】跳出\n【Alt + F9】 运行到光标处\n【Alt + F8】 计算表达式的值\n【F9】 重新开始\n【Ctrl + f8】 切换断点\n【Ctrl + Shift + F8】 查看断点\n\n\n### 导航类\n---\n【Ctrl + N】跳转到指定类\n【Ctrl + Shift + N】 通过文件名快速查找工程内的文件\n【Ctrl + Alt + Shift + N】 通过一个字符查找函数位置\n【Alt + Right】进入下一个编辑器选项\n【Alt + Left】进入上一个编辑器选项\n【f12】 进入上一个工具窗口\n【esc】 从工具窗口进入编辑器\n【Shift + Esc】 隐藏活动窗口\n【Ctrl + Shift + F4】 关闭活动运行/消息/查找/选项卡\n【Ctrl + G】 跳转到指定行\n【Ctrl + E】 弹出最近打开的文件列表\n【Ctrl + Alt + Left】导航前进\n【Ctrl + Alt + Right】导航回退\n【Ctrl + Shift +Backspace】定位到最近编辑窗口\n【Alt + F1】查找当前选中的代码或文件在其他界面模块的位置\n【Ctrl + B/Click】跳转到定义处\n【Ctrl + 单击】转到声明\n【Ctrl + Alt + B 】跳转方法实现处\n【Ctrl + Shift + I】打开定义快速查找\n【Ctrl + Shift + B 】跳转方法定义处\n【Ctrl + U 】转到超级方法/超级类\n【Alt + Up/Down】在方法间快速移动定位\n【Ctrl +]/[】移动到代码块结束/启动\n【Ctrl + f12】弹出文件结构\n【Ctrl + H 】类型层次结构\n【Ctrl + Alt + H】 调用层次结构\n【F2/Shift + F2】跳转到后一个/前一个错误,在出错的语句之间进行跳转。\n【F4/Ctrl + Enter】 编辑源代码/查看源代码\n【Alt + home】 显示导航栏\n【F11】切换标记\n【Ctrl + F11】 采用记忆切换标记\n【Ctrl + #[0-9]】跳转到带编号的标记\n【Shift + F11 显示书签\n\n### VCS版本控制\n---\n【Alt + 反引号 (')】 'VCS' 快速弹出\n【Ctrl + K】提交项目到VCS\n【Ctrl + T】 从VCS更新项目\n【Alt + Shift + C】查看最近的更改\n\n### 搜索/替换\n---\n【Ctrl + F】 查找\n【F3】 查找下一个\n【Shift + F3】 查找上一个\n【Ctrl + R】替换\n【Ctrl + Shift + F】 在路径中找到\n【Ctrl + Shift + R】 替换路径中的查找\n\n### 搜索类\n---\n【Alt + f7】查找实例\n【Ctrl + f7】在文件中查找实例\n【Ctrl + Shift + f7】 在文件中高亮实例\n【Ctrl + Alt + F7】显示实例\n\n### 重构类\n---\n【F5】拷贝当前文件\n【F6】移动当前文件\n【Alt + delete】 安全删除\n【Shift + F6】 重命名\n【Ctrl + Alt + N】嵌入变量\n【Ctrl + Alt + M】提取函数\n【Ctrl + Alt + V】引入变量\n【Ctrl + Alt + C】引入常量\n【Ctrl + Alt + P】引入参数\n【Ctrl + F6】改变方法名\n\n### 常规类\n---\n【Ctrl + Shift +a】 查找当前\n【双击shift】查找所有的(包括文件、命令等)\n【Alt + #[0-9]】 打开相应的工具窗口\n【Ctrl + Shift + f12】 键切换最大化编辑器\n【Alt + Shift + F】 将添加到收藏夹\n【Alt + Shift + I】 检查当前文件与当前配置文件\n【Ctrl + 反引号 (')】快速切换当前计划\n【Ctrl + Alt + S】 打开设置\n【Ctrl + Tab】 切换选项卡和工具窗口\n\n\n## 常用插件推荐\n1. Key Promoter【学习快捷键神器】\n鼠标完成某项操作时,会提示相应的快捷键。\n\n2. activate-power-mode【装*神器】\nAtom上的神器,安装之后可以在 window -> activate-power-mode中关闭震动以及开启彩色模式。\n\n3. Markdown\n支持Markdown语法\n\n4. CodeGlance\n之前用过Sublime编辑器同学,强烈推荐这个,这个插件可以让 webstorm 也具有右侧展示当前文件中代码的缩略图。\n\n## 常见问题\n\n webstorm可以像sublime一样多行选择,比如在sublime中全选一个单词然后使用cmd+d,就可以往下选择一样的单词,然后进入多行模式吗?\n\n### ***逐个选中多个相同的词***\nsublime:Ctrl + D (Ctrl + K可以跳过一个)\nwebstrom:Ctrl + K ( Ctrl + Shift + K 可以回退一个)\n\n### ***同时选中所有相同的词***\nsublime:Alt + F3\nwebstrom:Ctrl + Shift + Alt + K\n\n### ***单击左键选择多行***\nsublime:按住Ctrl然后单击左键\nwebstrom:按住Alt然后单击左键\n\n### ***拖动选择多行***\nsublime:按住Ctrl + Shift + 鼠标右键 拖动\nwebstrom:按住Alt + 鼠标右键 拖动\n\n\n","source":"_posts/史上最全的Webstorm快捷键大全.md","raw":"---\ntitle: 史上最全的Webstorm快捷键及技巧\ncategories: 工具\ntags:\n - Webstrorm\n - 快捷键\n - IDE\ncomments: true\nimg: >-\n https://s2.ax1x.com/2019/09/06/nucIKK.md.jpg\nabbrlink: 47814\ndate: 2017-09-21 10:44:48\n---\n\n> Webstorm是一款前端开发神器,此文介绍webstorm的快捷键和技巧分享。\n\n所谓工欲善其事,必先利其器嘛,想着如果要提高开发效率,那掌握一些常用的快捷键应该是少不了的,所以把webstorm快捷键及技巧分享给大家。持续更新中\n\nwebstorm官方下载地址:[http://www.jetbrains.com/webstorm/](http://www.jetbrains.com/webstorm/)\n\n## 快捷键大全\n\n### 编辑类\n---\n【Ctrl + Space 】基本代码完成 (任何类、 方法或变量名称)\n【Alt + Enter】 展示意图动作和快速修复\n【Ctrl + P】显示调用方法内参数信息\n【Ctrl + Q】 快速记录查找\n【Ctrl + mouse】放在代码上面-显示简短的代码信息\n【Ctrl + F1】在插入符号显示错误或警告的说明\n【Alt + Insert】生成代码\n【Ctrl + Alt + T】快速生成(if..else, try..catch, for, etc.)等\n【Ctrl + J】插入Live模板\n【Ctrl + / 】行注释与取消行注释\n【Ctrl + Shift + / 】块注释与取消块注释\n【Ctrl + W 】增加选择中代码块\n【Ctrl + Shift + W 】减少当前所选内容代码块\n【Alt + Q 】上下文信息\n【Ctrl + Alt + L 】格式化代码\n【Ctrl + Alt + I 】自动缩进的行数\n【Tab / Shift + Tab 】缩进/取消缩进选定的行\n【Ctrl + X , Shift + Delete】 剪切到剪贴板的当前行或者所选代码块\n【Ctrl + C】Ctrl + 插入复制当前行或者所选代码块到剪贴板\n【Ctrl + V】Shift + 从剪贴板插入粘贴\n【Ctrl + Shift + V 】最近缓冲区粘贴\n【Ctrl + D】复制当前行或者所选代码块\n【Ctrl + Y】删除行\n【Ctrl + Shift + J 】加入行\n【Ctrl + enter 】拆分行\n【shift + Enter 】 重新开始一行(无论光标在哪个位置)\n【Ctrl + Shift + U 】切换选中词或所选代码块的大小写\n【Ctrl + Shift +]】选中直到代码块的开始\n【Ctrl + Shift +[】选择直到代码块的结束\n【Ctrl + Delete】 删除光标右侧的词\n【Ctrl + backspace】 删除光标左侧的词\n【Ctrl + NumPad+】展开代码块\n【Ctrl + NumPad-】折叠代码块\n【Ctrl + Shift + NumPad+】展开所有代码块\n【Ctrl + Shift + NumPad-】折叠所有代码块\n【Ctrl + F4 】关闭当前标签页\n\n### 同时编辑多行\n---\n【Alt + Click】 同时选中多行,同时编辑\n【Shift + Ctrl + Alt + J】选择所有当前选中的词\n【Alt + J】选择下一个相同的词\n【Alt + Shift + J】取消所有选中的词\n【Esc】取消选择所有选中的词或插入符号\n\n### 运行类\n---\n【Alt + Shift + F10/F9】 选择配置和运行/调试\n【Shift + F10/F9】 运行/调试\n【Ctrl + Shift + F10/F9】 运行/调试上下文配置从编辑器\n【Alt + Shift + R】 重新运行测试\n\n### 调试类\n---\n【F8】不进入函数\n【F7】 单步执行\n【Shift + F7】 只能单步执行\n【Shift + F8】跳出\n【Alt + F9】 运行到光标处\n【Alt + F8】 计算表达式的值\n【F9】 重新开始\n【Ctrl + f8】 切换断点\n【Ctrl + Shift + F8】 查看断点\n\n\n### 导航类\n---\n【Ctrl + N】跳转到指定类\n【Ctrl + Shift + N】 通过文件名快速查找工程内的文件\n【Ctrl + Alt + Shift + N】 通过一个字符查找函数位置\n【Alt + Right】进入下一个编辑器选项\n【Alt + Left】进入上一个编辑器选项\n【f12】 进入上一个工具窗口\n【esc】 从工具窗口进入编辑器\n【Shift + Esc】 隐藏活动窗口\n【Ctrl + Shift + F4】 关闭活动运行/消息/查找/选项卡\n【Ctrl + G】 跳转到指定行\n【Ctrl + E】 弹出最近打开的文件列表\n【Ctrl + Alt + Left】导航前进\n【Ctrl + Alt + Right】导航回退\n【Ctrl + Shift +Backspace】定位到最近编辑窗口\n【Alt + F1】查找当前选中的代码或文件在其他界面模块的位置\n【Ctrl + B/Click】跳转到定义处\n【Ctrl + 单击】转到声明\n【Ctrl + Alt + B 】跳转方法实现处\n【Ctrl + Shift + I】打开定义快速查找\n【Ctrl + Shift + B 】跳转方法定义处\n【Ctrl + U 】转到超级方法/超级类\n【Alt + Up/Down】在方法间快速移动定位\n【Ctrl +]/[】移动到代码块结束/启动\n【Ctrl + f12】弹出文件结构\n【Ctrl + H 】类型层次结构\n【Ctrl + Alt + H】 调用层次结构\n【F2/Shift + F2】跳转到后一个/前一个错误,在出错的语句之间进行跳转。\n【F4/Ctrl + Enter】 编辑源代码/查看源代码\n【Alt + home】 显示导航栏\n【F11】切换标记\n【Ctrl + F11】 采用记忆切换标记\n【Ctrl + #[0-9]】跳转到带编号的标记\n【Shift + F11 显示书签\n\n### VCS版本控制\n---\n【Alt + 反引号 (')】 'VCS' 快速弹出\n【Ctrl + K】提交项目到VCS\n【Ctrl + T】 从VCS更新项目\n【Alt + Shift + C】查看最近的更改\n\n### 搜索/替换\n---\n【Ctrl + F】 查找\n【F3】 查找下一个\n【Shift + F3】 查找上一个\n【Ctrl + R】替换\n【Ctrl + Shift + F】 在路径中找到\n【Ctrl + Shift + R】 替换路径中的查找\n\n### 搜索类\n---\n【Alt + f7】查找实例\n【Ctrl + f7】在文件中查找实例\n【Ctrl + Shift + f7】 在文件中高亮实例\n【Ctrl + Alt + F7】显示实例\n\n### 重构类\n---\n【F5】拷贝当前文件\n【F6】移动当前文件\n【Alt + delete】 安全删除\n【Shift + F6】 重命名\n【Ctrl + Alt + N】嵌入变量\n【Ctrl + Alt + M】提取函数\n【Ctrl + Alt + V】引入变量\n【Ctrl + Alt + C】引入常量\n【Ctrl + Alt + P】引入参数\n【Ctrl + F6】改变方法名\n\n### 常规类\n---\n【Ctrl + Shift +a】 查找当前\n【双击shift】查找所有的(包括文件、命令等)\n【Alt + #[0-9]】 打开相应的工具窗口\n【Ctrl + Shift + f12】 键切换最大化编辑器\n【Alt + Shift + F】 将添加到收藏夹\n【Alt + Shift + I】 检查当前文件与当前配置文件\n【Ctrl + 反引号 (')】快速切换当前计划\n【Ctrl + Alt + S】 打开设置\n【Ctrl + Tab】 切换选项卡和工具窗口\n\n\n## 常用插件推荐\n1. Key Promoter【学习快捷键神器】\n鼠标完成某项操作时,会提示相应的快捷键。\n\n2. activate-power-mode【装*神器】\nAtom上的神器,安装之后可以在 window -> activate-power-mode中关闭震动以及开启彩色模式。\n\n3. Markdown\n支持Markdown语法\n\n4. CodeGlance\n之前用过Sublime编辑器同学,强烈推荐这个,这个插件可以让 webstorm 也具有右侧展示当前文件中代码的缩略图。\n\n## 常见问题\n\n webstorm可以像sublime一样多行选择,比如在sublime中全选一个单词然后使用cmd+d,就可以往下选择一样的单词,然后进入多行模式吗?\n\n### ***逐个选中多个相同的词***\nsublime:Ctrl + D (Ctrl + K可以跳过一个)\nwebstrom:Ctrl + K ( Ctrl + Shift + K 可以回退一个)\n\n### ***同时选中所有相同的词***\nsublime:Alt + F3\nwebstrom:Ctrl + Shift + Alt + K\n\n### ***单击左键选择多行***\nsublime:按住Ctrl然后单击左键\nwebstrom:按住Alt然后单击左键\n\n### ***拖动选择多行***\nsublime:按住Ctrl + Shift + 鼠标右键 拖动\nwebstrom:按住Alt + 鼠标右键 拖动\n\n\n","slug":"史上最全的Webstorm快捷键大全","published":1,"updated":"2023-03-19T08:43:38.385Z","layout":"post","photos":[],"link":"","_id":"clff5n8si00015ms6hlb2fvd9","content":"<blockquote>\n<p>Webstorm是一款前端开发神器,此文介绍webstorm的快捷键和技巧分享。</p>\n</blockquote>\n<p>所谓工欲善其事,必先利其器嘛,想着如果要提高开发效率,那掌握一些常用的快捷键应该是少不了的,所以把webstorm快捷键及技巧分享给大家。持续更新中</p>\n<p>webstorm官方下载地址:<a href=\"http://www.jetbrains.com/webstorm/\">http://www.jetbrains.com/webstorm/</a></p>\n<h2 id=\"快捷键大全\"><a href=\"#快捷键大全\" class=\"headerlink\" title=\"快捷键大全\"></a>快捷键大全</h2><h3 id=\"编辑类\"><a href=\"#编辑类\" class=\"headerlink\" title=\"编辑类\"></a>编辑类</h3><hr>\n<p>【Ctrl + Space 】基本代码完成 (任何类、 方法或变量名称)<br>【Alt + Enter】 展示意图动作和快速修复<br>【Ctrl + P】显示调用方法内参数信息<br>【Ctrl + Q】 快速记录查找<br>【Ctrl + mouse】放在代码上面-显示简短的代码信息<br>【Ctrl + F1】在插入符号显示错误或警告的说明<br>【Alt + Insert】生成代码<br>【Ctrl + Alt + T】快速生成(if..else, try..catch, for, etc.)等<br>【Ctrl + J】插入Live模板<br>【Ctrl + / 】行注释与取消行注释<br>【Ctrl + Shift + / 】块注释与取消块注释<br>【Ctrl + W 】增加选择中代码块<br>【Ctrl + Shift + W 】减少当前所选内容代码块<br>【Alt + Q 】上下文信息<br>【Ctrl + Alt + L 】格式化代码<br>【Ctrl + Alt + I 】自动缩进的行数<br>【Tab / Shift + Tab 】缩进/取消缩进选定的行<br>【Ctrl + X , Shift + Delete】 剪切到剪贴板的当前行或者所选代码块<br>【Ctrl + C】Ctrl + 插入复制当前行或者所选代码块到剪贴板<br>【Ctrl + V】Shift + 从剪贴板插入粘贴<br>【Ctrl + Shift + V 】最近缓冲区粘贴<br>【Ctrl + D】复制当前行或者所选代码块<br>【Ctrl + Y】删除行<br>【Ctrl + Shift + J 】加入行<br>【Ctrl + enter 】拆分行<br>【shift + Enter 】 重新开始一行(无论光标在哪个位置)<br>【Ctrl + Shift + U 】切换选中词或所选代码块的大小写<br>【Ctrl + Shift +]】选中直到代码块的开始<br>【Ctrl + Shift +[】选择直到代码块的结束<br>【Ctrl + Delete】 删除光标右侧的词<br>【Ctrl + backspace】 删除光标左侧的词<br>【Ctrl + NumPad+】展开代码块<br>【Ctrl + NumPad-】折叠代码块<br>【Ctrl + Shift + NumPad+】展开所有代码块<br>【Ctrl + Shift + NumPad-】折叠所有代码块<br>【Ctrl + F4 】关闭当前标签页</p>\n<h3 id=\"同时编辑多行\"><a href=\"#同时编辑多行\" class=\"headerlink\" title=\"同时编辑多行\"></a>同时编辑多行</h3><hr>\n<p>【Alt + Click】 同时选中多行,同时编辑<br>【Shift + Ctrl + Alt + J】选择所有当前选中的词<br>【Alt + J】选择下一个相同的词<br>【Alt + Shift + J】取消所有选中的词<br>【Esc】取消选择所有选中的词或插入符号</p>\n<h3 id=\"运行类\"><a href=\"#运行类\" class=\"headerlink\" title=\"运行类\"></a>运行类</h3><hr>\n<p>【Alt + Shift + F10/F9】 选择配置和运行/调试<br>【Shift + F10/F9】 运行/调试<br>【Ctrl + Shift + F10/F9】 运行/调试上下文配置从编辑器<br>【Alt + Shift + R】 重新运行测试</p>\n<h3 id=\"调试类\"><a href=\"#调试类\" class=\"headerlink\" title=\"调试类\"></a>调试类</h3><hr>\n<p>【F8】不进入函数<br>【F7】 单步执行<br>【Shift + F7】 只能单步执行<br>【Shift + F8】跳出<br>【Alt + F9】 运行到光标处<br>【Alt + F8】 计算表达式的值<br>【F9】 重新开始<br>【Ctrl + f8】 切换断点<br>【Ctrl + Shift + F8】 查看断点</p>\n<h3 id=\"导航类\"><a href=\"#导航类\" class=\"headerlink\" title=\"导航类\"></a>导航类</h3><hr>\n<p>【Ctrl + N】跳转到指定类<br>【Ctrl + Shift + N】 通过文件名快速查找工程内的文件<br>【Ctrl + Alt + Shift + N】 通过一个字符查找函数位置<br>【Alt + Right】进入下一个编辑器选项<br>【Alt + Left】进入上一个编辑器选项<br>【f12】 进入上一个工具窗口<br>【esc】 从工具窗口进入编辑器<br>【Shift + Esc】 隐藏活动窗口<br>【Ctrl + Shift + F4】 关闭活动运行/消息/查找/选项卡<br>【Ctrl + G】 跳转到指定行<br>【Ctrl + E】 弹出最近打开的文件列表<br>【Ctrl + Alt + Left】导航前进<br>【Ctrl + Alt + Right】导航回退<br>【Ctrl + Shift +Backspace】定位到最近编辑窗口<br>【Alt + F1】查找当前选中的代码或文件在其他界面模块的位置<br>【Ctrl + B/Click】跳转到定义处<br>【Ctrl + 单击】转到声明<br>【Ctrl + Alt + B 】跳转方法实现处<br>【Ctrl + Shift + I】打开定义快速查找<br>【Ctrl + Shift + B 】跳转方法定义处<br>【Ctrl + U 】转到超级方法/超级类<br>【Alt + Up/Down】在方法间快速移动定位<br>【Ctrl +]/[】移动到代码块结束/启动<br>【Ctrl + f12】弹出文件结构<br>【Ctrl + H 】类型层次结构<br>【Ctrl + Alt + H】 调用层次结构<br>【F2/Shift + F2】跳转到后一个/前一个错误,在出错的语句之间进行跳转。<br>【F4/Ctrl + Enter】 编辑源代码/查看源代码<br>【Alt + home】 显示导航栏<br>【F11】切换标记<br>【Ctrl + F11】 采用记忆切换标记<br>【Ctrl + #[0-9]】跳转到带编号的标记<br>【Shift + F11 显示书签</p>\n<h3 id=\"VCS版本控制\"><a href=\"#VCS版本控制\" class=\"headerlink\" title=\"VCS版本控制\"></a>VCS版本控制</h3><hr>\n<p>【Alt + 反引号 (‘)】 ‘VCS’ 快速弹出<br>【Ctrl + K】提交项目到VCS<br>【Ctrl + T】 从VCS更新项目<br>【Alt + Shift + C】查看最近的更改</p>\n<h3 id=\"搜索-替换\"><a href=\"#搜索-替换\" class=\"headerlink\" title=\"搜索/替换\"></a>搜索/替换</h3><hr>\n<p>【Ctrl + F】 查找<br>【F3】 查找下一个<br>【Shift + F3】 查找上一个<br>【Ctrl + R】替换<br>【Ctrl + Shift + F】 在路径中找到<br>【Ctrl + Shift + R】 替换路径中的查找</p>\n<h3 id=\"搜索类\"><a href=\"#搜索类\" class=\"headerlink\" title=\"搜索类\"></a>搜索类</h3><hr>\n<p>【Alt + f7】查找实例<br>【Ctrl + f7】在文件中查找实例<br>【Ctrl + Shift + f7】 在文件中高亮实例<br>【Ctrl + Alt + F7】显示实例</p>\n<h3 id=\"重构类\"><a href=\"#重构类\" class=\"headerlink\" title=\"重构类\"></a>重构类</h3><hr>\n<p>【F5】拷贝当前文件<br>【F6】移动当前文件<br>【Alt + delete】 安全删除<br>【Shift + F6】 重命名<br>【Ctrl + Alt + N】嵌入变量<br>【Ctrl + Alt + M】提取函数<br>【Ctrl + Alt + V】引入变量<br>【Ctrl + Alt + C】引入常量<br>【Ctrl + Alt + P】引入参数<br>【Ctrl + F6】改变方法名</p>\n<h3 id=\"常规类\"><a href=\"#常规类\" class=\"headerlink\" title=\"常规类\"></a>常规类</h3><hr>\n<p>【Ctrl + Shift +a】 查找当前<br>【双击shift】查找所有的(包括文件、命令等)<br>【Alt + #[0-9]】 打开相应的工具窗口<br>【Ctrl + Shift + f12】 键切换最大化编辑器<br>【Alt + Shift + F】 将添加到收藏夹<br>【Alt + Shift + I】 检查当前文件与当前配置文件<br>【Ctrl + 反引号 (‘)】快速切换当前计划<br>【Ctrl + Alt + S】 打开设置<br>【Ctrl + Tab】 切换选项卡和工具窗口</p>\n<h2 id=\"常用插件推荐\"><a href=\"#常用插件推荐\" class=\"headerlink\" title=\"常用插件推荐\"></a>常用插件推荐</h2><ol>\n<li><p>Key Promoter【学习快捷键神器】<br>鼠标完成某项操作时,会提示相应的快捷键。</p>\n</li>\n<li><p>activate-power-mode【装*神器】<br>Atom上的神器,安装之后可以在 window -> activate-power-mode中关闭震动以及开启彩色模式。</p>\n</li>\n<li><p>Markdown<br>支持Markdown语法</p>\n</li>\n<li><p>CodeGlance<br>之前用过Sublime编辑器同学,强烈推荐这个,这个插件可以让 webstorm 也具有右侧展示当前文件中代码的缩略图。</p>\n</li>\n</ol>\n<h2 id=\"常见问题\"><a href=\"#常见问题\" class=\"headerlink\" title=\"常见问题\"></a>常见问题</h2><p> webstorm可以像sublime一样多行选择,比如在sublime中全选一个单词然后使用cmd+d,就可以往下选择一样的单词,然后进入多行模式吗?</p>\n<h3 id=\"逐个选中多个相同的词\"><a href=\"#逐个选中多个相同的词\" class=\"headerlink\" title=\"逐个选中多个相同的词\"></a><strong><em>逐个选中多个相同的词</em></strong></h3><p>sublime:Ctrl + D (Ctrl + K可以跳过一个)<br>webstrom:Ctrl + K ( Ctrl + Shift + K 可以回退一个)</p>\n<h3 id=\"同时选中所有相同的词\"><a href=\"#同时选中所有相同的词\" class=\"headerlink\" title=\"同时选中所有相同的词\"></a><strong><em>同时选中所有相同的词</em></strong></h3><p>sublime:Alt + F3<br>webstrom:Ctrl + Shift + Alt + K</p>\n<h3 id=\"单击左键选择多行\"><a href=\"#单击左键选择多行\" class=\"headerlink\" title=\"单击左键选择多行\"></a><strong><em>单击左键选择多行</em></strong></h3><p>sublime:按住Ctrl然后单击左键<br>webstrom:按住Alt然后单击左键</p>\n<h3 id=\"拖动选择多行\"><a href=\"#拖动选择多行\" class=\"headerlink\" title=\"拖动选择多行\"></a><strong><em>拖动选择多行</em></strong></h3><p>sublime:按住Ctrl + Shift + 鼠标右键 拖动<br>webstrom:按住Alt + 鼠标右键 拖动</p>\n","site":{"data":{}},"excerpt":"","more":"<blockquote>\n<p>Webstorm是一款前端开发神器,此文介绍webstorm的快捷键和技巧分享。</p>\n</blockquote>\n<p>所谓工欲善其事,必先利其器嘛,想着如果要提高开发效率,那掌握一些常用的快捷键应该是少不了的,所以把webstorm快捷键及技巧分享给大家。持续更新中</p>\n<p>webstorm官方下载地址:<a href=\"http://www.jetbrains.com/webstorm/\">http://www.jetbrains.com/webstorm/</a></p>\n<h2 id=\"快捷键大全\"><a href=\"#快捷键大全\" class=\"headerlink\" title=\"快捷键大全\"></a>快捷键大全</h2><h3 id=\"编辑类\"><a href=\"#编辑类\" class=\"headerlink\" title=\"编辑类\"></a>编辑类</h3><hr>\n<p>【Ctrl + Space 】基本代码完成 (任何类、 方法或变量名称)<br>【Alt + Enter】 展示意图动作和快速修复<br>【Ctrl + P】显示调用方法内参数信息<br>【Ctrl + Q】 快速记录查找<br>【Ctrl + mouse】放在代码上面-显示简短的代码信息<br>【Ctrl + F1】在插入符号显示错误或警告的说明<br>【Alt + Insert】生成代码<br>【Ctrl + Alt + T】快速生成(if..else, try..catch, for, etc.)等<br>【Ctrl + J】插入Live模板<br>【Ctrl + / 】行注释与取消行注释<br>【Ctrl + Shift + / 】块注释与取消块注释<br>【Ctrl + W 】增加选择中代码块<br>【Ctrl + Shift + W 】减少当前所选内容代码块<br>【Alt + Q 】上下文信息<br>【Ctrl + Alt + L 】格式化代码<br>【Ctrl + Alt + I 】自动缩进的行数<br>【Tab / Shift + Tab 】缩进/取消缩进选定的行<br>【Ctrl + X , Shift + Delete】 剪切到剪贴板的当前行或者所选代码块<br>【Ctrl + C】Ctrl + 插入复制当前行或者所选代码块到剪贴板<br>【Ctrl + V】Shift + 从剪贴板插入粘贴<br>【Ctrl + Shift + V 】最近缓冲区粘贴<br>【Ctrl + D】复制当前行或者所选代码块<br>【Ctrl + Y】删除行<br>【Ctrl + Shift + J 】加入行<br>【Ctrl + enter 】拆分行<br>【shift + Enter 】 重新开始一行(无论光标在哪个位置)<br>【Ctrl + Shift + U 】切换选中词或所选代码块的大小写<br>【Ctrl + Shift +]】选中直到代码块的开始<br>【Ctrl + Shift +[】选择直到代码块的结束<br>【Ctrl + Delete】 删除光标右侧的词<br>【Ctrl + backspace】 删除光标左侧的词<br>【Ctrl + NumPad+】展开代码块<br>【Ctrl + NumPad-】折叠代码块<br>【Ctrl + Shift + NumPad+】展开所有代码块<br>【Ctrl + Shift + NumPad-】折叠所有代码块<br>【Ctrl + F4 】关闭当前标签页</p>\n<h3 id=\"同时编辑多行\"><a href=\"#同时编辑多行\" class=\"headerlink\" title=\"同时编辑多行\"></a>同时编辑多行</h3><hr>\n<p>【Alt + Click】 同时选中多行,同时编辑<br>【Shift + Ctrl + Alt + J】选择所有当前选中的词<br>【Alt + J】选择下一个相同的词<br>【Alt + Shift + J】取消所有选中的词<br>【Esc】取消选择所有选中的词或插入符号</p>\n<h3 id=\"运行类\"><a href=\"#运行类\" class=\"headerlink\" title=\"运行类\"></a>运行类</h3><hr>\n<p>【Alt + Shift + F10/F9】 选择配置和运行/调试<br>【Shift + F10/F9】 运行/调试<br>【Ctrl + Shift + F10/F9】 运行/调试上下文配置从编辑器<br>【Alt + Shift + R】 重新运行测试</p>\n<h3 id=\"调试类\"><a href=\"#调试类\" class=\"headerlink\" title=\"调试类\"></a>调试类</h3><hr>\n<p>【F8】不进入函数<br>【F7】 单步执行<br>【Shift + F7】 只能单步执行<br>【Shift + F8】跳出<br>【Alt + F9】 运行到光标处<br>【Alt + F8】 计算表达式的值<br>【F9】 重新开始<br>【Ctrl + f8】 切换断点<br>【Ctrl + Shift + F8】 查看断点</p>\n<h3 id=\"导航类\"><a href=\"#导航类\" class=\"headerlink\" title=\"导航类\"></a>导航类</h3><hr>\n<p>【Ctrl + N】跳转到指定类<br>【Ctrl + Shift + N】 通过文件名快速查找工程内的文件<br>【Ctrl + Alt + Shift + N】 通过一个字符查找函数位置<br>【Alt + Right】进入下一个编辑器选项<br>【Alt + Left】进入上一个编辑器选项<br>【f12】 进入上一个工具窗口<br>【esc】 从工具窗口进入编辑器<br>【Shift + Esc】 隐藏活动窗口<br>【Ctrl + Shift + F4】 关闭活动运行/消息/查找/选项卡<br>【Ctrl + G】 跳转到指定行<br>【Ctrl + E】 弹出最近打开的文件列表<br>【Ctrl + Alt + Left】导航前进<br>【Ctrl + Alt + Right】导航回退<br>【Ctrl + Shift +Backspace】定位到最近编辑窗口<br>【Alt + F1】查找当前选中的代码或文件在其他界面模块的位置<br>【Ctrl + B/Click】跳转到定义处<br>【Ctrl + 单击】转到声明<br>【Ctrl + Alt + B 】跳转方法实现处<br>【Ctrl + Shift + I】打开定义快速查找<br>【Ctrl + Shift + B 】跳转方法定义处<br>【Ctrl + U 】转到超级方法/超级类<br>【Alt + Up/Down】在方法间快速移动定位<br>【Ctrl +]/[】移动到代码块结束/启动<br>【Ctrl + f12】弹出文件结构<br>【Ctrl + H 】类型层次结构<br>【Ctrl + Alt + H】 调用层次结构<br>【F2/Shift + F2】跳转到后一个/前一个错误,在出错的语句之间进行跳转。<br>【F4/Ctrl + Enter】 编辑源代码/查看源代码<br>【Alt + home】 显示导航栏<br>【F11】切换标记<br>【Ctrl + F11】 采用记忆切换标记<br>【Ctrl + #[0-9]】跳转到带编号的标记<br>【Shift + F11 显示书签</p>\n<h3 id=\"VCS版本控制\"><a href=\"#VCS版本控制\" class=\"headerlink\" title=\"VCS版本控制\"></a>VCS版本控制</h3><hr>\n<p>【Alt + 反引号 (‘)】 ‘VCS’ 快速弹出<br>【Ctrl + K】提交项目到VCS<br>【Ctrl + T】 从VCS更新项目<br>【Alt + Shift + C】查看最近的更改</p>\n<h3 id=\"搜索-替换\"><a href=\"#搜索-替换\" class=\"headerlink\" title=\"搜索/替换\"></a>搜索/替换</h3><hr>\n<p>【Ctrl + F】 查找<br>【F3】 查找下一个<br>【Shift + F3】 查找上一个<br>【Ctrl + R】替换<br>【Ctrl + Shift + F】 在路径中找到<br>【Ctrl + Shift + R】 替换路径中的查找</p>\n<h3 id=\"搜索类\"><a href=\"#搜索类\" class=\"headerlink\" title=\"搜索类\"></a>搜索类</h3><hr>\n<p>【Alt + f7】查找实例<br>【Ctrl + f7】在文件中查找实例<br>【Ctrl + Shift + f7】 在文件中高亮实例<br>【Ctrl + Alt + F7】显示实例</p>\n<h3 id=\"重构类\"><a href=\"#重构类\" class=\"headerlink\" title=\"重构类\"></a>重构类</h3><hr>\n<p>【F5】拷贝当前文件<br>【F6】移动当前文件<br>【Alt + delete】 安全删除<br>【Shift + F6】 重命名<br>【Ctrl + Alt + N】嵌入变量<br>【Ctrl + Alt + M】提取函数<br>【Ctrl + Alt + V】引入变量<br>【Ctrl + Alt + C】引入常量<br>【Ctrl + Alt + P】引入参数<br>【Ctrl + F6】改变方法名</p>\n<h3 id=\"常规类\"><a href=\"#常规类\" class=\"headerlink\" title=\"常规类\"></a>常规类</h3><hr>\n<p>【Ctrl + Shift +a】 查找当前<br>【双击shift】查找所有的(包括文件、命令等)<br>【Alt + #[0-9]】 打开相应的工具窗口<br>【Ctrl + Shift + f12】 键切换最大化编辑器<br>【Alt + Shift + F】 将添加到收藏夹<br>【Alt + Shift + I】 检查当前文件与当前配置文件<br>【Ctrl + 反引号 (‘)】快速切换当前计划<br>【Ctrl + Alt + S】 打开设置<br>【Ctrl + Tab】 切换选项卡和工具窗口</p>\n<h2 id=\"常用插件推荐\"><a href=\"#常用插件推荐\" class=\"headerlink\" title=\"常用插件推荐\"></a>常用插件推荐</h2><ol>\n<li><p>Key Promoter【学习快捷键神器】<br>鼠标完成某项操作时,会提示相应的快捷键。</p>\n</li>\n<li><p>activate-power-mode【装*神器】<br>Atom上的神器,安装之后可以在 window -> activate-power-mode中关闭震动以及开启彩色模式。</p>\n</li>\n<li><p>Markdown<br>支持Markdown语法</p>\n</li>\n<li><p>CodeGlance<br>之前用过Sublime编辑器同学,强烈推荐这个,这个插件可以让 webstorm 也具有右侧展示当前文件中代码的缩略图。</p>\n</li>\n</ol>\n<h2 id=\"常见问题\"><a href=\"#常见问题\" class=\"headerlink\" title=\"常见问题\"></a>常见问题</h2><p> webstorm可以像sublime一样多行选择,比如在sublime中全选一个单词然后使用cmd+d,就可以往下选择一样的单词,然后进入多行模式吗?</p>\n<h3 id=\"逐个选中多个相同的词\"><a href=\"#逐个选中多个相同的词\" class=\"headerlink\" title=\"逐个选中多个相同的词\"></a><strong><em>逐个选中多个相同的词</em></strong></h3><p>sublime:Ctrl + D (Ctrl + K可以跳过一个)<br>webstrom:Ctrl + K ( Ctrl + Shift + K 可以回退一个)</p>\n<h3 id=\"同时选中所有相同的词\"><a href=\"#同时选中所有相同的词\" class=\"headerlink\" title=\"同时选中所有相同的词\"></a><strong><em>同时选中所有相同的词</em></strong></h3><p>sublime:Alt + F3<br>webstrom:Ctrl + Shift + Alt + K</p>\n<h3 id=\"单击左键选择多行\"><a href=\"#单击左键选择多行\" class=\"headerlink\" title=\"单击左键选择多行\"></a><strong><em>单击左键选择多行</em></strong></h3><p>sublime:按住Ctrl然后单击左键<br>webstrom:按住Alt然后单击左键</p>\n<h3 id=\"拖动选择多行\"><a href=\"#拖动选择多行\" class=\"headerlink\" title=\"拖动选择多行\"></a><strong><em>拖动选择多行</em></strong></h3><p>sublime:按住Ctrl + Shift + 鼠标右键 拖动<br>webstrom:按住Alt + 鼠标右键 拖动</p>\n"},{"title":"站在人工智能风口的Python程序员","comments":1,"img":"http://img3.cache.netease.com/tech/2015/11/12/20151112091757bbdcf_550.jpg","abbrlink":63096,"date":"2017-08-25T08:12:19.000Z","_content":"\n\n> 2017年短短不到三个月的时间,国内AI获投项目已有36个,千万级别融资占据半数以上。\n\n\n嗯,就是那么霸道。两会刚刚结束,“人工智能”首次被列入政府工作报告,随之而来的是人工智能板块领跑大盘涨势,无疑,这一切将刺激人工智能在多个领域的全面发展。\n\n大量融资的风口企业,绝对会把钱拿到招揽人才。而现在最流行的人工智能技术栈就是 TensorFlow 和 PyTorch,使用它们就是一份 Python 编程开发工作。一时间,python程序员成了人才市场的“抢手货”,工资待遇也水涨船高了。口说无凭,我们去工作搜索引擎jobui.com找看。一看吓一跳,首先是待遇啊:\n\n![images](http://img.blog.csdn.net/20170318173404277?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3psYWl5b25naGFv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)\n\n最高待遇不过万不出奇啊!这还只是广州的情况,估计在北上深三个城市里,两者的差距还要大得多。除了待遇,跑到风口行业写Python,分分钟就是人工智能科学家的光环上身啊,估计大家都要跑得比西方记者还快了。\n\n乐了Python程序员,苦的就是公司是Python技术栈的传统IT业务的企业了。就别提一般的小企业,连豆瓣、知乎这样的都大受冲击了。豆瓣的洪强宁,也跑去创业做人工智能相关的应用了……\n\n没有人能够对抗趋势,风口企业这么有钱,能做的就只能是避开它们的锋芒。我觉得Python技术栈的企业应该考虑新的技术选型了。\n\n","source":"_posts/站在人工智能风口的Python程序员.md","raw":"---\ntitle: 站在人工智能风口的Python程序员\ncategories: 后端\ntags: python\ncomments: true\nimg: 'http://img3.cache.netease.com/tech/2015/11/12/20151112091757bbdcf_550.jpg'\nabbrlink: 63096\ndate: 2017-08-25 16:12:19\n---\n\n\n> 2017年短短不到三个月的时间,国内AI获投项目已有36个,千万级别融资占据半数以上。\n\n\n嗯,就是那么霸道。两会刚刚结束,“人工智能”首次被列入政府工作报告,随之而来的是人工智能板块领跑大盘涨势,无疑,这一切将刺激人工智能在多个领域的全面发展。\n\n大量融资的风口企业,绝对会把钱拿到招揽人才。而现在最流行的人工智能技术栈就是 TensorFlow 和 PyTorch,使用它们就是一份 Python 编程开发工作。一时间,python程序员成了人才市场的“抢手货”,工资待遇也水涨船高了。口说无凭,我们去工作搜索引擎jobui.com找看。一看吓一跳,首先是待遇啊:\n\n![images](http://img.blog.csdn.net/20170318173404277?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3psYWl5b25naGFv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)\n\n最高待遇不过万不出奇啊!这还只是广州的情况,估计在北上深三个城市里,两者的差距还要大得多。除了待遇,跑到风口行业写Python,分分钟就是人工智能科学家的光环上身啊,估计大家都要跑得比西方记者还快了。\n\n乐了Python程序员,苦的就是公司是Python技术栈的传统IT业务的企业了。就别提一般的小企业,连豆瓣、知乎这样的都大受冲击了。豆瓣的洪强宁,也跑去创业做人工智能相关的应用了……\n\n没有人能够对抗趋势,风口企业这么有钱,能做的就只能是避开它们的锋芒。我觉得Python技术栈的企业应该考虑新的技术选型了。\n\n","slug":"站在人工智能风口的Python程序员","published":1,"updated":"2023-03-19T08:43:38.385Z","layout":"post","photos":[],"link":"","_id":"clff5n8sk00035ms60c0sgj1e","content":"<blockquote>\n<p>2017年短短不到三个月的时间,国内AI获投项目已有36个,千万级别融资占据半数以上。</p>\n</blockquote>\n<p>嗯,就是那么霸道。两会刚刚结束,“人工智能”首次被列入政府工作报告,随之而来的是人工智能板块领跑大盘涨势,无疑,这一切将刺激人工智能在多个领域的全面发展。</p>\n<p>大量融资的风口企业,绝对会把钱拿到招揽人才。而现在最流行的人工智能技术栈就是 TensorFlow 和 PyTorch,使用它们就是一份 Python 编程开发工作。一时间,python程序员成了人才市场的“抢手货”,工资待遇也水涨船高了。口说无凭,我们去工作搜索引擎jobui.com找看。一看吓一跳,首先是待遇啊:</p>\n<p><img src=\"http://img.blog.csdn.net/20170318173404277?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3psYWl5b25naGFv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast\" alt=\"images\"></p>\n<p>最高待遇不过万不出奇啊!这还只是广州的情况,估计在北上深三个城市里,两者的差距还要大得多。除了待遇,跑到风口行业写Python,分分钟就是人工智能科学家的光环上身啊,估计大家都要跑得比西方记者还快了。</p>\n<p>乐了Python程序员,苦的就是公司是Python技术栈的传统IT业务的企业了。就别提一般的小企业,连豆瓣、知乎这样的都大受冲击了。豆瓣的洪强宁,也跑去创业做人工智能相关的应用了……</p>\n<p>没有人能够对抗趋势,风口企业这么有钱,能做的就只能是避开它们的锋芒。我觉得Python技术栈的企业应该考虑新的技术选型了。</p>\n","site":{"data":{}},"excerpt":"","more":"<blockquote>\n<p>2017年短短不到三个月的时间,国内AI获投项目已有36个,千万级别融资占据半数以上。</p>\n</blockquote>\n<p>嗯,就是那么霸道。两会刚刚结束,“人工智能”首次被列入政府工作报告,随之而来的是人工智能板块领跑大盘涨势,无疑,这一切将刺激人工智能在多个领域的全面发展。</p>\n<p>大量融资的风口企业,绝对会把钱拿到招揽人才。而现在最流行的人工智能技术栈就是 TensorFlow 和 PyTorch,使用它们就是一份 Python 编程开发工作。一时间,python程序员成了人才市场的“抢手货”,工资待遇也水涨船高了。口说无凭,我们去工作搜索引擎jobui.com找看。一看吓一跳,首先是待遇啊:</p>\n<p><img src=\"http://img.blog.csdn.net/20170318173404277?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3psYWl5b25naGFv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast\" alt=\"images\"></p>\n<p>最高待遇不过万不出奇啊!这还只是广州的情况,估计在北上深三个城市里,两者的差距还要大得多。除了待遇,跑到风口行业写Python,分分钟就是人工智能科学家的光环上身啊,估计大家都要跑得比西方记者还快了。</p>\n<p>乐了Python程序员,苦的就是公司是Python技术栈的传统IT业务的企业了。就别提一般的小企业,连豆瓣、知乎这样的都大受冲击了。豆瓣的洪强宁,也跑去创业做人工智能相关的应用了……</p>\n<p>没有人能够对抗趋势,风口企业这么有钱,能做的就只能是避开它们的锋芒。我觉得Python技术栈的企业应该考虑新的技术选型了。</p>\n"},{"title":"JavaScript代码检查工具对比","comments":1,"abbrlink":26064,"date":"2017-04-03T07:51:30.000Z","_content":"\n![image](http://img.mp.sohu.com/upload/20170727/7be6fe0dbc944f6c8bc36f8a3b28ba87.png)\n\nJavaScript代码校验工具能够让你在写代码时避免一些低级的错误。尽管我有很多年的开发经验,我仍然会犯一些语法错误并且忘记处理我的错误。一个好的校验工具或者格式化工具,可以让我避免这些错误,以免浪费我的时间。一个好的校验工具还能确保一个项目保持一个固定的代码风格。\n\n有很多关于JavaScript的校验工具,你怎样选择其中的某一个呢?让我们一起来看看它们有什么样的特性以及优缺点。接下来我要介绍四种常用的选择:JSLint,JSHint,JSCS和ESLint。\n\n## Overview\n\n这四个工具的基本用法都是类似的,它们定义了一套规则用来解析和报告js文件里面的问题。它们都可以通过npm来进行安装。可以通过命令行来调用它们,给命令行传递文件参数,也可以作为grunt这一类工具的插件被使用,或者可以集成到编辑器中。它们都支持使用注释作为配置。\n\n以上就是它们所有的相似之处了,每一个工具都有优缺点,只是有些工具相比于其它工具更加有优势。\n\n## JSLint\n\nJSLint是这四种校验工具中最为古老的。Douglas Crockford(译注:《JavaScript 语言精粹》的作者)在2002年创造了它,它是强制使用的,为了保留它所认为的JavaScript这门语言的精华部分。如果你认同他的观点,对你而言,JSLint将会是一个好的工具。安装完成马上即可使用。\n\nJSLint的缺点是它是不可以进行配置和扩展的。你不能禁用它的某些特性,并且缺乏文档。它的官网并没有什么用处,例如,它缺少如果将这个工具整合到你的编辑器的任何信息。\n\n### 优点:\n- 配置规则都已经定好了,安装即可使用(如果你同意这些强制的规则的话)\n\n### 缺点:\n- JSLint没有可配置文件,你无法对它的规则进行更改\n- 配置规则的数量有限,有些规则无法禁用\n- 不支持自定义规则\n- 缺少文档\n- 很难定位到哪条规则导致了错误\n\n## JSCSC\n\nJSCS和以上两个都是不同的,如果不给它一个配置文件或者使用一套预设的规则,它将什么也不做不了,不过你可以从别的网站下载配置文件,所以这并不是什么大问题,并且它有很多的预设规则,比如说jQuery的代码风格的预设规则以及Google的代码风格的预设规则。\n\n\n它有超过90种不同的规则,并且你可以通过插件创造自定义规则。JSCS也支持自定义输出报告,这使得其更容易与需要其以特定格式输入的工具集成。\n\nJSCS是一个代码风格检查器,这意味着它只捕获与代码格式相关的问题,而不包含潜在的错误。因此,它比其他工具的灵活性更低,但是如果您需要强制执行特定的编码风格,那么JSCS就可以做的很好。\n\n### 优点:\n- 支持自定义输出报告,可以使其更容易和其它工具进行集成\n- 如果您遵循现有的可用编码风格之一,预设和现成的配置文件可以轻松设置\n- 在报告中,有一个标志包含在规则名之中,所以很容易找出是哪条规则导致了错误\n- 可以利用自定义的插件进行拓展\n\n### 缺点:\n- 只检测到代码风格的违规,不检测潜在的错误,比如说未使用的变量或者变量的全局污染等\n- 四个工具中性能最差的,但是这并不是一个典型用途的问题\n\n\n## ESLint\n\nESLint是这四个工具中最新的,它被设计为易于拓展的,具有大量的自定义规则,并且很容易通过插件的形式来安装。它输出简洁的报告,但是默认包含规则的名称,因此你始终知道是那条规则导致了错误的信息。\n\nESLint的文档多少有些混乱,规则的列表容易查找,并且按逻辑进行分类,但配置说明在某些地方有点混乱。然而,它提供了如何对编辑器进行集成,插件和示例的链接。\n\n### 优点:\n- 灵活:任何规则都可以切换使用,并且有些规则有额外的配置可以使用\n- 可拓展性好,并且有很多可用的插件\n- 易于理解的输出报告\n- 包含一些其它工具所没有的规则,使得ESLint更容易检测出代码中潜在的错误\n- 对ES6的支持性最好,是唯一支持JSX的工具\n- 支持自定义输出报告\n\n### 缺点:\n- 需要一些配置\n- 性能差,但这并不是主要的障碍\n\n\n## 推荐\n\n一个好的校验工具是捕捉问题非常重要的一步,但是它只能检测出它的规则许可范围之内的错误。对于更多简单明了的bug的捕捉,我建议使用单元测试,Code reviews也是也是不错的方式。\n","source":"_posts/JavaScript代码检查工具对比.md","raw":"---\ntitle: JavaScript代码检查工具对比\ncategories: 前端\ntags:\n - JavaScript\n - jsLint\ncomments: true\nabbrlink: 26064\ndate: 2017-04-03 15:51:30\n---\n\n![image](http://img.mp.sohu.com/upload/20170727/7be6fe0dbc944f6c8bc36f8a3b28ba87.png)\n\nJavaScript代码校验工具能够让你在写代码时避免一些低级的错误。尽管我有很多年的开发经验,我仍然会犯一些语法错误并且忘记处理我的错误。一个好的校验工具或者格式化工具,可以让我避免这些错误,以免浪费我的时间。一个好的校验工具还能确保一个项目保持一个固定的代码风格。\n\n有很多关于JavaScript的校验工具,你怎样选择其中的某一个呢?让我们一起来看看它们有什么样的特性以及优缺点。接下来我要介绍四种常用的选择:JSLint,JSHint,JSCS和ESLint。\n\n## Overview\n\n这四个工具的基本用法都是类似的,它们定义了一套规则用来解析和报告js文件里面的问题。它们都可以通过npm来进行安装。可以通过命令行来调用它们,给命令行传递文件参数,也可以作为grunt这一类工具的插件被使用,或者可以集成到编辑器中。它们都支持使用注释作为配置。\n\n以上就是它们所有的相似之处了,每一个工具都有优缺点,只是有些工具相比于其它工具更加有优势。\n\n## JSLint\n\nJSLint是这四种校验工具中最为古老的。Douglas Crockford(译注:《JavaScript 语言精粹》的作者)在2002年创造了它,它是强制使用的,为了保留它所认为的JavaScript这门语言的精华部分。如果你认同他的观点,对你而言,JSLint将会是一个好的工具。安装完成马上即可使用。\n\nJSLint的缺点是它是不可以进行配置和扩展的。你不能禁用它的某些特性,并且缺乏文档。它的官网并没有什么用处,例如,它缺少如果将这个工具整合到你的编辑器的任何信息。\n\n### 优点:\n- 配置规则都已经定好了,安装即可使用(如果你同意这些强制的规则的话)\n\n### 缺点:\n- JSLint没有可配置文件,你无法对它的规则进行更改\n- 配置规则的数量有限,有些规则无法禁用\n- 不支持自定义规则\n- 缺少文档\n- 很难定位到哪条规则导致了错误\n\n## JSCSC\n\nJSCS和以上两个都是不同的,如果不给它一个配置文件或者使用一套预设的规则,它将什么也不做不了,不过你可以从别的网站下载配置文件,所以这并不是什么大问题,并且它有很多的预设规则,比如说jQuery的代码风格的预设规则以及Google的代码风格的预设规则。\n\n\n它有超过90种不同的规则,并且你可以通过插件创造自定义规则。JSCS也支持自定义输出报告,这使得其更容易与需要其以特定格式输入的工具集成。\n\nJSCS是一个代码风格检查器,这意味着它只捕获与代码格式相关的问题,而不包含潜在的错误。因此,它比其他工具的灵活性更低,但是如果您需要强制执行特定的编码风格,那么JSCS就可以做的很好。\n\n### 优点:\n- 支持自定义输出报告,可以使其更容易和其它工具进行集成\n- 如果您遵循现有的可用编码风格之一,预设和现成的配置文件可以轻松设置\n- 在报告中,有一个标志包含在规则名之中,所以很容易找出是哪条规则导致了错误\n- 可以利用自定义的插件进行拓展\n\n### 缺点:\n- 只检测到代码风格的违规,不检测潜在的错误,比如说未使用的变量或者变量的全局污染等\n- 四个工具中性能最差的,但是这并不是一个典型用途的问题\n\n\n## ESLint\n\nESLint是这四个工具中最新的,它被设计为易于拓展的,具有大量的自定义规则,并且很容易通过插件的形式来安装。它输出简洁的报告,但是默认包含规则的名称,因此你始终知道是那条规则导致了错误的信息。\n\nESLint的文档多少有些混乱,规则的列表容易查找,并且按逻辑进行分类,但配置说明在某些地方有点混乱。然而,它提供了如何对编辑器进行集成,插件和示例的链接。\n\n### 优点:\n- 灵活:任何规则都可以切换使用,并且有些规则有额外的配置可以使用\n- 可拓展性好,并且有很多可用的插件\n- 易于理解的输出报告\n- 包含一些其它工具所没有的规则,使得ESLint更容易检测出代码中潜在的错误\n- 对ES6的支持性最好,是唯一支持JSX的工具\n- 支持自定义输出报告\n\n### 缺点:\n- 需要一些配置\n- 性能差,但这并不是主要的障碍\n\n\n## 推荐\n\n一个好的校验工具是捕捉问题非常重要的一步,但是它只能检测出它的规则许可范围之内的错误。对于更多简单明了的bug的捕捉,我建议使用单元测试,Code reviews也是也是不错的方式。\n","slug":"JavaScript代码检查工具对比","published":1,"updated":"2023-03-19T08:43:38.385Z","layout":"post","photos":[],"link":"","_id":"clff5n8sm00065ms6enou65hf","content":"<p><img src=\"http://img.mp.sohu.com/upload/20170727/7be6fe0dbc944f6c8bc36f8a3b28ba87.png\" alt=\"image\"></p>\n<p>JavaScript代码校验工具能够让你在写代码时避免一些低级的错误。尽管我有很多年的开发经验,我仍然会犯一些语法错误并且忘记处理我的错误。一个好的校验工具或者格式化工具,可以让我避免这些错误,以免浪费我的时间。一个好的校验工具还能确保一个项目保持一个固定的代码风格。</p>\n<p>有很多关于JavaScript的校验工具,你怎样选择其中的某一个呢?让我们一起来看看它们有什么样的特性以及优缺点。接下来我要介绍四种常用的选择:JSLint,JSHint,JSCS和ESLint。</p>\n<h2 id=\"Overview\"><a href=\"#Overview\" class=\"headerlink\" title=\"Overview\"></a>Overview</h2><p>这四个工具的基本用法都是类似的,它们定义了一套规则用来解析和报告js文件里面的问题。它们都可以通过npm来进行安装。可以通过命令行来调用它们,给命令行传递文件参数,也可以作为grunt这一类工具的插件被使用,或者可以集成到编辑器中。它们都支持使用注释作为配置。</p>\n<p>以上就是它们所有的相似之处了,每一个工具都有优缺点,只是有些工具相比于其它工具更加有优势。</p>\n<h2 id=\"JSLint\"><a href=\"#JSLint\" class=\"headerlink\" title=\"JSLint\"></a>JSLint</h2><p>JSLint是这四种校验工具中最为古老的。Douglas Crockford(译注:《JavaScript 语言精粹》的作者)在2002年创造了它,它是强制使用的,为了保留它所认为的JavaScript这门语言的精华部分。如果你认同他的观点,对你而言,JSLint将会是一个好的工具。安装完成马上即可使用。</p>\n<p>JSLint的缺点是它是不可以进行配置和扩展的。你不能禁用它的某些特性,并且缺乏文档。它的官网并没有什么用处,例如,它缺少如果将这个工具整合到你的编辑器的任何信息。</p>\n<h3 id=\"优点:\"><a href=\"#优点:\" class=\"headerlink\" title=\"优点:\"></a>优点:</h3><ul>\n<li>配置规则都已经定好了,安装即可使用(如果你同意这些强制的规则的话)</li>\n</ul>\n<h3 id=\"缺点:\"><a href=\"#缺点:\" class=\"headerlink\" title=\"缺点:\"></a>缺点:</h3><ul>\n<li>JSLint没有可配置文件,你无法对它的规则进行更改</li>\n<li>配置规则的数量有限,有些规则无法禁用</li>\n<li>不支持自定义规则</li>\n<li>缺少文档</li>\n<li>很难定位到哪条规则导致了错误</li>\n</ul>\n<h2 id=\"JSCSC\"><a href=\"#JSCSC\" class=\"headerlink\" title=\"JSCSC\"></a>JSCSC</h2><p>JSCS和以上两个都是不同的,如果不给它一个配置文件或者使用一套预设的规则,它将什么也不做不了,不过你可以从别的网站下载配置文件,所以这并不是什么大问题,并且它有很多的预设规则,比如说jQuery的代码风格的预设规则以及Google的代码风格的预设规则。</p>\n<p>它有超过90种不同的规则,并且你可以通过插件创造自定义规则。JSCS也支持自定义输出报告,这使得其更容易与需要其以特定格式输入的工具集成。</p>\n<p>JSCS是一个代码风格检查器,这意味着它只捕获与代码格式相关的问题,而不包含潜在的错误。因此,它比其他工具的灵活性更低,但是如果您需要强制执行特定的编码风格,那么JSCS就可以做的很好。</p>\n<h3 id=\"优点:-1\"><a href=\"#优点:-1\" class=\"headerlink\" title=\"优点:\"></a>优点:</h3><ul>\n<li>支持自定义输出报告,可以使其更容易和其它工具进行集成</li>\n<li>如果您遵循现有的可用编码风格之一,预设和现成的配置文件可以轻松设置</li>\n<li>在报告中,有一个标志包含在规则名之中,所以很容易找出是哪条规则导致了错误</li>\n<li>可以利用自定义的插件进行拓展</li>\n</ul>\n<h3 id=\"缺点:-1\"><a href=\"#缺点:-1\" class=\"headerlink\" title=\"缺点:\"></a>缺点:</h3><ul>\n<li>只检测到代码风格的违规,不检测潜在的错误,比如说未使用的变量或者变量的全局污染等</li>\n<li>四个工具中性能最差的,但是这并不是一个典型用途的问题</li>\n</ul>\n<h2 id=\"ESLint\"><a href=\"#ESLint\" class=\"headerlink\" title=\"ESLint\"></a>ESLint</h2><p>ESLint是这四个工具中最新的,它被设计为易于拓展的,具有大量的自定义规则,并且很容易通过插件的形式来安装。它输出简洁的报告,但是默认包含规则的名称,因此你始终知道是那条规则导致了错误的信息。</p>\n<p>ESLint的文档多少有些混乱,规则的列表容易查找,并且按逻辑进行分类,但配置说明在某些地方有点混乱。然而,它提供了如何对编辑器进行集成,插件和示例的链接。</p>\n<h3 id=\"优点:-2\"><a href=\"#优点:-2\" class=\"headerlink\" title=\"优点:\"></a>优点:</h3><ul>\n<li>灵活:任何规则都可以切换使用,并且有些规则有额外的配置可以使用</li>\n<li>可拓展性好,并且有很多可用的插件</li>\n<li>易于理解的输出报告</li>\n<li>包含一些其它工具所没有的规则,使得ESLint更容易检测出代码中潜在的错误</li>\n<li>对ES6的支持性最好,是唯一支持JSX的工具</li>\n<li>支持自定义输出报告</li>\n</ul>\n<h3 id=\"缺点:-2\"><a href=\"#缺点:-2\" class=\"headerlink\" title=\"缺点:\"></a>缺点:</h3><ul>\n<li>需要一些配置</li>\n<li>性能差,但这并不是主要的障碍</li>\n</ul>\n<h2 id=\"推荐\"><a href=\"#推荐\" class=\"headerlink\" title=\"推荐\"></a>推荐</h2><p>一个好的校验工具是捕捉问题非常重要的一步,但是它只能检测出它的规则许可范围之内的错误。对于更多简单明了的bug的捕捉,我建议使用单元测试,Code reviews也是也是不错的方式。</p>\n","site":{"data":{}},"excerpt":"","more":"<p><img src=\"http://img.mp.sohu.com/upload/20170727/7be6fe0dbc944f6c8bc36f8a3b28ba87.png\" alt=\"image\"></p>\n<p>JavaScript代码校验工具能够让你在写代码时避免一些低级的错误。尽管我有很多年的开发经验,我仍然会犯一些语法错误并且忘记处理我的错误。一个好的校验工具或者格式化工具,可以让我避免这些错误,以免浪费我的时间。一个好的校验工具还能确保一个项目保持一个固定的代码风格。</p>\n<p>有很多关于JavaScript的校验工具,你怎样选择其中的某一个呢?让我们一起来看看它们有什么样的特性以及优缺点。接下来我要介绍四种常用的选择:JSLint,JSHint,JSCS和ESLint。</p>\n<h2 id=\"Overview\"><a href=\"#Overview\" class=\"headerlink\" title=\"Overview\"></a>Overview</h2><p>这四个工具的基本用法都是类似的,它们定义了一套规则用来解析和报告js文件里面的问题。它们都可以通过npm来进行安装。可以通过命令行来调用它们,给命令行传递文件参数,也可以作为grunt这一类工具的插件被使用,或者可以集成到编辑器中。它们都支持使用注释作为配置。</p>\n<p>以上就是它们所有的相似之处了,每一个工具都有优缺点,只是有些工具相比于其它工具更加有优势。</p>\n<h2 id=\"JSLint\"><a href=\"#JSLint\" class=\"headerlink\" title=\"JSLint\"></a>JSLint</h2><p>JSLint是这四种校验工具中最为古老的。Douglas Crockford(译注:《JavaScript 语言精粹》的作者)在2002年创造了它,它是强制使用的,为了保留它所认为的JavaScript这门语言的精华部分。如果你认同他的观点,对你而言,JSLint将会是一个好的工具。安装完成马上即可使用。</p>\n<p>JSLint的缺点是它是不可以进行配置和扩展的。你不能禁用它的某些特性,并且缺乏文档。它的官网并没有什么用处,例如,它缺少如果将这个工具整合到你的编辑器的任何信息。</p>\n<h3 id=\"优点:\"><a href=\"#优点:\" class=\"headerlink\" title=\"优点:\"></a>优点:</h3><ul>\n<li>配置规则都已经定好了,安装即可使用(如果你同意这些强制的规则的话)</li>\n</ul>\n<h3 id=\"缺点:\"><a href=\"#缺点:\" class=\"headerlink\" title=\"缺点:\"></a>缺点:</h3><ul>\n<li>JSLint没有可配置文件,你无法对它的规则进行更改</li>\n<li>配置规则的数量有限,有些规则无法禁用</li>\n<li>不支持自定义规则</li>\n<li>缺少文档</li>\n<li>很难定位到哪条规则导致了错误</li>\n</ul>\n<h2 id=\"JSCSC\"><a href=\"#JSCSC\" class=\"headerlink\" title=\"JSCSC\"></a>JSCSC</h2><p>JSCS和以上两个都是不同的,如果不给它一个配置文件或者使用一套预设的规则,它将什么也不做不了,不过你可以从别的网站下载配置文件,所以这并不是什么大问题,并且它有很多的预设规则,比如说jQuery的代码风格的预设规则以及Google的代码风格的预设规则。</p>\n<p>它有超过90种不同的规则,并且你可以通过插件创造自定义规则。JSCS也支持自定义输出报告,这使得其更容易与需要其以特定格式输入的工具集成。</p>\n<p>JSCS是一个代码风格检查器,这意味着它只捕获与代码格式相关的问题,而不包含潜在的错误。因此,它比其他工具的灵活性更低,但是如果您需要强制执行特定的编码风格,那么JSCS就可以做的很好。</p>\n<h3 id=\"优点:-1\"><a href=\"#优点:-1\" class=\"headerlink\" title=\"优点:\"></a>优点:</h3><ul>\n<li>支持自定义输出报告,可以使其更容易和其它工具进行集成</li>\n<li>如果您遵循现有的可用编码风格之一,预设和现成的配置文件可以轻松设置</li>\n<li>在报告中,有一个标志包含在规则名之中,所以很容易找出是哪条规则导致了错误</li>\n<li>可以利用自定义的插件进行拓展</li>\n</ul>\n<h3 id=\"缺点:-1\"><a href=\"#缺点:-1\" class=\"headerlink\" title=\"缺点:\"></a>缺点:</h3><ul>\n<li>只检测到代码风格的违规,不检测潜在的错误,比如说未使用的变量或者变量的全局污染等</li>\n<li>四个工具中性能最差的,但是这并不是一个典型用途的问题</li>\n</ul>\n<h2 id=\"ESLint\"><a href=\"#ESLint\" class=\"headerlink\" title=\"ESLint\"></a>ESLint</h2><p>ESLint是这四个工具中最新的,它被设计为易于拓展的,具有大量的自定义规则,并且很容易通过插件的形式来安装。它输出简洁的报告,但是默认包含规则的名称,因此你始终知道是那条规则导致了错误的信息。</p>\n<p>ESLint的文档多少有些混乱,规则的列表容易查找,并且按逻辑进行分类,但配置说明在某些地方有点混乱。然而,它提供了如何对编辑器进行集成,插件和示例的链接。</p>\n<h3 id=\"优点:-2\"><a href=\"#优点:-2\" class=\"headerlink\" title=\"优点:\"></a>优点:</h3><ul>\n<li>灵活:任何规则都可以切换使用,并且有些规则有额外的配置可以使用</li>\n<li>可拓展性好,并且有很多可用的插件</li>\n<li>易于理解的输出报告</li>\n<li>包含一些其它工具所没有的规则,使得ESLint更容易检测出代码中潜在的错误</li>\n<li>对ES6的支持性最好,是唯一支持JSX的工具</li>\n<li>支持自定义输出报告</li>\n</ul>\n<h3 id=\"缺点:-2\"><a href=\"#缺点:-2\" class=\"headerlink\" title=\"缺点:\"></a>缺点:</h3><ul>\n<li>需要一些配置</li>\n<li>性能差,但这并不是主要的障碍</li>\n</ul>\n<h2 id=\"推荐\"><a href=\"#推荐\" class=\"headerlink\" title=\"推荐\"></a>推荐</h2><p>一个好的校验工具是捕捉问题非常重要的一步,但是它只能检测出它的规则许可范围之内的错误。对于更多简单明了的bug的捕捉,我建议使用单元测试,Code reviews也是也是不错的方式。</p>\n"}],"PostAsset":[],"PostCategory":[{"post_id":"clff5n8si00015ms6hlb2fvd9","category_id":"clff5n8sl00045ms681qefuz5","_id":"clff5n8sn00095ms6gfhf48ls"},{"post_id":"clff5n8sk00035ms60c0sgj1e","category_id":"clff5n8sn00075ms6hy799lt0","_id":"clff5n8so000c5ms6dn290fa0"},{"post_id":"clff5n8sm00065ms6enou65hf","category_id":"clff5n8sn000a5ms6df44azpx","_id":"clff5n8so000g5ms6hwu52vay"}],"PostTag":[{"post_id":"clff5n8si00015ms6hlb2fvd9","tag_id":"clff5n8sm00055ms619jif4b3","_id":"clff5n8so000e5ms6cjpa5aaq"},{"post_id":"clff5n8si00015ms6hlb2fvd9","tag_id":"clff5n8sn00085ms6hwjs2tsr","_id":"clff5n8so000f5ms6duxubvyu"},{"post_id":"clff5n8si00015ms6hlb2fvd9","tag_id":"clff5n8sn000b5ms60tq8fqag","_id":"clff5n8so000i5ms67rf61ebb"},{"post_id":"clff5n8sk00035ms60c0sgj1e","tag_id":"clff5n8so000d5ms66ggqhzu0","_id":"clff5n8so000j5ms6d54o9rfe"},{"post_id":"clff5n8sm00065ms6enou65hf","tag_id":"clff5n8so000h5ms6hzyl29yk","_id":"clff5n8so000l5ms60a34h7mq"},{"post_id":"clff5n8sm00065ms6enou65hf","tag_id":"clff5n8so000k5ms61bf54t1t","_id":"clff5n8so000m5ms67jcy0844"}],"Tag":[{"name":"Webstrorm","_id":"clff5n8sm00055ms619jif4b3"},{"name":"快捷键","_id":"clff5n8sn00085ms6hwjs2tsr"},{"name":"IDE","_id":"clff5n8sn000b5ms60tq8fqag"},{"name":"python","_id":"clff5n8so000d5ms66ggqhzu0"},{"name":"JavaScript","_id":"clff5n8so000h5ms6hzyl29yk"},{"name":"jsLint","_id":"clff5n8so000k5ms61bf54t1t"}]}}