{"pageContext":{"index":12,"total":364,"name":"2019-07-29","items":[{"node":{"frontmatter":{"title":"MongoDB Atlas 正在整合 Transform 和 Vault","publish":true,"cover":"","showCover":true,"date":"2019-07-25","category":"database","url":"https://www.mongodb.com/blog/post/terraform-and-vault-are-coming-to-mongodb-atlas","author":" Melissa Plunkett 摘译 Ka","translator":"","tags":["mongodb"],"priority":1},"html":"<p>整合 Transform 以加强 continuous delivery(可持续发布)能力。</p>\n<p>整合 <a href=\"https://yq.aliyun.com/articles/307068\">Vault</a> 加强用户敏感资源的安全性。</p>"}},{"node":{"frontmatter":{"title":"Mongo官方Golang驱动更新","publish":true,"cover":"","showCover":true,"date":"2019-07-25","category":"golang","url":"https://www.mongodb.com/blog/post/mongodb-go-driver-updated-to-version-104","author":"编辑 Ka","translator":"","tags":["postgres"],"priority":1},"html":"<p>新版本为 1.0.4</p>\n<p>包括：</p>\n<ul>\n<li>\n<p>修复读取整个文件一次后，下次读取没有返回 EOF 的 bug。</p>\n</li>\n<li>\n<p>修复在旧版本服务器上使用指针连接泄漏的 bug</p>\n</li>\n<li>\n<p>修复查询错误没有包装为<code class=\"language-text\">mongo.CommandError</code>的 bug</p>\n</li>\n<li>\n<p>修复在旧版本服务器上使用 ListCollections 没有过滤索引的 bug</p>\n</li>\n<li>\n<p>指定连接字符串指向需要验证的数据库但没有指明凭据时的行为。（原文\nSpecified behavior where connection string contains authentication database but no credentials.）</p>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"Node.js 12.7.0 发布，服务器端的 JavaScript 运行环境","publish":true,"cover":"","showCover":true,"date":"2019-07-25","category":"nodejs","url":"https://www.oschina.net/news/108510/node-js-12-7-0-released","author":"afterer@OSCHINA","translator":"","tags":["nodejs"],"priority":1},"html":"<p>Node.js 12.7.0 已经发布，Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。更新内容如下：</p>\n<ul>\n<li>deps：\nnghttp2 升级到 1.39.1\nnpm 升级到 6.10.0</li>\n<li>esm：\n实现 pkg-exports 方案。可以将一个新的 \"exports\" 字段添加到模块的 package.json 文件中，来提供自定义子路径别名 <a href=\"https://github.com/jkrems/proposal-pkg-exports/\">#proposal-pkg-exports</a></li>\n<li>http:\n新增 response.writableFinished\n在 http.ClientRequest \"information\" 事件中公开 headers, rawHeaders 和其他字段</li>\n<li>inspector:\n新增 inspector.waitForDebugger()</li>\n<li>policy:\n添加 --policy-integrity=sri CLI 选项，以减少策略篡改。如果指定了策略完整性，但策略没有此完整性，则 Node.js 将在运行任何代码之前出错</li>\n<li>readline,tty:\n公开来自编写字符的各种方法的流 API</li>\n<li>src:\n使用 cgroup 获得内存限制。这改进了为 Node.js 进程设置内存上限的方式。在此之前，使用物理内存大小来估计所需的 V8 堆大小。此更改增加了获得 Linux cgroup 设置的内存限制的能力，docker 容器使用该限制来设置资源约束</li>\n</ul>\n<h2 id=\"package-exports-示例：\"><a href=\"#package-exports-%E7%A4%BA%E4%BE%8B%EF%BC%9A\" 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>package exports 示例：</h2>\n<p><code class=\"language-text\">package.json</code></p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"@momentjs/moment\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"0.0.0\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"module\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"main\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"./dist/index.js\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"exports\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\".\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"./src/moment.mjs\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"./\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"./src/util/\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"./timezones/\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"./data/timezones/\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"./timezones/utc\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"./data/timezones/utc/index.mjs\"</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>引用</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">import</span> request <span class=\"token keyword\">from</span> <span class=\"token string\">'request'</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// Loads file:///app/node_modules/request/request.mjs</span>\n\n<span class=\"token keyword\">import</span> request <span class=\"token keyword\">from</span> <span class=\"token string\">'./node_modules/request/request.mjs'</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// Loads file:///app/node_modules/request/request.mjs</span>\n\n<span class=\"token keyword\">import</span> request <span class=\"token keyword\">from</span> <span class=\"token string\">'file:///app/node_modules/request/request.mjs'</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// Loads file:///app/node_modules/request/request.mjs</span>\n\n<span class=\"token keyword\">import</span> utc <span class=\"token keyword\">from</span> <span class=\"token string\">'@momentjs/moment/timezones/utc'</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// Loads file:///app/node_modules/@momentjs/moment/timezones/utc/index.mjs</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"React Hooks 使用秘笈集合","publish":true,"cover":"","showCover":true,"date":"2019-07-25","category":"frontend","url":"https://usehooks.com/","author":"Gabe Ragland","translator":"","tags":["react"],"priority":1},"html":"<ul>\n<li><a href=\"https://usehooks.com/useEventListener/\">useEventListener</a> 封装事件监听</li>\n<li><a href=\"https://usehooks.com/useWhyDidYouUpdate/\">useWhyDidYouUpdate</a> 监控哪个属性改变导致重绘</li>\n<li><a href=\"https://usehooks.com/useDarkMode/\">useDarkMode</a> 封装有状态的 Dark 模式主题切换</li>\n<li><a href=\"https://usehooks.com/useMedia/\">useMedia</a> 封装媒体查询</li>\n<li><a href=\"https://usehooks.com/useLockBodyScroll/\">useLockBodyScroll</a> 页面滚动锁定</li>\n<li><a href=\"https://usehooks.com/useTheme/\">useTheme</a> 封装主题切换</li>\n<li><a href=\"https://usehooks.com/useSpring/\">useSpring</a> 截取自 <a href=\"https://github.com/drcmda/react-spring\">react-spring</a> 的 spring 动画封装</li>\n<li><a href=\"https://usehooks.com/useHistory/\">useHistory</a> 封装历史操作，支持回撤</li>\n<li><a href=\"https://usehooks.com/useScript/\">useScript</a> 封装动态加载脚本</li>\n<li><a href=\"https://usehooks.com/useKeyPress/\">useKeyPress</a> 封装键盘事件</li>\n</ul>"}},{"node":{"frontmatter":{"title":"react-border-wrapper 美观的边框组件","publish":true,"cover":"https://camo.githubusercontent.com/d2e2de947b56a8cfe7df0a723e5ae98a9137a22d/68747470733a2f2f6d6574726f78652e6769746875622e696f2f72656163742d626f726465722d777261707065722f72656163745f626f726465725f777261707065725f6578616d706c652e706e67","showCover":true,"date":"2019-07-25","category":"frontend","url":"https://github.com/Metroxe/react-border-wrapper?v=1.0.3","author":"Christopher Powroznik","translator":"","tags":["react"],"priority":1},"html":"<p><a href=\"https://metroxe.github.io/react-border-wrapper/\">在线 demo</a></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>BorderWrapper</span>\n  <span class=\"token attr-name\">borderColour</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>#00b88<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">borderWidth</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>50px<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">borderRadius</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>15px<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">borderType</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>solid<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">innerPadding</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>30px<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">topElement</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{topElement}<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">topPosition</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{0.05}<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">topOffset</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>22px<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">topGap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>5px<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">rightElement</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{rightElement}<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">rightPosition</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{10}<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">rightOffset</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>22px<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">rightGap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>4px<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">bottomElement</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{bottomElement}<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">bottomPosition</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{0}<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">bottomOffset</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>22px<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">bottomGap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>4px<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">leftElement</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{leftElement}<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">leftPosition</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>{0.9}<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">leftOffset</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>22px<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">leftGap</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>4px<span class=\"token punctuation\">\"</span></span>\n<span class=\"token punctuation\">/></span></span></code></pre></div>"}},{"node":{"frontmatter":{"title":"react-trello trello样式的 kanban 面板react组件","publish":true,"cover":"https://raw.githubusercontent.com/rcdexta/react-trello/master/react-trello.gif","showCover":true,"date":"2019-07-25","category":"frontend","url":"https://github.com/rcdexta/react-trello","author":"rcdexta","translator":"","tags":["react"],"priority":2},"html":"<ul>\n<li>支持拖拽</li>\n<li>支持分页</li>\n<li>支持编辑</li>\n</ul>\n<p><a href=\"https://rcdexta.com/react-trello/?selectedKind=Advanced%20Features&#x26;selectedStory=Async%20Load%20data&#x26;full=0&#x26;addons=0&#x26;stories=1&#x26;panelRight=0\">在线 demo</a></p>"}},{"node":{"frontmatter":{"title":"tabulator 强大的不依赖 jquery 的表格组件","publish":true,"cover":"https://camo.githubusercontent.com/9c2d6ef191915ab62b8ebebd89b872117d50fb3a/687474703a2f2f746162756c61746f722e696e666f2f696d616765732f746162756c61746f725f7461626c652e6a7067","showCover":true,"date":"2019-07-22","category":"frontend","url":"https://github.com/olifolkerd/tabulator","author":"Oli Folkerd 编辑 Ka","translator":"","tags":["table"],"priority":1},"html":"<ul>\n<li>可整合到任何其他框架(react,vue,angular...)</li>\n<li>支持表内编辑</li>\n<li>支持排序</li>\n<li>支持过滤</li>\n<li>支持分页</li>\n<li>支持导出 csv</li>\n<li>支持列计算</li>\n<li>支持行选择</li>\n<li>支持响应式</li>\n<li>支持 IE</li>\n</ul>\n<p>不依赖 jquery, 支持 npm\n<code class=\"language-text\">npm install tabulator-tables --save</code></p>\n<p><a href=\"http://tabulator.info/\">在线 demo</a></p>"}},{"node":{"frontmatter":{"title":"vuetify-Material的Vue组件库","publish":true,"cover":"","showCover":true,"date":"2019-07-22","category":"frontend","url":"https://github.com/vuetifyjs/vuetify","author":"Vuetify.js","translator":"","tags":["vue"],"priority":1},"html":"<p>✨ (2 万)还是比 elementUI(~4 万) 差不多 2 万。</p>"}},{"node":{"frontmatter":{"title":"web share api 已在ios上可用","publish":true,"cover":"","showCover":true,"date":"2019-07-22","category":"frontend","url":"https://www.infoq.com/news/2019/07/web-share-API","author":"Guy Nesher 摘译 Ka","translator":"","tags":["ios"],"priority":1},"html":"<p><a href=\"https://developer.mozilla.org/en-US/docs/Web/API/Navigator/share\">Web Share API</a>目前在safari浏览器上已实现。</p>\n<p>它必须要通过用户操作来触发（例如点击按钮）。\n分享的站点必须是https。</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">shareSite</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    navigator<span class=\"token punctuation\">.</span><span class=\"token function\">share</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n        title<span class=\"token punctuation\">:</span> document<span class=\"token punctuation\">.</span>title<span class=\"token punctuation\">,</span>\n        text<span class=\"token punctuation\">:</span> <span class=\"token string\">'Hello World'</span><span class=\"token punctuation\">,</span>\n        url<span class=\"token punctuation\">:</span> <span class=\"token string\">'https://mewebsite.com'</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 function\">then</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        console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Share completed successfuly'</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\">catch</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>error<span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span> console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token template-string\"><span class=\"token string\">`share failed: </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>error<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">`</span></span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>        \n<span class=\"token punctuation\">}</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"几个有趣的javascript语法（提议）","publish":true,"cover":"","showCover":true,"date":"2019-07-27","category":"javascript","url":"https://blog.kazge.com/javascript/2019/07/26/zh-3-interesting-js-syntax-proposal/","author":"Ka","translator":"","tags":["javascript"],"priority":1},"html":"<h2 id=\"optional-chaining可选链-for-javascript\"><a href=\"#optional-chaining%E5%8F%AF%E9%80%89%E9%93%BE-for-javascript\" 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://github.com/tc39/proposal-optional-chaining\">Optional Chaining(可选链) for JavaScript</a></h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">a<span class=\"token operator\">?</span><span class=\"token punctuation\">.</span>b<span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// 等同于</span>\na <span class=\"token operator\">==</span> <span class=\"token keyword\">null</span> <span class=\"token operator\">?</span> undefined <span class=\"token punctuation\">:</span> a<span class=\"token punctuation\">.</span>b<span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// 注意 == null的判断</span>\n<span class=\"token comment\">// null == null  : true</span>\n<span class=\"token comment\">// undefined == null :true</span>\n<span class=\"token comment\">// 0 == null :false</span>\n<span class=\"token comment\">// '' == null :false</span></code></pre></div>\n<h2 id=\"nullish-coalescing空值合并-for-javascript\"><a href=\"#nullish-coalescing%E7%A9%BA%E5%80%BC%E5%90%88%E5%B9%B6-for-javascript\" 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://github.com/tc39/proposal-nullish-coalescing\">Nullish Coalescing(空值合并) for JavaScript</a></h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">a <span class=\"token operator\">?</span><span class=\"token operator\">?</span> <span class=\"token string\">'haha'</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// 仅当a为null或undefined时返回'haha',否则返回a的值</span></code></pre></div>\n<h2 id=\"pipeline管道\"><a href=\"#pipeline%E7%AE%A1%E9%81%93\" 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://github.com/tc39/proposal-pipeline-operator\">Pipeline(管道)</a></h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">//左边输出作为右边第一个输入</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">doubleSay</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> str <span class=\"token operator\">+</span> <span class=\"token string\">', '</span> <span class=\"token operator\">+</span> str<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">capitalize</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> str<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">toUpperCase</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> str<span class=\"token punctuation\">.</span><span class=\"token function\">substring</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">exclaim</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> str <span class=\"token operator\">+</span> <span class=\"token string\">'!'</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">let</span> result <span class=\"token operator\">=</span> <span class=\"token function\">exclaim</span><span class=\"token punctuation\">(</span><span class=\"token function\">capitalize</span><span class=\"token punctuation\">(</span><span class=\"token function\">doubleSay</span><span class=\"token punctuation\">(</span><span class=\"token string\">'hello'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nresult<span class=\"token punctuation\">;</span> <span class=\"token comment\">//=> \"Hello, hello!\"</span>\n<span class=\"token comment\">// 等同于</span>\n<span class=\"token keyword\">let</span> result <span class=\"token operator\">=</span> <span class=\"token string\">'hello'</span> <span class=\"token operator\">|</span><span class=\"token operator\">></span> doubleSay <span class=\"token operator\">|</span><span class=\"token operator\">></span> capitalize <span class=\"token operator\">|</span><span class=\"token operator\">></span> exclaim<span class=\"token punctuation\">;</span>\n\nresult<span class=\"token punctuation\">;</span> <span class=\"token comment\">//=> \"Hello, hello!\"</span></code></pre></div>\n<h2 id=\"partial-application偏函数\"><a href=\"#partial-application%E5%81%8F%E5%87%BD%E6%95%B0\" 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://github.com/tc39/proposal-partial-application\">Partial Application(偏函数)</a></h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> addOne <span class=\"token operator\">=</span> add<span class=\"token punctuation\">.</span><span class=\"token function\">bind</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">null</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">addOne</span><span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 3</span>\n\n<span class=\"token comment\">// 等同于</span>\n<span class=\"token keyword\">const</span> addOne <span class=\"token operator\">=</span> <span class=\"token function\">add</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">?</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">addOne</span><span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 3</span></code></pre></div>\n<p>这个和管道配合比较方便</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">let</span> newScore <span class=\"token operator\">=</span> player<span class=\"token punctuation\">.</span>score\n  <span class=\"token operator\">|</span><span class=\"token operator\">></span> <span class=\"token function\">add</span><span class=\"token punctuation\">(</span><span class=\"token number\">7</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">?</span><span class=\"token punctuation\">)</span>\n  <span class=\"token operator\">|</span><span class=\"token operator\">></span> <span class=\"token function\">clamp</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">100</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">?</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"使用 pgBackRest 备份到 AWS S3","publish":true,"cover":"","showCover":true,"date":"2019-07-25","category":"frontend","url":"https://pgstef.github.io/2019/07/19/pgbackrest_s3_configuration.html","author":"Stefan Fercot 摘译 Ka","translator":"","tags":["postgres"],"priority":1},"html":"<p><a href=\"http://pgbackrest.org/\">pgBackRest</a> 是 postgres 备份工具。</p>\n<p>示例使用<a href=\"https://min.io/\">MinIO</a>模拟 AWS S3 服务。</p>\n<p>pgBackRest 配置：</p>\n<div class=\"gatsby-highlight\" data-language=\"conf\"><pre class=\"language-conf\"><code class=\"language-conf\">[global]\nrepo1-path=/repo\nrepo1-type=s3\nrepo1-s3-endpoint=minio.local\nrepo1-s3-bucket=pgbackrest\nrepo1-s3-verify-tls=n\nrepo1-s3-key=accessKey\nrepo1-s3-key-secret=superSECRETkey\nrepo1-s3-region=eu-west-3\n\nrepo1-retention-full=1\nprocess-max=2\nlog-level-console=info\nlog-level-file=debug\nstart-fast=y\ndelta=y\n\n[my_stanza]\npg1-path=/var/lib/pgsql/11/data</code></pre></div>\n<p>备份\n<code class=\"language-text\">sudo -iu postgres pgbackrest --stanza=my_stanza --type=full backup</code></p>"}},{"node":{"frontmatter":{"title":"游戏-飞翔的鸡蛋(Aero Egg)-ios非中国区可下载","publish":true,"cover":"https://blog.kazge.com/assets/volitantegg-show.gif","showCover":true,"date":"2019-06-12","category":"game","url":"https://apps.apple.com/us/app/aero-egg/id1247264387?ls=1","author":"广告","translator":"","tags":["ads"],"priority":3},"html":""}},{"node":{"frontmatter":{"title":"微软公布WebView2-基于CHROME的windows控件","publish":true,"cover":"","showCover":true,"date":"2019-07-24","category":"frontend","url":"https://www.infoq.com/news/2019/07/microsoft-chromium-webview2","author":"Dylan Schiemann 摘译 Ka","translator":"","tags":["vue"],"priority":1},"html":"<p>WebView2 基于 chrome，主要目的是用于在 Windows 系统原生程序中运行 web 内容。\n这就官方提供了一个 hybrid（混合）程序的解决方案，类似于 ios 里的 webview。</p>\n<p>目前预览版只支持 Win32 的 window10 版本。稍后会提供对 Windows 7+，Windows Server 2012 R2+, UWP, WFP, 和 WinForms 的支持。</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":3},"html":""}},{"node":{"frontmatter":{"title":"数据库工具SQL Fiddle, DB Fiddle","publish":true,"cover":"","showCover":true,"date":"2019-07-25","category":"database","url":"https://blog.kazge.com/database/2018/07/02/zh-tool-DB-fiddle/","author":"Ka","translator":"","tags":["fiddle"],"priority":1},"html":"<p>SQL Fiddle, DB Fiddle 与 jsFiddle CodePen 类似，可以在浏览器上创建关系数据库 MySql,Oracle,Postgres,MSSQL,SQLite 的代码并运行，无需注册可直接分享。</p>\n<p>SQL Fiddle 支持 MySql,Oracle,Postgres,MSSQL</p>\n<p>DB Fidle 支持 MySql,Postgres,SQLite</p>\n<p>目前都没有内嵌网页内部分享的特性。</p>"}},{"node":{"frontmatter":{"title":"是时候使用BRIN索引了","publish":true,"cover":"","showCover":true,"date":"2019-07-25","category":"database","url":"https://www.percona.com/blog/2019/07/16/brin-index-for-postgresql-dont-forget-the-benefits/","author":"Jobin Augustine","translator":"","tags":["postgres"],"priority":1},"html":"<p>BRIN 索引（块范围索引，Block Range Indexes）是 PostgreSQL 9.5 版本新增的索引类型。该索引维护每一定范围内数据块的最大最小值和其他一些统计数据，当数据库查询时可根据索引的统计信息筛选出不符合查询条件的数据块，以避免全表扫描，提高性能和减少 IO。和 BTree 索引比较所占用的空间足够小，因此 BRIN 索引一般用于线性相关较强字段的精确和范围查询，如在一张很大的日志表中通过 id 或时间查询。</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">postgres<span class=\"token operator\">=</span><span class=\"token comment\"># create index testtab_date_brin_idx  on testtab using brin (date);</span>\nCREATE INDEX</code></pre></div>\n<p>适用于键为按顺序增长的数据。</p>"}},{"node":{"frontmatter":{"title":"最全 HTTP 安全响应头设置指南","publish":true,"cover":"","showCover":true,"date":"2019-07-23","category":"nodejs","url":"https://www.infoq.cn/article/SHlQeOJDEfSx*P5Cjg1s","author":"Charlie Belmer 译者 刘雅梦","translator":"","tags":["http"],"priority":1},"html":"<ul>\n<li>\n<p><a href=\"https://content-security-policy.com/\">Content-Security-Policy（CSP）</a>CSP 通过指定允许加载哪些资源的形式，来防止跨站脚本注入</p>\n</li>\n<li>\n<p>Strict-Transport-Security（HSTS）该响应报头告诉浏览器，只能通过 HTTPS 访问网站</p>\n</li>\n<li>\n<p>X-Content-Type-Options 该响应报头确保浏览器遵守应用程序设置的 MIME 类型。这有助于防止某些类型的跨站脚本注入攻击。</p>\n</li>\n<li>\n<p>Cache-Control（缓存控制）</p>\n</li>\n<li>\n<p>Expires（过期时间）该响应报头能设置当前请求缓存的过期时间。如果设置了 Cache-Control 的 max-age 响应报头，它将会被忽略，因此，在不考虑使用 Cache-Control 而进行本地缓存测试时，才设置它。</p>\n</li>\n<li>\n<p>X-Frame-Options 该响应报头用来表明站点是否允许在 iFrame 中展示。</p>\n</li>\n<li>\n<p><a href=\"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin\">Access-Control-Allow-Origin</a> 通过该响应报头可以告诉浏览器，允许哪些其他站点的前端 JavaScript 代码对页面发出请求。</p>\n</li>\n<li>\n<p>Set-Cookie 确保 cookie 仅能通过 HTTPS（加密）传送，并且不能通过 JavaScript 访问。</p>\n</li>\n</ul>\n<p><code class=\"language-text\">Set-Cookie: &lt;cookie-name&gt;=&lt;cookie-value&gt;; Domain=&lt;domain-value&gt;; Secure; HttpOnly</code></p>\n<ul>\n<li>X-XSS-Protection 该响应报头用来指示浏览器停止执行跨站脚本攻击检测。</li>\n</ul>"}},{"node":{"frontmatter":{"title":"游戏源码大集合","publish":true,"cover":"","showCover":true,"date":"2019-07-23","category":"game","url":"https://archive.org/details/gamesourcecode","author":"编辑 Ka","translator":"","tags":["game"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"直接在 DNA 上执行 SQL 操作，已通过 PostgreSQL 验证","publish":true,"cover":"https://oscimg.oschina.net/oscnet/12fda92c7a020fa816e6045ba3c7fc69eeb.jpg","showCover":true,"date":"2019-07-27","category":"database","url":"https://www.oschina.net/news/108488/oligoarchive-using-dna-in-the-dbms-storage-hierarchy","author":"h4cd@OSCHINA","translator":"","tags":["DNA"],"priority":1},"html":"<p>法国通信系统工程师学校与研究中心（Eurecom）数据科学系助理教授 Appuswamy 和伦敦帝国理工学院 SCALE 实验室负责人 Heinis 等人近期发表了一篇关于在 DBMS 存储层操作 DNA 的论文《OligoArchive: Using DNA in the DBMS storage hierarchy》。</p>\n<p>研究人员通过为 PostgreSQL 构建归档和恢复工具（pg<em>oligo</em>dump 与 pg<em>oligo</em>restore）证明 OligoArchive 可以在实践中实现，这些工具执行模式识别编码和解码 DNA 上的关系数据，并使用这些工具将 12KB TPC-H 数据库归档到 DNA，进行体外计算，并将其恢复。</p>\n<p>论文中的实验表明，使用合成 DNA 存档和恢复数据不仅可行，而且还可以利用数据库知识经验优化 DNA 编码和解码过程，甚至直接在 DNA 上执行 SQL 操作。</p>\n<blockquote>\n<p>小编指出，未来最快的 cpu 还是基于人造脑的生物工程脑。</p>\n</blockquote>"}},{"node":{"frontmatter":{"title":"笑出眼泪-疯狂的非洲作文","publish":true,"cover":"","showCover":true,"date":"2019-07-23","category":"funny","url":"https://music.163.com/#/video?id=CAE35076C4F305CC9C08CB49A124643F","author":"轻松一刻","translator":"","tags":["write"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"笑出眼泪-疯狂的非洲数学老师","publish":true,"cover":"","showCover":true,"date":"2019-07-23","category":"funny","url":"https://music.163.com/#/video?id=DF20E3C7D20C4442AB06AA53C6E1851B","author":"轻松一刻","translator":"","tags":["math"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"简单可用的异步加载 css 的方法","publish":true,"cover":"","showCover":true,"date":"2019-07-23","category":"frontend","url":"https://www.filamentgroup.com/lab/load-css-simpler/","author":"SCOTT JEHL 编辑 Ka","translator":"","tags":["css"],"priority":1},"html":"<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>link</span>\n  <span class=\"token attr-name\">rel</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>stylesheet<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>/path/to/my.css<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">media</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>print<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">onload</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>this.media=<span class=\"token punctuation\">'</span>all<span class=\"token punctuation\">'</span><span class=\"token punctuation\">\"</span></span>\n<span class=\"token punctuation\">/></span></span></code></pre></div>\n<ul>\n<li><code class=\"language-text\">media=&quot;print&quot;</code>让浏览器认为此样式与渲染无关，则不等它加载完即进行下一步，达到异步加载的目的。</li>\n<li><code class=\"language-text\">onload=&quot;this.media=&#39;all&#39;&quot;</code> 当加载完后，运用到所有媒体，包括 screen，则应用了样式。</li>\n</ul>\n<h3 id=\"现比于code-classlanguage-textrelpreloadcode\"><a href=\"#%E7%8E%B0%E6%AF%94%E4%BA%8Ecode-classlanguage-textrelpreloadcode\" 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>现比于<code class=\"language-text\">rel=preload</code></h3>\n<ul>\n<li><code class=\"language-text\">rel=preload</code>浏览器支持尚未完善</li>\n<li><code class=\"language-text\">rel=preload</code>优先级非常高，副作用大</li>\n</ul>\n<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>link</span> <span class=\"token attr-name\">rel</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>preload<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>/path/to/my.css<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">as</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>style<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>link</span>\n  <span class=\"token attr-name\">rel</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>stylesheet<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>/path/to/my.css<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">media</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>print<span class=\"token punctuation\">\"</span></span>\n  <span class=\"token attr-name\">onload</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>this.media=<span class=\"token punctuation\">'</span>all<span class=\"token punctuation\">'</span><span class=\"token punctuation\">\"</span></span>\n<span class=\"token punctuation\">/></span></span></code></pre></div>\n<blockquote>\n<p>以前一直以为 css 是异步加载，javascript 是同步加载。实际上，css 也是同步加载，只不过下载完后对它的处理不会阻塞文档渲染。详情参见<a href=\"http://blog.codingplayboy.com/2017/03/29/webpage_render/\">浅析前端页面渲染机制</a></p>\n</blockquote>"}},{"node":{"frontmatter":{"title":"简单好用的任意元素拖动，变形，旋转工具","publish":true,"cover":"https://raw.githubusercontent.com/daybrush/moveable/master/demo/images/scalable.gif","showCover":true,"date":"2019-07-27","category":"frontend","url":"https://github.com/daybrush/moveable","author":"Younkue Choi","translator":"","tags":["react"],"priority":1},"html":"<p>支持原生 javascript，故支持可与任何框架整合。</p>\n<p>提供 react 组件。</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">import</span> Moveable <span class=\"token keyword\">from</span> <span class=\"token string\">'moveable'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> rotatable <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Moveable</span><span class=\"token punctuation\">(</span>document<span class=\"token punctuation\">.</span>body<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span>\n  target<span class=\"token punctuation\">:</span> document<span class=\"token punctuation\">.</span><span class=\"token function\">querySelector</span><span class=\"token punctuation\">(</span><span class=\"token string\">'.origin'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n  rotatable<span class=\"token punctuation\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n  origin<span class=\"token punctuation\">:</span> <span class=\"token boolean\">true</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"美国网站，app 残疾人辅助功能相关诉讼增加一倍","publish":true,"cover":"","showCover":true,"date":"2019-07-25","category":"web","url":"https://blog.kazge.com/web/2019/07/24/zh-US-increase-one-time-for-ADA-lawsuit/","author":"Ashima Dayal, Vivien Byrwa 和 Maxine Sharavsky 摘译 Ka","translator":"","tags":["accessibility"],"priority":1},"html":"<p>2018 年针对网站和 APP 的与美国残疾人法（Americans with Disabilities Act (ADA)）相关的诉讼增长了近一倍。</p>\n<p>WCAG 2.0 AA 要求网站提供:</p>\n<ul>\n<li>音频和视频的字幕</li>\n<li>机器可读文本和屏幕内容的音频描述</li>\n<li>完全键盘可操作</li>\n<li>最小对比度图片和文本</li>\n<li>可修改背景色，字体大小，字色</li>\n</ul>"}}]}}