{"pageContext":{"index":5,"total":366,"name":"2019-06-09","items":[{"node":{"frontmatter":{"title":"Node.js 12.4.0 发布","publish":true,"cover":"","showCover":true,"date":"2019-06-06","category":"nodejs","url":"https://www.oschina.net/news/107226/node-js-12-4-0-released","author":"左华栋","translator":"","tags":["nodejs"],"priority":1},"html":"<ul>\n<li>\n<p>通过--http-server-default-timeout=milliseconds\n或--http-server-default-timeout=0 分别更改或禁用超时。</p>\n</li>\n<li>\n<p>添加了一个实验--heap-prof 标志，用于\n在启动时启动 V8 堆分析器，并在退出之前将堆配置文件写入磁盘</p>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"Chrome 75文件共享和低延迟canvas上下文","publish":true,"cover":"","showCover":true,"date":"2019-06-06","category":"frontend","url":"https://developers.google.com/web/updates/2019/06/nic75","author":"Pete LePage","translator":"","tags":["chrome"],"priority":1},"html":"<h3 id=\"画布低延迟上下文\"><a href=\"#%E7%94%BB%E5%B8%83%E4%BD%8E%E5%BB%B6%E8%BF%9F%E4%B8%8A%E4%B8%8B%E6%96%87\" 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><a href=\"https://developers.google.com/web/updates/2019/05/desynchronized\">画布低延迟上下文</a></h3>\n<p>略过某些步骤直接显示 buffer 到显示控制器。</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> opts <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span> desynchronized<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 keyword\">const</span> ctx <span class=\"token operator\">=</span> canvas<span class=\"token punctuation\">.</span><span class=\"token function\">getContext</span><span class=\"token punctuation\">(</span><span class=\"token string\">'2d'</span><span class=\"token punctuation\">,</span> opts<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h3 id=\"文件共享到其他-app\"><a href=\"#%E6%96%87%E4%BB%B6%E5%85%B1%E4%BA%AB%E5%88%B0%E5%85%B6%E4%BB%96-app\" 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><a href=\"https://developers.google.com/web/updates/2016/09/navigator-share\">文件共享到其他 app</a></h3>\n<p>支持音频，视频，文本，图片。</p>\n<p><a href=\"https://wicg.github.io/web-share/demos/share-files.html\">示例</a></p>"}},{"node":{"frontmatter":{"title":"WHATW 击败 W3C，赢得 HTML 和 DOM 的控制权","publish":true,"cover":"","showCover":true,"date":"2019-06-06","category":"frontend","url":"https://www.infoq.cn/article/bsvFxt96DOh-SBZphBwJ","author":"Catalin Cimpanu 译者 平川","translator":"","tags":["html"],"priority":1},"html":"<p>在上周的一份新闻稿中，W3C 和 WHATWG 宣布，他们终于把他们的分歧放在一边，并签署了一份新的谅解备忘录。</p>\n<p>根据这份新协议，W3C 正式发布未来的 HTML 和 DOM 标准，并支持 WHATWG，将控制权完全交还给浏览器厂商。</p>\n<p>W3C 及其数百名成员将起草未来的 Web 标准需要包含什么特性的“建议”。然后，<mark>WHATWG 将决定把哪些加入到他们的产品中。</mark></p>"}},{"node":{"frontmatter":{"title":"Scene基于时间线的动画效果","publish":true,"cover":"https://camo.githubusercontent.com/8b69e052ec7bcacdee7064ff525fa48359f4a784/68747470733a2f2f64617962727573682e6769746875622e696f2f7363656e656a732f6578616d706c652f6c6f676f2e676966","showCover":true,"date":"2019-06-06","category":"frontend","url":"https://github.com/daybrush/scenejs","author":"Daybrush","translator":"","tags":["animation"],"priority":1},"html":"<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">import</span> Scene <span class=\"token keyword\">from</span> <span class=\"token string\">\"scenejs\"</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> scene <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Scene</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n  <span class=\"token string\">\".class\"</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token number\">0</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"left: 0px; top: 0px\"</span>\n    <span class=\"token number\">1</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token string\">\"left\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"100px\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token string\">\"top\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"0px\"</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token number\">2</span><span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token string\">\"left\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"200px\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token string\">\"top\"</span><span class=\"token punctuation\">:</span> <span class=\"token string\">\"100px\"</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span>\n  selector<span class=\"token punctuation\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n  easing<span class=\"token punctuation\">:</span> <span class=\"token string\">\"ease-in-out\"</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">play</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"取代 bash，macOS Catalina 使用 zsh 作为默认 Shell","publish":true,"cover":"https://static.oschina.net/uploads/space/2019/0605/075645_u67X_2720166.png","showCover":true,"date":"2019-06-06","category":"macos","url":"https://www.oschina.net/news/107223/macos-catalina-zsh-bash-shell-replacement","author":"局长","translator":"","tags":["macos"],"priority":1},"html":"<p>对于开发者和高级用户来说，macOS Catalina 还有一个重大的变化 —— zsh 已取代 bash 成为新版操作系统中的默认 shell 。</p>\n<p><img src=\"https://static.oschina.net/uploads/space/2019/0605/080728_CKfq_2720166.jpg\"></p>\n<p>默认情况下，在 macOS Catalina 中所有新创建的用户帐号都将使用 zsh。当然，为了帮助用户顺利过渡，bash 并不会立即从 macOS Catalina 中消失，但苹果表示用户应该开始转向使用 zsh，以尽快习惯这一变化，因为 bash 最后可能还是会被移除。</p>\n<p>苹果没有解释做出这一决定的原因，但猜测与 GPLv3 开源协议有关。尽管苹果已经获得基于 GPLv2 许可协议的 bash 3.2 版本，但新版的 bash 采用了 GPLv3 协议。</p>\n<blockquote>\n<p>zsh 需要一堆配置，难道还要配合<a href=\"https://github.com/robbyrussell/oh-my-zsh\">oh-my-zsh</a></p>\n</blockquote>"}},{"node":{"frontmatter":{"title":"npm 挫败一盗取加密币的企图","publish":true,"cover":"","showCover":true,"date":"2019-06-06","category":"nodejs","url":"https://blog.npmjs.org/post/185397814280/plot-to-steal-cryptocurrency-foiled-by-the-npm","author":"npm 摘译 Ka","translator":"","tags":["cryptocurrency"],"priority":1},"html":"<p>npm 联合加密币安全平台 <a href=\"https://komodoplatform.com\">komodo</a>挫败试图盗取加密币(Agama)的企图。</p>\n<p>此次攻击是老套的 npm 包更新攻击：</p>\n<ul>\n<li>攻击者先发布一个无害的 npm 包 <code class=\"language-text\">electron-native-notify</code></li>\n<li>Agama 的钱包项目依赖了此包</li>\n<li>攻击者更新 npm 包，加入危害代码</li>\n<li>如果 Agama 钱包更新此包，则会引入危害代码</li>\n</ul>"}},{"node":{"frontmatter":{"title":"npm 管理包已超过百万大关","publish":true,"cover":"https://snyk.io/wp-content/uploads/Screen-Shot-2019-06-04-at-11.59.32.png","showCover":true,"date":"2019-06-06","category":"nodejs","url":"https://snyk.io/blog/npm-passes-the-1-millionth-package-milestone-what-can-we-learn/","author":"Liran Tal 摘译 Ka","translator":"","tags":["npm"],"priority":2},"html":"<p>本月初 npm 包被索引数已超过百万大关：</p>\n<ul>\n<li>上周包下载量 109 亿</li>\n<li>上月包下载量 469 亿</li>\n</ul>\n<p>越来越多的问题需要关注在安全依赖上。</p>"}},{"node":{"frontmatter":{"title":"免费开源地理api","publish":true,"cover":"","showCover":true,"date":"2019-06-06","category":"frontend","url":"https://ipgeolocationapi.com/","author":"Madis Väin ","translator":"","tags":["chrome"],"priority":1},"html":"<p>例如获得请求ip的地理信息:</p>\n<p><code class=\"language-text\">GET https://api.ipgeolocationapi.com/geolocate HTTP/1.1</code></p>"}},{"node":{"frontmatter":{"title":"好用的 Puppeteer 辅助工具 Puppeteer Recorder","publish":true,"cover":"https://github.com/checkly/puppeteer-recorder/raw/master/src/images/recorder.png","showCover":true,"date":"2018-08-20","category":"frontend","url":"https://segmentfault.com/a/1190000016073329","author":"改名字很伤神","translator":"","tags":["chrome"],"priority":1},"html":"<p><a href=\"https://github.com/checkly/puppeteer-recorder\">Puppeteer Recorder</a> 是Chrome扩展程序，可记录你的浏览器交互并生成Puppeteer脚本。</p>"}},{"node":{"frontmatter":{"title":"基于 three.js 的 3d 多人空战游戏","publish":true,"cover":"https://github.com/nickyvanurk/3d-multiplayer-browser-shooter/raw/master/screenshots/screenshot.png","showCover":true,"date":"2019-06-06","category":"frontend","url":"https://github.com/nickyvanurk/3d-multiplayer-browser-shooter","author":"Nicky van Urk ","translator":"","tags":["opensource"],"priority":1},"html":"<p>three.js + expressjs + websocket</p>"}},{"node":{"frontmatter":{"title":"开源游戏合集","publish":true,"cover":"https://www.freeallegiance.org/screenshots/Dogfights/BigGameVeryBusy.jpg","showCover":true,"date":"2019-06-06","category":"game","url":"https://github.com/opengaming/osgameclones/","author":"Cong","translator":"","tags":["opensource"],"priority":1},"html":"<p>2d,3d,各种类型游戏。</p>"}},{"node":{"frontmatter":{"title":"又双叒叕一数据库更改了许可证","publish":true,"cover":"","showCover":true,"date":"2019-06-06","category":"database","url":"https://mp.weixin.qq.com/s?__biz=Mzg2MjE0NDE5OA==&mid=2247483874&idx=1&sn=51d3275e0390179ae62e6745c3087719","author":"LinuxEverything  Linux News搬运工","translator":"","tags":["opensource"],"priority":1},"html":"<p>CockroachDB 数据库更改了许可证</p>\n<p>修改的许可证中最主要的一段话是“CockroachDB 用户可以自由部署任意多的数据服务节点，可以直接用 CockroachDB，或者嵌入他们自己的应用程序里。也能在公司内部作为服务运行。唯一不能做的事情是：在不付授权费的情况下提供 CockroachDB 作为商业服务”。</p>\n<p>起因是看到 Amazon AWS 在利用各种开源项目自由软件（例如 ElasticSearch）部署到自己的云服务上，来对客户收费，而相应的自由软件的作者却没有得到任何收益。</p>"}}]}}