{"pageContext":{"index":28,"total":362,"name":"2019-11-17","items":[{"node":{"frontmatter":{"title":" Netflix Bless - ssh密钥管理工具","publish":true,"cover":"https://miro.medium.com/max/1518/1*tQAIsR2YU7OezeQUr_Z8MQ.png","showCover":true,"date":"2019-10-11","category":"devops","url":"https://github.com/Netflix/bless","author":"Kshitij","translator":"","tags":["ssh"],"priority":2},"html":"<p>为安全起见，此服务需要运行在单独的AWS lambada服务上。</p>"}},{"node":{"frontmatter":{"title":"2019前端工具使用调查","publish":true,"cover":"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q4.jpg","showCover":true,"date":"2019-11-14","category":"frontend2","url":"https://ashleynolan.co.uk/blog/frontend-tooling-survey-2019-results","author":"Ashley Nolan 编辑 Ka","translator":"","tags":["survey"],"priority":2},"html":"<h2 id=\"css-处理器-sass大幅度领先\"><a href=\"#css-%E5%A4%84%E7%90%86%E5%99%A8-sass%E5%A4%A7%E5%B9%85%E5%BA%A6%E9%A2%86%E5%85%88\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>CSS 处理器 Sass大幅度领先</h2>\n<p>其满意度也是居首\n<img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q4.jpg\"></p>\n<h2 id=\"css-框架，bootstrap大幅度领先（相比去年仍减少7）\"><a href=\"#css-%E6%A1%86%E6%9E%B6%EF%BC%8Cbootstrap%E5%A4%A7%E5%B9%85%E5%BA%A6%E9%A2%86%E5%85%88%EF%BC%88%E7%9B%B8%E6%AF%94%E5%8E%BB%E5%B9%B4%E4%BB%8D%E5%87%8F%E5%B0%917%EF%BC%89\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>CSS 框架，bootstrap大幅度领先（相比去年仍减少7%）</h2>\n<p><img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q5.jpg\"></p>\n<blockquote>\n<p>老编：Materilize居然比bulma还少。</p>\n</blockquote>\n<h2 id=\"css-工具-autoprefixer居首\"><a href=\"#css-%E5%B7%A5%E5%85%B7-autoprefixer%E5%B1%85%E9%A6%96\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>CSS 工具 Autoprefixer居首</h2>\n<p><img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q8.jpg\"></p>\n<h2 id=\"脚本内csscss-in-js-大部分没有使用，使用的主要是styled-components\"><a href=\"#%E8%84%9A%E6%9C%AC%E5%86%85csscss-in-js-%E5%A4%A7%E9%83%A8%E5%88%86%E6%B2%A1%E6%9C%89%E4%BD%BF%E7%94%A8%EF%BC%8C%E4%BD%BF%E7%94%A8%E7%9A%84%E4%B8%BB%E8%A6%81%E6%98%AFstyled-components\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>脚本内CSS(CSS-in-JS) 大部分没有使用，使用的主要是Styled Components</h2>\n<p><img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q11.jpg\"></p>\n<h2 id=\"css-特性，主要用的是flexbox\"><a href=\"#css-%E7%89%B9%E6%80%A7%EF%BC%8C%E4%B8%BB%E8%A6%81%E7%94%A8%E7%9A%84%E6%98%AFflexbox\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>CSS 特性，主要用的是flexbox</h2>\n<p><img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q12.jpg\"></p>\n<h2 id=\"脚本工具主要使用的是npm再其次是gulp\"><a href=\"#%E8%84%9A%E6%9C%AC%E5%B7%A5%E5%85%B7%E4%B8%BB%E8%A6%81%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AFnpm%E5%86%8D%E5%85%B6%E6%AC%A1%E6%98%AFgulp\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>脚本工具主要使用的是NPM,再其次是gulp</h2>\n<p><img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q14.jpg\"></p>\n<h2 id=\"js框架，jquery和react依然遥遥领先vue超越angular2\"><a href=\"#js%E6%A1%86%E6%9E%B6%EF%BC%8Cjquery%E5%92%8Creact%E4%BE%9D%E7%84%B6%E9%81%A5%E9%81%A5%E9%A2%86%E5%85%88vue%E8%B6%85%E8%B6%8Aangular2\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>JS框架，jQuery和react依然遥遥领先,Vue超越Angular2</h2>\n<p><img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q15.jpg\">\n<img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q16.jpg\">\n<img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q17.jpg\"></p>\n<h2 id=\"js打包工具-webpack居首\"><a href=\"#js%E6%89%93%E5%8C%85%E5%B7%A5%E5%85%B7-webpack%E5%B1%85%E9%A6%96\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>JS打包工具, webpack居首</h2>\n<p><img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q18.jpg\"></p>\n<h2 id=\"js扩展语言typescript居首\"><a href=\"#js%E6%89%A9%E5%B1%95%E8%AF%AD%E8%A8%80typescript%E5%B1%85%E9%A6%96\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>JS扩展语言typescript居首</h2>\n<p><img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q21.jpg\"></p>\n<h2 id=\"js测试-jest第一mocha第二\"><a href=\"#js%E6%B5%8B%E8%AF%95-jest%E7%AC%AC%E4%B8%80mocha%E7%AC%AC%E4%BA%8C\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>JS测试 jest第一,mocha第二</h2>\n<p><img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q23.jpg\"></p>\n<h2 id=\"js性能测试lighthouse居首\"><a href=\"#js%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95lighthouse%E5%B1%85%E9%A6%96\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>JS性能测试,Lighthouse居首</h2>\n<p><img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q24.jpg\"></p>\n<h2 id=\"可达性测试，大部分还未使用\"><a href=\"#%E5%8F%AF%E8%BE%BE%E6%80%A7%E6%B5%8B%E8%AF%95%EF%BC%8C%E5%A4%A7%E9%83%A8%E5%88%86%E8%BF%98%E6%9C%AA%E4%BD%BF%E7%94%A8\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>可达性测试，大部分还未使用</h2>\n<p><img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q25.jpg\"></p>\n<h2 id=\"包管理npm居首，yarn第二\"><a href=\"#%E5%8C%85%E7%AE%A1%E7%90%86npm%E5%B1%85%E9%A6%96%EF%BC%8Cyarn%E7%AC%AC%E4%BA%8C\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>包管理npm居首，yarn第二</h2>\n<p><img src=\"https://ashleynolan.co.uk/assets/img/blog/tooling-survey/2019/q26.jpg\"></p>"}},{"node":{"frontmatter":{"title":"Chrome手机全屏地址栏问题","publish":true,"cover":"https://res.cloudinary.com/css-tricks/image/upload/c_scale,w_960,f_auto,q_auto/v1572036939/100vh_problem_uoenhn.png","showCover":true,"date":"2019-11-14","category":"frontend","url":"https://css-tricks.com/some-things-you-oughta-know-when-working-with-viewport-units/","author":"Chris Coyier","translator":"","tags":["chrome"],"priority":1},"html":"<p>解决方案:</p>\n<div class=\"gatsby-highlight\" data-language=\"css\"><pre class=\"language-css\"><code class=\"language-css\"><span class=\"token selector\">body</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">min-height</span><span class=\"token punctuation\">:</span> 100vh<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">min-height</span><span class=\"token punctuation\">:</span> -webkit-fill-available<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"BSON和ObjectId","publish":true,"cover":"https://webassets.mongodb.com/_com_assets/cms/objectId-r9f66o4g4u.png","showCover":true,"date":"2019-11-15","category":"database","url":"https://www.mongodb.com/blog/post/quick-start-bson-data-types--objectid","author":"Ken W. Alger 编辑 Ka","translator":"","tags":["mongodb"],"priority":2},"html":"<ul>\n<li><a href=\"http://bsonspec.org/\">BSON(二进制JSON)</a>的字段是排序的</li>\n<li>BSON有更好的性能</li>\n<li>ObjectId是12字节的16进制值</li>\n<li>ObjectId\"可以认为\"是全局唯一的</li>\n</ul>"}},{"node":{"frontmatter":{"title":"Discord使用React Native在ios上的调优过程","publish":true,"cover":"https://miro.medium.com/max/500/1*aGWZttnhsIgBJYh5WCsxZQ.gif","showCover":true,"date":"2019-11-14","category":"frontend","url":"https://blog.kazge.com/front-end/2019/11/13/zh-tune-performance-of-discord-react-native-app/","author":"Miguel Gaeta 编辑 Ka","translator":"","tags":["react native"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"Figma在多用户操作上的实践","publish":true,"cover":"https://images.ctfassets.net/1khq4uysbvty/49Nk3Z5SwJd645h9Z3Gj6t/8daae07fd486b1863111a545078476cf/multiplayer_prototype.png?w=736","showCover":true,"date":"2019-10-11","category":"algorithm","url":"https://www.figma.com/blog/how-figmas-multiplayer-technology-works/","author":"Evan Wallace","translator":"","tags":["multiplayer"],"priority":2},"html":"<p><a href=\"https://www.figma.com/\">figma</a>是一个多用户实时协同设计的工具。\nredo,undo的操作示意图</p>\n<video id=\"video\" width=\"100%\" controls=\"\" preload=\"true\" poster=\"\">\n<source id=\"mp4\" src=\"https://videos.ctfassets.net/1khq4uysbvty/3P0GM6n1Xl96fhA0DAknZu/899ddaa1ef70d55b1e197aee1b73f17d/multiplayer_undoredo.mp4\" />\n</video>"}},{"node":{"frontmatter":{"title":"ajv 高性能json schema验证","publish":true,"cover":"https://camo.githubusercontent.com/a5a018f4bb73429787af199c0335f5a472f2ca8c/68747470733a2f2f63686172742e676f6f676c65617069732e636f6d2f63686172743f636878743d782c79266368743d626873266368636f3d3736413446422663686c733d322e3026636862683d33322c342c31266368733d36303078343136266368786c3d2d313a253743646a76253743616a762537436a736f6e2d736368656d612d76616c696461746f722d67656e657261746f722537436a73656e25374369732d6d792d6a736f6e2d76616c69642537437468656d69732537437a2d736368656d612537436a73636b253743736b65656d61732537436a736f6e2d736368656d612d6c696272617279253743747634266368643d743a3130302c39382c37322e312c36362e382c35302e312c31352e312c362e312c332e382c312e322c302e372c302e32","showCover":true,"date":"2019-11-15","category":"nodejs","url":"https://github.com/epoberezkin/ajv","author":"Evgeny Poberezkin","translator":"","tags":["json"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"basic-ftp 支持FTPS的简单易用的ftp客户端","publish":true,"cover":"","showCover":true,"date":"2019-11-15","category":"nodejs","url":"https://github.com/patrickjuchli/basic-ftp","author":"Patrick Juchli","translator":"","tags":["ftp"],"priority":1},"html":"<blockquote>\n<p>ftps不同于sftp，此工具不支持sftp。</p>\n</blockquote>"}},{"node":{"frontmatter":{"title":"NodeBB 实时的开源论坛系统","publish":true,"cover":"https://camo.githubusercontent.com/915222375e480ca765aee3d11b8576c8a53138f8/687474703a2f2f692e696d6775722e636f6d2f48774e455847752e706e67","showCover":true,"date":"2019-11-15","category":"nodejs","url":"https://github.com/NodeBB/NodeBB","author":"NodeBB 编辑 Ka","translator":"","tags":["BBS"],"priority":2},"html":""}},{"node":{"frontmatter":{"title":"chrome将为速度慢的站点标记红条","publish":true,"cover":"https://lh6.googleusercontent.com/qq2pRL2qiXRiFASwvuqnYxHfcXdt69i8aVUhuCGQSeoAyH_kJ6kIT44ExZuY65UXAOMuVDl1j2GifEeRrIg79IUlefdKhyBbdNkcvW_enZ8CBYtRspzkO2kvl1VMowvQJJ-J_Sfd","showCover":true,"date":"2019-11-14","category":"frontend","url":"https://blog.chromium.org/2019/11/moving-towards-faster-web.html","author":"Google","translator":"","tags":["chrome"],"priority":1},"html":"<p>快的网站显示绿条，慢的网站显示红条。</p>"}},{"node":{"frontmatter":{"title":"console的常用方法","publish":true,"cover":"","showCover":true,"date":"2019-11-16","category":"frontend","url":"https://levelup.gitconnected.com/console-cheat-sheet-for-javascript-developers-21f0c49604d4","author":"Javascript Jeep","translator":"","tags":["console"],"priority":1},"html":"<h2 id=\"consoleassertcondition-failure-message\"><a href=\"#consoleassertcondition-failure-message\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>console.assert(condition, failure message)</h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> a <span class=\"token operator\">=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span> \nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>a <span class=\"token operator\">===</span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"This will not be printed\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">assert</span><span class=\"token punctuation\">(</span>a <span class=\"token operator\">!=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"this will be printed\"</span><span class=\"token punctuation\">,</span> <span class=\"token template-string\"><span class=\"token string\">`a = </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>a<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">`</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// Assertion failed: this will be printed a = 10</span></code></pre></div>\n<h2 id=\"consolecount-consolecountreset\"><a href=\"#consolecount-consolecountreset\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>console.count() console.countReset()</h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">console<span class=\"token punctuation\">.</span><span class=\"token function\">count</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"time\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> time<span class=\"token punctuation\">:</span> <span class=\"token number\">1</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">count</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"time\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> time<span class=\"token punctuation\">:</span> <span class=\"token number\">2</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">count</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"time\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> time<span class=\"token punctuation\">:</span> <span class=\"token number\">3</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">countReset</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">count</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"time\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> time<span class=\"token punctuation\">:</span> <span class=\"token number\">1</span></code></pre></div>\n<h2 id=\"consoledir\"><a href=\"#consoledir\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>console.dir()</h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> obj <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n   <span class=\"token string\">\"phone\"</span> <span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>\n    mobile <span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>\n            num1 <span class=\"token punctuation\">:</span> <span class=\"token number\">123</span><span class=\"token punctuation\">,</span>\n            num2 <span class=\"token punctuation\">:</span> <span class=\"token number\">456</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    landline <span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>\n            num1 <span class=\"token punctuation\">:</span> <span class=\"token number\">789</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"name\"</span> <span class=\"token punctuation\">:</span> <span class=\"token string\">\"Javascript Jeep\"</span>\n<span class=\"token punctuation\">}</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">dir</span><span class=\"token punctuation\">(</span>obj<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h2 id=\"consolegroup-consolegroupend\"><a href=\"#consolegroup-consolegroupend\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>console.group() console.groupEnd()</h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">console<span class=\"token punctuation\">.</span><span class=\"token function\">group</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"days\"</span><span class=\"token punctuation\">)</span>\n   console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Mon\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n   console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Tue\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n   console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Wed\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n   console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Thu\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n   console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Fri\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n   console<span class=\"token punctuation\">.</span><span class=\"token function\">group</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"holidays\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Sat\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Sun\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n   console<span class=\"token punctuation\">.</span><span class=\"token function\">groupEnd</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"holidays\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">groupEnd</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"days\"</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p><img src=\"https://miro.medium.com/max/1580/1*BU1zhWiNuWZ7iss1ZICjvA.png\"></p>\n<h2 id=\"consoletableobj\"><a href=\"#consoletableobj\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>console.table(obj)</h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> user <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n    name <span class=\"token punctuation\">:</span> <span class=\"token string\">\"Ram\"</span><span class=\"token punctuation\">,</span>\n    age <span class=\"token punctuation\">:</span> <span class=\"token number\">28</span>\n    \n<span class=\"token punctuation\">}</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">table</span><span class=\"token punctuation\">(</span>user<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p><img src=\"https://miro.medium.com/max/1896/1*52h4Mbr3eB0jygmAVaV55Q.png\"></p>"}},{"node":{"frontmatter":{"title":"fabric SVG canvas互转工具","publish":true,"cover":"https://github.com/kangax/fabric.js/raw/master/lib/screenshot.png","showCover":true,"date":"2019-11-16","category":"frontend-2","url":"https://github.com/fabricjs/fabric.js","author":"Fabric.js","translator":"","tags":["canvas"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"html-react-parser html转换为React组件","publish":true,"cover":"","showCover":true,"date":"2019-11-14","category":"frontend","url":"https://github.com/remarkablemark/html-react-parser","author":"Mark","translator":"","tags":["react"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"npx linkinator 页面资源链接检测工具","publish":true,"cover":"","showCover":true,"date":"2019-11-14","category":"algorithm","url":"https://github.com/JustinBeckwith/linkinator","author":"Justin Beckwith","translator":"","tags":["link"],"priority":1},"html":"<p>使用\n<code class=\"language-text\">npx linkinator https://www.zhouexin.com/</code>\n输出结果</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">🏊‍♂️ crawling https://www.zhouexin.com/\n<span class=\"token punctuation\">[</span>200<span class=\"token punctuation\">]</span> https://www.zhouexin.com/\n  <span class=\"token punctuation\">[</span>200<span class=\"token punctuation\">]</span> https://www.zhouexin.com/sitemap.xml\n  <span class=\"token punctuation\">[</span>200<span class=\"token punctuation\">]</span> https://www.zhouexin.com/webpack-runtime-8a67b4a972769e9e6d41.js\n🤖 Successfully scanned 8 links <span class=\"token keyword\">in</span> 3.456 seconds.</code></pre></div>"}},{"node":{"frontmatter":{"title":"progress-estimator 控制台基于预估的进度条","publish":true,"cover":"https://user-images.githubusercontent.com/29597/48986949-474e2400-f0cf-11e8-86d7-d201f8ad8eca.gif","showCover":true,"date":"2019-11-16","category":"nodejs","url":"https://github.com/bvaughn/progress-estimator","author":"Brian Vaughn","translator":"","tags":["terminal"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"simple-crypto-js 简单易用的加密工具","publish":true,"cover":"","showCover":true,"date":"2019-11-15","category":"nodejs","url":"https://github.com/danang-id/simple-crypto-js","author":"Danang Galuh Tegar P","translator":"","tags":["crypt"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"react-adaptive-hooks 用户设备硬件状态(网络，CPU，内存)hook","publish":true,"cover":"","showCover":true,"date":"2019-11-14","category":"frontend","url":"https://github.com/GoogleChromeLabs/react-adaptive-hooks","author":"Google Chrome Labs","translator":"","tags":["react"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"字节码联盟成立，WebAssembly 生态将完善网络安全性","publish":true,"cover":"https://oscimg.oschina.net/oscnet/91c6f47286ceeb99ee80af4e56ef05768ab.jpg","showCover":true,"date":"2019-11-16","category":"frontend","url":"https://www.oschina.net/news/111316/announcing-the-bytecode-alliance","author":"oschina","translator":"","tags":["WebAssembly"],"priority":1},"html":"<p>近日 Mozilla、Fastly、Intel 与 Red Hat 宣布成立联合组织 Bytecode Alliance（字节码联盟），该联盟旨在通过协作实施标准和提出新标准，以完善 WebAssembly 在浏览器之外的生态。</p>"}},{"node":{"frontmatter":{"title":"宠物伙伴全站源码","publish":true,"cover":"","showCover":true,"date":"2019-11-14","category":"frontend","url":"https://github.com/wendelfreitas/animavita","author":"Wendel Freitas","translator":"","tags":["react native"],"priority":1},"html":"<p>技术栈：<br>\nFacebook Login<br>\nReact Native<br>\nStyled Components<br>\nReactotron<br>\nEslint<br>\nRedux<br>\nMongoDB\nFormik + Yup<br>\nApollo<br>\nGraphQL\nKraken<br>\nOneSignal<br>\nAWS\nRedux-Persist   </p>"}},{"node":{"frontmatter":{"title":"微软Windows团队和Office团队都倾向于Ract Native而不是他们自己的Xamarin","publish":true,"cover":"https://regmedia.co.uk/2019/11/07/memory.jpg?x=648&y=342&infer_y=1","showCover":true,"date":"2019-11-14","category":"frontend","url":"https://blog.kazge.com/front-end/2019/11/13/zh-microsoft-reactive-native-for-cross-platform/","author":"Ka","translator":"","tags":["react native"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"游戏-飞翔的鸡蛋(Aero Egg)","publish":true,"cover":"https://blog.kazge.com/assets/volitantegg-show.gif","showCover":true,"date":"2019-06-12","category":"game","url":"https://blog.kazge.com/show/volitantegg/%E9%A3%9E%E7%BF%94%E7%9A%84%E9%B8%A1%E8%9B%8B.apk","author":"广告","translator":"","tags":["ads"],"priority":1},"html":"<p><a href=\"https://itunes.apple.com/us/app/volitant-egg-ads-version/id1247264387?mt=8\">APP Store(非国内账户可下载)</a>\n<a href=\"https://blog.kazge.com/show/volitantegg/%E9%A3%9E%E7%BF%94%E7%9A%84%E9%B8%A1%E8%9B%8B.apk\">安卓 - 中文</a></p>"}},{"node":{"frontmatter":{"title":"想让你的文章出现在这里？","publish":true,"cover":"","showCover":true,"date":"2019-07-08","category":"frontend","url":"mailto:editor@zhouexin.com?subject=投稿!","author":"投稿","translator":"","tags":["editor"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"苹果官方在macOS 10.15 Catalina中关闭了Dashboard","publish":true,"cover":"http://5b0988e595225.cdn.sohucs.com/images/20190605/c1080cc765ad46ce84841d8fbf246352.jpeg","showCover":true,"date":"2019-10-11","category":"os","url":"http://www.sohu.com/a/318648462_394375","author":"酷玩儿","translator":"","tags":["mac"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"教程-创建你自己的react","publish":true,"cover":"","showCover":true,"date":"2019-11-16","category":"frontend","url":"https://pomb.us/build-your-own-react/","author":"Rodrigo Pombo","translator":"","tags":["BBS"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"趣讲oauth和openid","publish":true,"cover":"https://d33wubrfki0l68.cloudfront.net/e65239bdbd8b982d8eda9f1da9f486efdb11af1d/1cc5c/assets-jekyll/blog/illustrated-guide-to-oauth-and-oidc/tpotd-authorization-code-flow-f959373be5520c3f3a78fbd0a340c5ea67e75cf27979476cf66670914de5e6ba.jpg","showCover":true,"date":"2019-10-11","category":"other","url":"https://developer.okta.com/blog/2019/10/21/illustrated-guide-to-oauth-and-oidc","author":"David Neal","translator":"","tags":["oauth"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"页面预加载工具","publish":true,"cover":"","showCover":true,"date":"2019-11-14","category":"frontend","url":"https://github.com/instantpage/instant.page","author":"instant.page","translator":"","tags":["performance"],"priority":1},"html":"<p>在页面上添加资源</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>//instant.page/3.0.0<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>module<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">defer</span> <span class=\"token attr-name\">integrity</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>sha384-OeDn4XE77tdHo8pGtE1apMPmAipjoxUQ++eeJa6EtJCfHlvijigWiJpD7VDPWXV1<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script language-javascript\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>当用户鼠标在链接之上时，即触发预加载链接指向的页面。</p>"}}]}}