{"pageContext":{"index":92,"total":367,"name":"2021-02-07","items":[{"node":{"frontmatter":{"title":"MathInspector 可视化python科学编程环境","publish":true,"cover":"https://mathinspector.com/img/beta-scene-full.gif","showCover":true,"date":"2021-02-07","category":"python","url":"https://github.com/MathInspector/MathInspector","author":"TheOneThreeSeven","translator":"","tags":["python"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"Name-That-Hash 反推hash类型","publish":true,"cover":"https://github.com/HashPals/Name-That-Hash/raw/main/images/demo_smaller.gif","showCover":true,"date":"2021-02-07","category":"other","url":"https://github.com/HashPals/Name-That-Hash","author":"HashPals","translator":"","tags":["hash"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"eslint-config-auto - 自动依据项目配置eslint","publish":true,"cover":"","showCover":true,"date":"2021-02-07","category":"nodejs","url":"https://github.com/davidjbradshaw/eslint-config-auto","author":"David J. Bradshaw","translator":"","tags":["eslint"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"github开始支持上传视频","publish":true,"cover":"https://i0.wp.com/user-images.githubusercontent.com/22751162/105920585-7f718a00-5fec-11eb-9afc-179316c44cdd.png?ssl=1","showCover":true,"date":"2021-02-07","category":"other","url":"https://github.blog/changelog/2021-02-01-expanded-support-for-video-uploads/","author":"The GitHub Blog","translator":"","tags":["w3c"],"priority":2},"html":""}},{"node":{"frontmatter":{"title":"WebRTC 成为 W3C 和 IETF 正式标准","publish":true,"cover":"https://static.oschina.net/uploads/space/2021/0128/074222_ZuZl_2720166.png","showCover":true,"date":"2021-02-07","category":"frontend","url":"https://www.oschina.net/news/128093/webrtc-standard","author":"OSCHINA","translator":"","tags":["w3c"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"openmct - NASA出品开源任务控制框架","publish":true,"cover":"https://camo.githubusercontent.com/c54c587ba7f2817f36c9bb423d8c03eba1ef15b58649466b2fad4e075ee0810a/68747470733a2f2f6e6173612e6769746875622e696f2f6f70656e6d63742f7374617469632f7265732f696d616765732f4f70656e2d4d43542e42726f7773652e4c61796f75742e4d6172732d576561746865722d312e6a7067","showCover":true,"date":"2021-02-07","category":"nodejs","url":"https://github.com/nasa/openmct","author":"NASA","translator":"","tags":["mission control"],"priority":2},"html":"<p>openmct</p>"}},{"node":{"frontmatter":{"title":"glide-data-grid 高性能react表格","publish":true,"cover":"https://github.com/glideapps/glide-data-grid/raw/main/features.gif","showCover":true,"date":"2021-02-07","category":"frontend","url":"https://github.com/glideapps/glide-data-grid","author":"Glide","translator":"","tags":["grid"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"react hook和媒体查询","publish":true,"cover":"","showCover":true,"date":"2021-02-07","category":"frontend","url":"https://www.netlify.com/blog/2020/12/05/building-a-custom-react-media-query-hook-for-more-responsive-apps/","author":"Cassidy Williams","translator":"","tags":["react"],"priority":1},"html":"<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"language-jsx\"><code class=\"language-jsx\"><span class=\"token keyword\">import</span> <span class=\"token punctuation\">{</span> useState<span class=\"token punctuation\">,</span> useEffect <span class=\"token punctuation\">}</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'react'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">function</span> <span class=\"token function\">useMediaQuery</span><span class=\"token punctuation\">(</span>query<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">const</span> <span class=\"token punctuation\">[</span>matches<span class=\"token punctuation\">,</span> setMatches<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">useState</span><span class=\"token punctuation\">(</span><span class=\"token boolean\">false</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token function\">useEffect</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">const</span> media <span class=\"token operator\">=</span> window<span class=\"token punctuation\">.</span><span class=\"token function\">matchMedia</span><span class=\"token punctuation\">(</span>query<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>media<span class=\"token punctuation\">.</span>matches <span class=\"token operator\">!==</span> matches<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token function\">setMatches</span><span class=\"token punctuation\">(</span>media<span class=\"token punctuation\">.</span>matches<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">const</span> <span class=\"token function-variable function\">listener</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n      <span class=\"token function\">setMatches</span><span class=\"token punctuation\">(</span>media<span class=\"token punctuation\">.</span>matches<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n    media<span class=\"token punctuation\">.</span><span class=\"token function\">addListener</span><span class=\"token punctuation\">(</span>listener<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> media<span class=\"token punctuation\">.</span><span class=\"token function\">removeListener</span><span class=\"token punctuation\">(</span>listener<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">[</span>matches<span class=\"token punctuation\">,</span> query<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token keyword\">return</span> matches<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"react-native-bottom-sheet - React Native 底部菜单,兼容expo","publish":true,"cover":"https://github.com/gorhom/react-native-bottom-sheet/raw/master/preview.gif","showCover":true,"date":"2021-02-07","category":"mobile","url":"https://github.com/gorhom/react-native-bottom-sheet","author":"Mo Gorhom","translator":"","tags":["react native"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"react-native-render-html html转换为React Native原生组件展示","publish":true,"cover":"https://camo.githubusercontent.com/b30bc6b60224eaa047394642fff0c71dfcf655af0f18f5b1e6126d15c6f16812/687474703a2f2f692e67697068792e636f6d2f3236746b6d6a424c76546850305453616b2e676966","showCover":true,"date":"2021-02-07","category":"mobile","url":"https://github.com/meliorence/react-native-render-html","author":"Meliorence","translator":"","tags":["react native"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"react-native-parsed-text - React Native文本解析组件","publish":true,"cover":"https://cloud.githubusercontent.com/assets/159813/11152673/d5fe86f0-89e8-11e5-8b5e-f3c06bdc1b6b.gif","showCover":true,"date":"2021-02-07","category":"mobile","url":"https://github.com/taskrabbit/react-native-parsed-text","author":"TaskRabbit","translator":"","tags":["react native"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"react-native-notifier - React Native UI通知组件,支持expo","publish":true,"cover":"https://raw.githubusercontent.com/seniv/react-native-notifier/master/demo.gif","showCover":true,"date":"2021-02-07","category":"mobile","url":"https://github.com/seniv/react-native-notifier","author":"Ivan Seniv","translator":"","tags":["react native"],"priority":2},"html":""}},{"node":{"frontmatter":{"title":"react-ultimate-resume 你的时尚react简历","publish":true,"cover":"https://camo.githubusercontent.com/ebdebd1e558532d5237ec20973314d37618a5e8d8a86054edeba6fd952e5e9eb/68747470733a2f2f63646e2e66696c65737461636b636f6e74656e742e636f6d2f636f6d70726573732f75514c4843346554524b754a32344e6f4a4e6b53","showCover":true,"date":"2021-02-07","category":"frontend","url":"https://github.com/welovedevs/react-ultimate-resume","author":"WeLoveDevs.com","translator":"","tags":["react"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"使用AWS Lambda为React构建服务器端渲染","publish":true,"cover":"https://d2908q01vomqb2.cloudfront.net/1b6453892473a467d07372d45eb05abc2031647a/2021/01/20/ssr-3-1024x139.png","showCover":true,"date":"2021-02-07","category":"nodejs","url":"https://aws.amazon.com/cn/blogs/compute/building-server-side-rendering-for-react-in-aws-lambda/","author":"James Beswick","translator":"","tags":["lambda"],"priority":2},"html":""}},{"node":{"frontmatter":{"title":"从谷歌离职后单干第三年艰难但快乐的历程","publish":true,"cover":"https://mtlynch.io/solo-developer-year-3/cover.jpg","showCover":true,"date":"2021-02-07","category":"other","url":"https://mtlynch.io/solo-developer-year-3/","author":"Michael Lynch","translator":"","tags":["startup"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"教程 - 使用HAProxy连接限制和队列保护服务器","publish":true,"cover":"https://cdn.haproxy.com/wp-content/uploads/2021/01/HAProxy-Connection-Limits-and-Queues.png","showCover":true,"date":"2021-02-07","category":"devops","url":"https://www.haproxy.com/blog/protect-servers-with-haproxy-connection-limits-and-queues/","author":"HAPROXY","translator":"","tags":["ha"],"priority":1},"html":"<div class=\"gatsby-highlight\" data-language=\"ini\"><pre class=\"language-ini\"><code class=\"language-ini\"> backend web_servers\n   balance roundrobin\n   acl is_checkout path_beg /checkout/\n   http-request set-priority-class int(1) if is_checkout\n   http-request set-priority-class int(2) if !is_checkout\n   timeout queue 30s\n   server s1 192.168.0.10:80 maxconn 30\n   server s2 192.168.0.11:80 maxconn 30\n   server s3 192.168.0.12:80 maxconn 30</code></pre></div>"}},{"node":{"frontmatter":{"title":"styled-components 快乐最佳实践","publish":true,"cover":"https://www.joshwcomeau.com/_next/image?url=%2Fimages%2Fstyled-components%2Fbird-div.jpg&w=828&q=75","showCover":true,"date":"2021-02-07","category":"frontend","url":"https://www.joshwcomeau.com/css/styled-components/","author":"Josh W. Comeau","translator":"","tags":["styled components"],"priority":2},"html":""}},{"node":{"frontmatter":{"title":"如何进行对react开发者友好地UI设计","publish":true,"cover":"https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_auto/w_2000/https://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/8d539f9b-83a4-46b8-a61d-e77597ed18ef/install-plugin-large.jpg","showCover":true,"date":"2021-02-07","category":"frontend","url":"https://www.smashingmagazine.com/2021/01/design-developer-friendly-react-code-animaapp/","author":"Miroslav","translator":"","tags":["design"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"教程 - 尝试远程调试Node.js运行时并代码注入","publish":true,"cover":"https://i0.wp.com/blog.sqreen.com/wp-content/uploads/2021/01/Experimenting-with-remote-debugging.png?resize=1640%2C624&ssl=1","showCover":true,"date":"2021-02-07","category":"nodejs","url":"https://blog.sqreen.com/remote-debugging-nodejs-runtime-code-injection/","author":"Vladimir","translator":"","tags":["debug"],"priority":1},"html":"<p><code class=\"language-text\">kill -USR1 &lt;PID&gt;</code></p>"}},{"node":{"frontmatter":{"title":"自定义标签和react的整合","publish":true,"cover":"","showCover":true,"date":"2021-02-07","category":"frontend","url":"https://css-tricks.com/3-approaches-to-integrate-react-with-custom-elements/","author":"Caleb Williams","translator":"","tags":["react"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"怎样将提交的机密文件从git历史中彻底删除","publish":true,"cover":"https://res.cloudinary.com/da8kiytlc/image/upload/c_scale,r_6,w_500/v1611932656/Cheatsheets/RewritingYourGitHistory-Cheatsheet-Final_weq1l2.png","showCover":true,"date":"2021-02-07","category":"devops","url":"https://blog.gitguardian.com/rewriting-git-history-cheatsheet/","author":"DON GOODMAN-WILSON","translator":"","tags":["git"],"priority":2},"html":""}}]}}