{"pageContext":{"index":0,"total":367,"name":"2019-05-06","items":[{"node":{"frontmatter":{"title":"Babylon.js 4.0发布-最强webGL图形引擎","publish":true,"cover":"https://46c4ts1tskv22sdav81j9c69-wpengine.netdna-ssl.com/wp-content/uploads/prod/sites/3/2019/04/ca43d68264e22f752e572bacd4eac87d.gif","showCover":true,"date":"2019-05-04","category":"frontend","url":"https://blogs.windows.com/buildingapps/2019/04/30/babylon-js-4-0-is-here/","author":"Microsoft","translator":"","tags":["vscode"],"priority":1},"html":"<ul>\n<li>添加了虚拟场景检测器工具</li>\n<li>增强了现实渲染物理引擎</li>\n<li>增加了对 ammo.js 物理引擎的支持</li>\n<li>新的站点外观</li>\n<li>在线可编辑<a href=\"https://playground.babylonjs.com/#3I55DK\">demo</a></li>\n</ul>"}},{"node":{"frontmatter":{"title":"Debian 归档Wheezy,Jessie版本 ","publish":true,"cover":"","showCover":null,"date":"2019-04-26","category":"devops","url":"https://blog.kazge.com/devops/2019/03/26/zh-debian-jessie-archived/","author":"Ka","translator":"","tags":["docker"],"priority":1},"html":"<p>2019 年 3 月 debian 发表声明宣布系统的分支 Wheezy,Jessie 将归档，这导致其资源链接由原来的 deb.debian.org 转到 archive.debian.org, 最终结果是，许多依赖 debian:wheezy 或 debian:jessie 的 docker 镜像不能构建。</p>"}},{"node":{"frontmatter":{"title":"Electron 5.0.0 发布","publish":true,"cover":"https://oscimg.oschina.net/oscnet/310726a6663f4df79a5194e36b2523f772f.jpg","showCover":null,"date":"2019-04-23","category":"nodejs","url":"https://static.oschina.net/news/106219/electron-5-0-0-released","author":"h4cd","translator":"","tags":["electron","desktop"],"priority":2},"html":"<p>Electron 5 此版本这三者分别升级到了：Chromium 73.0.3683.119、Node.js 12.0.0 与 V8 7.3.492.27。</p>\n<p>Electron 5 继续践行 Promise 化，将 Electron 中基于回调的 API 转换为 Promise。</p>\n<p>systemPreferences 添加或改进了一些功能，用于获取 macOS 系统颜色。</p>\n<p>此外，根据版本支持计划，Electron 2.0.X 已经 EOF，官方不再对其提供支持。同时，6.0.0 版本的发布计划也已经出炉。</p>\n<p><a href=\"https://electronjs.org/blog/electron-5-0\">官方原文</a></p>"}},{"node":{"frontmatter":{"title":"Facebook在f8开发者大会2019上宣布将使用React+GraphQL+Relay完全重写facebook.com","publish":true,"cover":"https://static001.infoq.cn/resource/image/f3/6e/f33109759230b59d778a027e16f1bd6e.jpg","showCover":null,"date":"2019-04-23","category":"frontend","url":"https://www.infoq.cn/article/HGS5Akggpo588A*DOTfL","author":"徐川","translator":"","tags":["react","facebook"],"priority":2},"html":"<p>此次 f8 开发者大会 2019 上，facebook 宣布重新设计 facebook.com 的代号为\"FB5\"。</p>"}},{"node":{"frontmatter":{"title":"Google 发布新的 Java 日志框架 Flogger，总体可读性增加","publish":true,"cover":"","showCover":null,"date":"2019-05-07","category":"java","url":"https://www.infoq.cn/article/vUxR-PNeB67wyaQcsLJk","author":"Dustin Schultz，盖磊","translator":"","tags":["google","logging"],"priority":1},"html":"<p>据 Google 宣称，Flogger 可“比现有的日志 API 提供更多的优点”。其中包括：降低了禁用日志语句的代价、增加了总体的可读性，以及对可扩展性的支持。</p>\n<p>Flogger 宣称其主要优点之一是“对于已禁用日志层级的完全无代价实现”，而其他所有日志记录框架依然可能会对已禁用的日志语句生成字节码。Flogger 在设计上考虑了完全避免产生额外的代价。</p>\n<p>示例:</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\">logger.atError()\n  .withCause(exception)\n  .log(&quot;The arg, ‘%s’ caused an error&quot;, arg);</code></pre></div>\n<p>疑问：如果这样写</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\">logger.at(DEBUG)\n  .log(&quot;The request is ‘%s’ caused an error&quot;, JSON.toString(request));</code></pre></div>\n<p>也还是无解的吧？</p>"}},{"node":{"frontmatter":{"title":"Hazelcast回喷redis基准测试2018结果","publish":true,"cover":"","showCover":false,"date":"2019-05-01","category":"database","url":"https://www.jdon.com/52173","author":"hazelcase,banq","translator":"","tags":["redis","hazelcast"],"priority":1},"html":"<p>Hazelcast 演示展示了接近线性的缩放，而 Redis 只有 32 个线程达到极限。根据我们与全球最大客户的经验，Redis 的线程限制极其成问题，要么无法满足概念验证要求，要么无法适应负载增长。</p>"}},{"node":{"frontmatter":{"title":"MongoDB宣布3900万美元收购开源数据库公司Realm","publish":true,"cover":"","showCover":false,"date":"2019-04-18","category":"database","url":"https://github.com/nodkz/mongodb-memory-server","author":"cnBeta.COM","translator":"","tags":["mongodb","mongo"],"priority":1},"html":"<p>Realm 是一家面向移动应用的开源数据库公司，在被收购之前已经成功筹集了 4000 万美元。通过收购 Realm，Mongo 不仅获得了强悍的移动解决方案，填补了 MongoDB Mobile 的不足，而且还获得了 Realm 的技术、用户群和工程人才。</p>"}},{"node":{"frontmatter":{"title":"Node.js 最佳实践 - 新增避免将私密信息发布到npm","publish":true,"cover":"https://raw.githubusercontent.com/i0natan/nodebestpractices/master/assets/images/banner-2.jpg","showCover":null,"date":"2019-05-02","category":"nodejs","url":"https://github.com/i0natan/nodebestpractices/blob/master/README.chinese.md","author":"Yoni Goldberg","translator":"","tags":["security","npm"],"priority":1},"html":"<p><a href=\"https://github.com/i0natan/nodebestpractices/blob/master/README.chinese.md\">Node.js 最佳实践</a>最近添加了<a href=\"https://github.com/i0natan/nodebestpractices/blob/master/sections/security/avoid_publishing_secrets.md\">避免将私密信息发布到npm</a>的条目.</p>\n<p>应使用<code class=\"language-text\">.npmignore</code>,<code class=\"language-text\">.gitignore</code>的黑名单和<code class=\"language-text\">package.json</code>中的<code class=\"language-text\">files</code>白名单配合使用将私密信息排除到提交中.</p>\n<p>更多私密信息处理办法见<a href=\"https://github.com/i0natan/nodebestpractices/blob/master/README.chinese.md#-63-%E6%8A%8A%E6%9C%BA%E5%AF%86%E4%BF%A1%E6%81%AF%E4%BB%8E%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E4%B8%AD%E6%8A%BD%E7%A6%BB%E5%87%BA%E6%9D%A5%E6%88%96%E8%80%85%E4%BD%BF%E7%94%A8%E5%8C%85%E5%AF%B9%E5%85%B6%E5%8A%A0%E5%AF%86\">6.3 把机密信息从配置文件中抽离出来，或者使用包对其加密</a></p>\n<blockquote>\n<p>不要在配置文件或源代码中存储纯文本机密信息。相反, 使用诸如Vault产品、Kubernetes/Docker Secrets或使用环境变量之类的安全管理系统。最后一个结果是, 存储在源代码管理中的机密信息必须进行加密和管理 (滚动密钥(rolling keys)、过期时间、审核等)。使用pre-commit/push钩子防止意外提交机密信息。</p>\n</blockquote>"}},{"node":{"frontmatter":{"title":"Node12.1.0,Node11.15.0发布,Node12新特性","publish":true,"cover":"","showCover":null,"date":"2019-04-23","category":"nodejs","url":"https://nodejs.org/en/blog/release/v12.1.0/","author":"Michaël Zasso , Shelley Vohr, hzrWeber","translator":"","tags":["electron","desktop"],"priority":1},"html":"<p><a href=\"https://nodejs.org/en/blog/release/v12.1.0/\">Node12.1.0</a>发布, <a href=\"https://nodejs.org/en/blog/release/v11.15.0/\">Node11.15.0</a>发布</p>\n<p><a href=\"https://www.jianshu.com/p/f50bed34c4ec\">Node12有哪些值得关注的新特性</a>\nV8 更新带来好多不错的特性。\nHTTP 解析速度提升。\n启动速度大幅提升。\n更好的诊断报告和堆分析工具。\nECMAScript 模块更新。\n提供了生成堆转储的功能，从而可以更轻松地调查内存问题。\n工作线程不再需要标志。\nhttp已将其默认解析器更新为llhttp。\nassert 验证所需的参数并调整松散的断言。\nbuffer 改进使其更稳定和安全。\nasync_hooks 删除已弃用的功能。</p>"}},{"node":{"frontmatter":{"title":"Python3.7新特性dataclass,async,await等","publish":true,"cover":"","showCover":null,"date":"2019-04-29","category":"python","url":"https://blog.heroku.com/python37-dataclasses-async-await","author":"CASEY FAIST","translator":"","tags":["python3.7"],"priority":1},"html":"<h2 id=\"dataclass\"><a href=\"#dataclass\" 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>dataclass</h2>\n<p>修饰符<code class=\"language-text\">@dataclass</code>为类自动构建构造函数，其参数为此类声明的属性按顺序赋值。</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> typing <span class=\"token keyword\">import</span> List\n<span class=\"token keyword\">from</span> dataclasses <span class=\"token keyword\">import</span> dataclass<span class=\"token punctuation\">,</span> field\n\n@dataclass\n<span class=\"token keyword\">class</span> <span class=\"token class-name\">Foo</span><span class=\"token punctuation\">:</span>\n    name<span class=\"token punctuation\">:</span> <span class=\"token builtin\">str</span>\n    <span class=\"token builtin\">id</span><span class=\"token punctuation\">:</span> <span class=\"token builtin\">str</span>\n    bars<span class=\"token punctuation\">:</span> List<span class=\"token punctuation\">[</span><span class=\"token builtin\">str</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> field<span class=\"token punctuation\">(</span>default_factory<span class=\"token operator\">=</span><span class=\"token builtin\">list</span><span class=\"token punctuation\">)</span>\n\n\n<span class=\"token comment\"># usage</span>\n\na_foo <span class=\"token operator\">=</span> Foo<span class=\"token punctuation\">(</span><span class=\"token string\">\"My foo’s name\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Foo-ID-1\"</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"1\"</span><span class=\"token punctuation\">,</span><span class=\"token string\">\"2\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"asyncio-和-asyncawait\"><a href=\"#asyncio-%E5%92%8C-asyncawait\" 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>Asyncio 和 async/await</h2>\n<p>async/await成为了保留关键字。同时简化了Asyncio的使用。</p>\n<p>3.7之前：</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> asyncio\nloop <span class=\"token operator\">=</span> asyncio<span class=\"token punctuation\">.</span>get_event_loop<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\nloop<span class=\"token punctuation\">.</span>run_until_complete<span class=\"token punctuation\">(</span>some_async_task<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\nloop<span class=\"token punctuation\">.</span>close<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>3.7之后：</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> asyncio\nasyncio<span class=\"token punctuation\">.</span>run<span class=\"token punctuation\">(</span>some_async_task<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"新关键字breakpoint\"><a href=\"#%E6%96%B0%E5%85%B3%E9%94%AE%E5%AD%97breakpoint\" 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>新关键字breakpoint()</h2>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">do_something<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\nbreakpoint<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">#进入调试</span>\ndo_something_else<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"上下文变量\"><a href=\"#%E4%B8%8A%E4%B8%8B%E6%96%87%E5%8F%98%E9%87%8F\" 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<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> contextvars\n<span class=\"token keyword\">import</span> asyncio\n\nval <span class=\"token operator\">=</span> contextvars<span class=\"token punctuation\">.</span>ContextVar<span class=\"token punctuation\">(</span><span class=\"token string\">\"val\"</span><span class=\"token punctuation\">,</span> default<span class=\"token operator\">=</span><span class=\"token string\">\"0\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">async</span> <span class=\"token keyword\">def</span> <span class=\"token function\">setval</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n   val<span class=\"token punctuation\">.</span><span class=\"token builtin\">set</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"1\"</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">#独立的val，设置的值不会影响其他上下文</span>\n\n<span class=\"token keyword\">async</span> <span class=\"token keyword\">def</span> <span class=\"token function\">printval</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n   <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>val<span class=\"token punctuation\">.</span>get<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">#独立的val，取得是默认值</span>\n\nasyncio<span class=\"token punctuation\">.</span>run<span class=\"token punctuation\">(</span>setval<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token comment\"># 1</span>\nasyncio<span class=\"token punctuation\">.</span>run<span class=\"token punctuation\">(</span>printval<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token comment\"># 0</span></code></pre></div>\n<h2 id=\"dictionaries-默认就是保持顺序的\"><a href=\"#dictionaries-%E9%BB%98%E8%AE%A4%E5%B0%B1%E6%98%AF%E4%BF%9D%E6%8C%81%E9%A1%BA%E5%BA%8F%E7%9A%84\" 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>Dictionaries 默认就是保持顺序的</h2>\n<p>3.7后默认的字典就是保持顺序的，OrderedDict依然未变。</p>"}},{"node":{"frontmatter":{"title":"VS Code Remote 发布！开启远程开发新时代","publish":true,"cover":"https://static.oschina.net/uploads/space/2019/0504/073253_GAQx_2720166.gif","showCover":true,"date":"2019-05-04","category":"misc","url":"https://zhuanlan.zhihu.com/p/64505333","author":"VS Code Team, 韩骏","translator":"","tags":["vscode"],"priority":2},"html":"<p>北京时间 2019 年 5 月 3 日，在 PyCon 2019 大会上，微软发布了 <a href=\"https://code.visualstudio.com/blogs/2019/05/02/remote-development\">VS Code Remote</a>，开启了远程开发的新时代！</p>\n<p>这次发布包含了三款核心的全新插件，它们可以帮助开发者在容器、物理机器或虚拟机，以及 Windows Subsystem for Linux (WSL) 中实现无缝的远程开发。通过安装 Remote Development Extension Pack ，你可以快速上手远程开发。</p>\n<p>P.S: 该功能目前仅支持在 Insider 版本中使用，当然最终也会在 Stable 版本中提供。</p>"}},{"node":{"frontmatter":{"title":"mongo charts预览版支持嵌入到网页","publish":true,"cover":"https://webassets.mongodb.com/_com_assets/cms/EmbeddingGIF2-8x2i8k3osz.gif","showCover":true,"date":"2019-04-18","category":"database","url":"https://www.mongodb.com/blog/post/mongodb-charts-gets-embeddable","author":"Jane Fine","translator":"","tags":["mongodb","mongo"],"priority":1},"html":"<p>生成 iframe 代码嵌入 html 中。目前支持两种方式：</p>\n<ul>\n<li>完全公开，所有人可见</li>\n<li>更多身份验证选项，指定可见范围\n所有图标都可以实时更新。\n更多<a href=\"https://www.mongodb.com/blog/post/this-blog-post-has-charts-and-yours-could-too\">Demo</a></li>\n</ul>"}},{"node":{"frontmatter":{"title":"dockly - 沉浸式docker管理命令行工具","publish":true,"cover":"https://cloud.githubusercontent.com/assets/316371/25682867/c5212216-3027-11e7-8f36-72d38516d2af.gif","showCover":true,"date":"2019-05-01","category":"devops","url":"https://github.com/lirantal/dockly","author":"Liran Tal","translator":"","tags":["docker"],"priority":1},"html":"<p>安装<code class=\"language-text\">sudo npm install -g dockly</code>,运行<code class=\"language-text\">dockly</code>。会自动检测本地 docker 服务。</p>"}},{"node":{"frontmatter":{"title":"React Native用了三年，发布了四个高分app后我学到了什么","publish":true,"cover":"","showCover":null,"date":"2019-04-04","category":"frontend","url":"https://medium.com/input-logic/what-ive-learned-building-4-react-native-apps-over-3-years-6b5035f8282d","author":"Kyle Erickson","translator":"","tags":["react"],"priority":1},"html":"<p>快速开发，适合创业公司。\nReact Native != Web。\n推荐的第三方库\nreact-native-firebase  用于通知\ntipsi-stripe  用于支付\ndate-fns  用于日期\nreact-native-svg  用于 svg\n同时在 ios 和安卓上测试，要真机测试。\n作者对 React Native 持非常正面的观点，以后会继续使用。</p>"}},{"node":{"frontmatter":{"title":"十行代码实现React Hooks","publish":true,"cover":"","showCover":null,"date":"2019-04-23","category":"frontend","url":"https://blog.kazge.com/front-end/2019/03/13/zh-ten-lines-implementation-of-react-hooks/","author":"Ka","translator":"","tags":["react"],"priority":1},"html":"<p><a href=\"https://github.com/imhazige/node-examples/blob/master/react-hooks-implementation/index.js\">代码</a>解千言 。 “魔法”就是数组。</p>"}},{"node":{"frontmatter":{"title":"nodejs代码运行内存mongo","publish":true,"cover":"","showCover":false,"date":"2019-04-18","category":"database","url":"https://github.com/nodkz/mongodb-memory-server","author":"Pavel Chertorogov","translator":"","tags":["mongodb","mongo"],"priority":1},"html":"<p>默认会下载对应平台的最新 mongodb，并将数据存储到内存中，大约占据 7M 内存空间。默认不需要配置，也可以通过代码，环境变量，<code class=\"language-text\">package.json</code> 来配置。支持<code class=\"language-text\">replica set</code>。</p>"}},{"node":{"frontmatter":{"title":"作为一个Laravel社区成员，我为什么喜欢react更多于vue一些","publish":true,"cover":"","showCover":null,"date":"2019-04-26","category":"frontend","url":"https://sebastiandedeyne.com/why-i-prefer-react-over-vue","author":"Sebastian De Deyne","translator":"","tags":["react","vue"],"priority":1},"html":"<p>我使用 TypeScript；\n我只用 function,不用 class；\n我使用 Redux + Immer；\n我基本不构建 SPA，而是普通的 server/client app，后端用 Laravel；</p>\n<p>React 和 typescript 结合很好；\nReact 提倡用 function；\nReact 使用小 api 例如 都是 <code class=\"language-text\">props</code>，而不是 <code class=\"language-text\">v-for</code>,<code class=\"language-text\">v-if</code>；\nReact 从根本上解决问题。</p>\n<p>结论：我为什么喜欢 React：</p>\n<ul>\n<li>API 保持简单，React 宣言其关注在可组合性上</li>\n<li>React Team 一般会从根本上反思问题</li>\n</ul>"}}]}}