{"pageContext":{"index":73,"total":362,"name":"2020-09-27","items":[{"node":{"frontmatter":{"title":"blacklight - 实时扫描网站隐私监控工具","publish":true,"cover":"","showCover":true,"date":"2020-09-27","category":"web","url":"https://themarkup.org/blacklight/","author":"Surya Mattu","translator":"","tags":["privacy"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"GitHub CLI 1.0发布","publish":true,"cover":"https://github.blog/wp-content/uploads/2020/09/GitHubCLI_SocialCard_VersionNumber_NoSubLine_v2.png?w=1200","showCover":true,"date":"2020-09-27","category":"devops","url":"https://github.blog/2020-09-17-github-cli-1-0-is-now-available/","author":"Amanda Pinsker","translator":"","tags":["github"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"big.js - 高精度decimal类型库","publish":true,"cover":"","showCover":true,"date":"2020-09-27","category":"javascript","url":"https://github.com/MikeMcl/big.js","author":"Michael M","translator":"","tags":["arithmetic"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"fflate - 高性能压缩，解压缩工具","publish":true,"cover":"","showCover":true,"date":"2020-09-27","category":"javascript","url":"https://github.com/101arrowz/fflate","author":"101arrowz","translator":"","tags":["compression"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"React 17带来JSX新的转换(成javascript)系统","publish":true,"cover":"","showCover":true,"date":"2020-09-27","category":"frontend","url":"https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html","author":"Luna Ruan","translator":"","tags":["react"],"priority":1},"html":"<ul>\n<li>旧的仍然支持</li>\n<li>\n<p>新的系统</p>\n<ul>\n<li>不再需要引入 React.</li>\n<li>可能会减小生成的 bundle 大小</li>\n<li>Create React App v4 会支持</li>\n<li>Next.js v9.5.3+ 支持</li>\n<li>Gatsby v2.24.5+ 支持</li>\n</ul>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"nodejs v15默认的未处理异常将从警告变为throw","publish":true,"cover":"","showCover":true,"date":"2020-09-27","category":"nodejs","url":"https://twitter.com/cjihrig/status/1305572693798981646","author":"Colin Ihrig","translator":"","tags":["exception"],"priority":1},"html":"<p><a href=\"https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode\">参见</a></p>"}},{"node":{"frontmatter":{"title":"prism-react-renderer","publish":true,"cover":"https://github.com/FormidableLabs/prism-react-renderer/raw/master/.readme/basic.png","showCover":true,"date":"2020-09-27","category":"frontend","url":"https://github.com/FormidableLabs/prism-react-renderer","author":"Formidable","translator":"","tags":["react"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"paint-with-ml 机器学习作画","publish":true,"cover":"https://camo.githubusercontent.com/fee489fd0a2031dbffb992af0d5e86e94d6cffa6/68747470733a2f2f692e696d6775722e636f6d2f517a4e464156362e706e67","showCover":true,"date":"2020-09-27","category":"AI","url":"https://github.com/spellml/paint-with-ml","author":"Spell","translator":"","tags":["github"],"priority":1},"html":"<p><a href=\"http://paintwith.spell.ml/\">在线 Demo</a></p>"}},{"node":{"frontmatter":{"title":"react-easy-edit - 点击可编辑组件","publish":true,"cover":"https://camo.githubusercontent.com/db5269d8f307cae01b269caac77180f0f4c5cd0a/68747470733a2f2f692e696d6775722e636f6d2f767771637165442e676966","showCover":true,"date":"2020-09-27","category":"frontend","url":"https://github.com/giorgosart/react-easy-edit","author":"George Artemiou","translator":"","tags":["react"],"priority":2},"html":""}},{"node":{"frontmatter":{"title":"reactivue - react里面用vue的compositon api","publish":true,"cover":"","showCover":true,"date":"2020-09-27","category":"frontend","url":"https://github.com/antfu/reactivue","author":"Anthony Fu","translator":"","tags":["github"],"priority":1},"html":"<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">'React'</span>\n<span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> defineComponent<span class=\"token punctuation\">,</span> ref<span class=\"token punctuation\">,</span> computed<span class=\"token punctuation\">,</span> onUnmounted <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'reactivue'</span>\n\n<span class=\"token keyword\">interface</span> <span class=\"token class-name\">Props</span> <span class=\"token punctuation\">{</span>\n  value<span class=\"token punctuation\">:</span> number\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">const</span> MyCounter <span class=\"token operator\">=</span> <span class=\"token function\">defineComponent</span><span class=\"token punctuation\">(</span>\n  <span class=\"token comment\">// setup function in Vue</span>\n  <span class=\"token punctuation\">(</span>props<span class=\"token punctuation\">:</span> Props<span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">const</span> counter <span class=\"token operator\">=</span> <span class=\"token function\">ref</span><span class=\"token punctuation\">(</span>props<span class=\"token punctuation\">.</span>value<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">const</span> doubled <span class=\"token operator\">=</span> <span class=\"token function\">computed</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> counter<span class=\"token punctuation\">.</span>value <span class=\"token operator\">*</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">const</span> <span class=\"token function-variable function\">inc</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> counter<span class=\"token punctuation\">.</span>value <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n\n    <span class=\"token function\">onUnmounted</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Goodbye World'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span> counter<span class=\"token punctuation\">,</span> doubled<span class=\"token punctuation\">,</span> inc <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token comment\">// functional component in React</span>\n  <span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> counter<span class=\"token punctuation\">,</span> doubled<span class=\"token punctuation\">,</span> inc <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// you can still use other React hooks</span>\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n      <span class=\"token operator\">&lt;</span>div<span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>div<span class=\"token operator\">></span><span class=\"token punctuation\">{</span>counter<span class=\"token punctuation\">}</span> x <span class=\"token number\">2</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>doubled<span class=\"token punctuation\">}</span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>div<span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>button onClick<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>inc<span class=\"token punctuation\">}</span><span class=\"token operator\">></span>Increase<span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>button<span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>div<span class=\"token operator\">></span>\n    <span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\">// use it as you normally would</span>\n<span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&lt;</span>MyCounter value<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span><span class=\"token number\">10</span><span class=\"token punctuation\">}</span><span class=\"token operator\">></span><span class=\"token punctuation\">,</span> el<span class=\"token punctuation\">)</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"react-d3-speedometer - 基于d3实现的仪表盘","publish":true,"cover":"https://raw.githubusercontent.com/palerdot/react-d3-speedometer/master/speedo.gif","showCover":true,"date":"2020-09-27","category":"frontend","url":"https://github.com/palerdot/react-d3-speedometer","author":"Arun Kumar","translator":"","tags":["react"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"react文件夹结构指导方针","publish":true,"cover":"","showCover":true,"date":"2020-09-27","category":"frontend","url":"https://maxrozen.com/guidelines-improve-react-app-folder-structure/","author":"Max Rozen","translator":"","tags":["react"],"priority":1},"html":"<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">src/\n|-- components/\n|   |-- Avatar/\n|   |   |-- Avatar.ts\n|   |   |-- Avatar.test.ts\n|   |-- Button/\n|   |   |-- Button.ts\n|   |   |-- Button.test.ts\n|   |-- TextField/\n|   |   |-- TextField.ts\n|   |   |-- TextField.test.ts\n|-- contexts/\n|   |-- UserContext/\n|   |   |-- UserContext.ts\n|-- hooks/\n|   |-- useMediaQuery/\n|   |   |-- useMediaQuery.ts\n|-- pages/\n|   |-- UserProfile/\n|   |   |-- Components/\n|   |   |   |-- SomeUserProfileComponent/\n|   |   |   |   |-- SomeUserProfileComponent.ts\n|   |   |   |   |-- SomeUserProfileComponent.test.ts\n|   |   |-- UserProfile.ts\n|   |   |-- UserProfile.test.ts\n|   |-- index.ts\n|-- utils/\n|   |-- some-common-util/\n|   |   |-- index.ts/\n|   |   |-- index.test.ts\n|-- App.ts\n|-- AuthenticatedApp.ts\n|-- index.ts\n|-- UnauthenticatedApp.ts</code></pre></div>\n<ul>\n<li>组件和页面分开</li>\n<li>styled 组件就放在组件里</li>\n</ul>"}},{"node":{"frontmatter":{"title":"shoulders - 查看项目依赖包的已知问题","publish":true,"cover":"https://camo.githubusercontent.com/19f4acc48944f3b853b2283a925d364824e31221/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f6d6a7377656e73656e2f73686f756c6465727340353030643433343533336430626332393662613132653132636661383139633936346235626364392f6173736574732f64656d6f2e676966","showCover":true,"date":"2020-09-27","category":"nodejs","url":"https://github.com/mjswensen/shoulders","author":"Matt Swensen","translator":"","tags":["dependecy"],"priority":2},"html":""}},{"node":{"frontmatter":{"title":"ts-sql - typescript实现的支持SQL的内存数据库","publish":true,"cover":"","showCover":true,"date":"2020-09-21","category":"javascript","url":"https://github.com/codemix/ts-sql","author":"codemix","translator":"","tags":["typescript"],"priority":1},"html":"<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\"> ▄▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄▄▄▄▄               ▄▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄▄▄▄▄  ▄\n▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌             ▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░▌\n ▀▀▀▀█░█▀▀▀▀ ▐░█▀▀▀▀▀▀▀▀▀              ▐░█▀▀▀▀▀▀▀▀▀ ▐░█▀▀▀▀▀▀▀█░▌▐░▌\n     ▐░▌     ▐░▌                       ▐░▌          ▐░▌       ▐░▌▐░▌\n     ▐░▌     ▐░█▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄▄▄▄▄ ▐░█▄▄▄▄▄▄▄▄▄ ▐░▌       ▐░▌▐░▌\n     ▐░▌     ▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░▌       ▐░▌▐░▌\n     ▐░▌      ▀▀▀▀▀▀▀▀▀█░▌ ▀▀▀▀▀▀▀▀▀▀▀  ▀▀▀▀▀▀▀▀▀█░▌▐░█▄▄▄▄▄▄▄█░▌▐░▌\n     ▐░▌               ▐░▌                       ▐░▌▐░░░░░░░░░░░▌▐░▌\n     ▐░▌      ▄▄▄▄▄▄▄▄▄█░▌              ▄▄▄▄▄▄▄▄▄█░▌ ▀▀▀▀▀▀█░█▀▀ ▐░█▄▄▄▄▄▄▄▄▄\n     ▐░▌     ▐░░░░░░░░░░░▌             ▐░░░░░░░░░░░▌        ▐░▌  ▐░░░░░░░░░░░▌\n      ▀       ▀▀▀▀▀▀▀▀▀▀▀               ▀▀▀▀▀▀▀▀▀▀▀          ▀    ▀▀▀▀▀▀▀▀▀▀▀</code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"typescript\"><pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> Query <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">\"@codemix/ts-sql\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> db <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n  things<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token punctuation\">{</span> id<span class=\"token punctuation\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> name<span class=\"token punctuation\">:</span> <span class=\"token string\">\"a\"</span><span class=\"token punctuation\">,</span> active<span class=\"token punctuation\">:</span> <span class=\"token boolean\">true</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span> id<span class=\"token punctuation\">:</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> name<span class=\"token punctuation\">:</span> <span class=\"token string\">\"b\"</span><span class=\"token punctuation\">,</span> active<span class=\"token punctuation\">:</span> <span class=\"token boolean\">false</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span> id<span class=\"token punctuation\">:</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span> name<span class=\"token punctuation\">:</span> <span class=\"token string\">\"c\"</span><span class=\"token punctuation\">,</span> active<span class=\"token punctuation\">:</span> <span class=\"token boolean\">true</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span> <span class=\"token keyword\">as</span> <span class=\"token keyword\">const</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">type</span> ActiveThings <span class=\"token operator\">=</span> Query<span class=\"token operator\">&lt;</span>\n  <span class=\"token string\">\"SELECT id, name AS nom FROM things WHERE active = true\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token keyword\">typeof</span> db\n<span class=\"token operator\">></span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// ActiveThings is now equal to the following type:</span>\n<span class=\"token keyword\">type</span> Expected <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">{</span> id<span class=\"token punctuation\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> nom<span class=\"token punctuation\">:</span> <span class=\"token string\">\"a\"</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span> id<span class=\"token punctuation\">:</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span> nom<span class=\"token punctuation\">:</span> <span class=\"token string\">\"c\"</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"terratag - 基于 terraform 可跨平台维护 tag","publish":true,"cover":"","showCover":true,"date":"2020-09-21","category":"devops","url":"https://github.com/env0/terratag","author":"env0","translator":"","tags":["editor"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"想让你的文章出现在这里？","publish":true,"cover":"","showCover":true,"date":"2020-09-12","category":"frontend","url":"mailto:editor@zhouexin.com?subject=投稿!","author":"投稿","translator":"","tags":["editor"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"vime - webcomponent实现的视频播放器(提供react/vue/angular支持)","publish":true,"cover":"https://raw.githubusercontent.com/vime-js/vime/master/static/player/video.png","showCover":true,"date":"2020-09-27","category":"frontend","url":"https://github.com/vime-js/vime","author":"Vime","translator":"","tags":["webcomponent"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"教程 - React Native 导航","publish":true,"cover":"https://www.robinwieruch.de/static/e0cf6ab3e3f96c0603fa055c6ec36465/7545b/12.webp","showCover":true,"date":"2020-09-27","category":"frontend","url":"https://www.robinwieruch.de/react-native-navigation","author":"ROBIN WIERUCH","translator":"","tags":["react"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"教程 - react中使用GreenSock动画","publish":true,"cover":"","showCover":true,"date":"2020-09-27","category":"frontend","url":"https://www.smashingmagazine.com/2020/09/animating-react-components-greensock/","author":"Blessing Krofegha","translator":"","tags":["react"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"教程 - github action和安全","publish":true,"cover":"https://zimmergren.net/content/images/size/w1800/2020/09/gh-sec-1.png","showCover":true,"date":"2020-09-20","category":"devops","url":"https://zimmergren.net/github-actions-for-security-code-analysis/","author":"TOBIAS ZIMMERGREN","translator":"","tags":["github"],"priority":2},"html":""}}]}}