{"pageContext":{"index":7,"total":358,"name":"2019-06-23","items":[{"node":{"frontmatter":{"title":"Alioth 基准测试-cpp>java>nodejs>ruby>python3 ","publish":true,"cover":"","showCover":true,"date":"2019-06-20","category":"nodejs","url":"https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/javascript.html","author":"The Computer Language Benchmarks Game 摘译 Ka","translator":"","tags":["language"],"priority":1},"html":"<ul>\n<li>c++ 第一 比 java 快</li>\n<li>java 比 nodejs 快一点，两者比较接近</li>\n<li>nodejs 比 ruby 快很多</li>\n<li>ruby 又比 python3 快</li>\n</ul>"}},{"node":{"frontmatter":{"title":"AWS花费","publish":true,"cover":"","showCover":true,"date":"2019-06-09","category":"aws","url":"https://david-codes.hatanian.com/2019/06/09/aws-costs-every-programmer-should-now.html?utm_source=programmingdigest&utm_medium=rss&utm_campaign=featured","author":"David Hatanian 摘译 Ka","translator":"","tags":["aws"],"priority":1},"html":"<table>\n<thead>\n<tr>\n<th>CPU部分</th>\n<th>月消费中位数</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1 modern vCPU (4 AWS ECUs)</td>\n<td>58 $</td>\n</tr>\n<tr>\n<td>With 1 year convertible reservation (all up front) 一年预付费</td>\n<td>43 $</td>\n</tr>\n<tr>\n<td>With 3 years convertible reservation (all up front) 三年预付费</td>\n<td>30 $</td>\n</tr>\n<tr>\n<td>With spot pricing (estimated) 抢占实例</td>\n<td>30 $</td>\n</tr>\n</tbody>\n</table>\n<table>\n<thead>\n<tr>\n<th>存储部分</th>\n<th>月消费中位数</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1 GB RAM</td>\n<td>10 $</td>\n</tr>\n<tr>\n<td>1 GB RAM 1 year convertible reservation (all up front) 1GB一年预付费</td>\n<td>8 $</td>\n</tr>\n<tr>\n<td>1 GB RAM 3 years convertible reservation (all up front) 1GB三年预付费</td>\n<td>5 $</td>\n</tr>\n<tr>\n<td>SSD</td>\n<td>0.11 $</td>\n</tr>\n<tr>\n<td>Hard Disk 硬盘</td>\n<td>0.05 $</td>\n</tr>\n<tr>\n<td>S3</td>\n<td>0.02 $</td>\n</tr>\n<tr>\n<td>S3 Glacier</td>\n<td>0.004 $</td>\n</tr>\n</tbody>\n</table>\n<table>\n<thead>\n<tr>\n<th>Type of data transfer</th>\n<th>Cost of transferring 1GB</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>EU/US region to any other region 欧美区到其他区</td>\n<td>0.02 $/GB</td>\n</tr>\n<tr>\n<td>APAC region to any other region 环太平洋区到其他区</td>\n<td>0.09 $/GB</td>\n</tr>\n<tr>\n<td>EU/US region to Internet 欧美区到互联网</td>\n<td>0.05 $/GB</td>\n</tr>\n<tr>\n<td>APAC region to Internet 环太平洋区到互联网</td>\n<td>0.08 $/GB</td>\n</tr>\n<tr>\n<td>Between two AZs in the same region 同区不同AWS Zone之间</td>\n<td>0.01 $/GB</td>\n</tr>\n<tr>\n<td>Inside the same AZ 相同AWS Zone</td>\n<td>Free</td>\n</tr>\n</tbody>\n</table>\n<p>AWS并不便宜，但是你花的是免维护硬件服务。</p>"}},{"node":{"frontmatter":{"title":"Mongoose 5.6.0 新特性-不可修改属性","publish":true,"cover":"","showCover":true,"date":"2019-06-21","category":"nodejs","url":"http://thecodebarbarian.com/whats-new-in-mongoose-5-6-immutable-properties.html","author":"Valeri Karpov","translator":"","tags":["mongo","mongoose"],"priority":1},"html":"<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> Model <span class=\"token operator\">=</span> mongoose<span class=\"token punctuation\">.</span><span class=\"token function\">model</span><span class=\"token punctuation\">(</span>\n  <span class=\"token string\">'Test'</span><span class=\"token punctuation\">,</span>\n  <span class=\"token keyword\">new</span> <span class=\"token class-name\">Schema</span><span class=\"token punctuation\">(</span>\n    <span class=\"token punctuation\">{</span>\n      name<span class=\"token punctuation\">:</span> String<span class=\"token punctuation\">,</span>\n      createdAt<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">{</span>\n        type<span class=\"token punctuation\">:</span> Date<span class=\"token punctuation\">,</span>\n        <span class=\"token comment\">// 第一次赋值后将不可修改</span>\n        immutable<span class=\"token punctuation\">:</span> <span class=\"token boolean\">true</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">{</span> timestamps<span class=\"token punctuation\">:</span> <span class=\"token boolean\">true</span> <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"Deepfake 再升级！一张照片 + 音频“复活”爱因斯坦","publish":true,"cover":"https://static001.infoq.cn/resource/image/f1/40/f1cb33019e0b4ea95394c551b6a75c40.png","showCover":true,"date":"2019-06-22","category":"python","url":"https://www.infoq.cn/article/CM72xuNm35pNdrw7p_yT","author":"陈思","translator":"","tags":["ai"],"priority":1},"html":"<p>类似的研究层出不穷，让人们担心它们可能被用于误导和宣传，这个问题甚至已经困扰到了一些国家的立法者。尽管有无数种方法整明技术是无害的，但它确实已经造成了真正的伤害，尤其是对女性而言。</p>\n<p>而合成技术产生的“合成数据”也有着不小的商业价值。合成数据可以减少对生成和捕获数据的依赖，可以做到比手工标记数据更便宜、更快速，还可以最大限度减少公司对第三方数据源的需求等等。</p>\n<p>目前尚不知道本文提到的合成技术研究团队未来会将这项技术用在哪里，这项技术暂时也还没有开源。</p>"}},{"node":{"frontmatter":{"title":"css2019 报告","publish":true,"cover":"","showCover":true,"date":"2019-06-20","category":"frontend","url":"https://blog.kazge.com/html/css/2019/06/19/zh-css-report-2019/","author":"Ka","translator":"","tags":["css"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"React 的未来：与 Suspense 共舞","publish":true,"cover":"","showCover":true,"date":"2019-06-16","category":"frontend","url":"https://www.infoq.cn/article/sVaeA7Y3pei2sYy_lK9e","author":"Lusan Das 译者 王强","translator":"","tags":["react"],"priority":1},"html":"<p><a href=\"https://zh-hans.reactjs.org/docs/code-splitting.html#reactlazy\">React.lazy</a> 函数能让你像渲染常规组件一样处理动态引入（的组件）。</p>\n<p>我也很高兴能看到越来越多的库开始支持<mark>函数编程</mark>。这种模式肯定会彻底改变我们前端的编程方式。我也在关注 React 的并发改进——相关内容可查看<a href=\"https://reactjs.org/blog/2018/11/27/react-16-roadmap.html#react-16x-mid-2019-the-one-with-suspense-for-data-fetching\">官方文档</a>。React-cache 和 Suspense 就是属于并发 react 的功能。</p>"}},{"node":{"frontmatter":{"title":"npm配合github保护npm token","publish":true,"cover":"https://66.media.tumblr.com/194d71b6b14ca0fd509f5b086abffadc/tumblr_inline_pt9i3whSUn1vjctre_500.png","showCover":true,"date":"2019-06-21","category":"nodejs","url":"https://blog.npmjs.org/post/185680936500/protecting-package-publishers-npm-token-security","author":"npm 摘译 Ka","translator":"","tags":["npm"],"priority":1},"html":"<p>当包含npm token的代码提交到github公开代码仓库时，会触发 <a href=\"https://t.umblr.com/redirect?z=https%3A%2F%2Fdeveloper.github.com%2Fpartnerships%2Ftoken-scanning%2F&#x26;t=ZDUyMTg5NTdkMjkzMTA5OTc0MGM4MDI3Y2YzMmI1ZmJjMGQ2MGMyZCx4UEppb0o0MA%3D%3D&#x26;b=t%3AnXsLs1P4AptPf1fBr_nFxw&#x26;p=https%3A%2F%2Fblog.npmjs.org%2Fpost%2F185680936500%2Fprotecting-package-publishers-npm-token-security&#x26;m=1\">GitHub’s token scanning partnership program</a>，npm撤销被公开的token的有效性。</p>"}},{"node":{"frontmatter":{"title":"Facebook 宣布数字货币 Libra，预计在 2020 年推出","publish":true,"cover":"","showCover":true,"date":"2019-06-19","category":"blockchain","url":"https://www.oschina.net/news/107562/fb-announces-calibra-coming-in-2020","author":"局长@OSCHINA","translator":"","tags":["facebook","cryptocurrency"],"priority":1},"html":"<ul>\n<li>白皮书的第一句话是：“Libra 的使命是建立一套简单的、无国界的货币和为数十亿人服务的金融基础设施”。</li>\n<li>Libra 采用的协议和目标：通过去中心化的、可编程的数据库来支持<strong>小波动的加密货币</strong>（稳定币）。</li>\n<li><a href=\"https://github.com/libra/libra\">Libra 核心代码</a>托管在 GitHub，采用 Apache-2.0 开源许可证。</li>\n</ul>\n<p><a href=\"https://www.infoq.cn/article/9CpPQWLNI-y5OpgSsD1f\">Libra 系统由三个部分组成：</a>(摘自 infoq <a href=\"https://www.infoq.cn/article/9CpPQWLNI-y5OpgSsD1f\">Facebook 发布加密货币白皮书：为全球数十亿人提供一种新的“互联网货币”</a>)</p>\n<ol>\n<li>它建立在一个安全、可扩展和可靠的区块链（The Libra Blockchain）之上；</li>\n<li>由旨在赋予其内在价值的资产储备（The Libra Currency and Reserve）作为后盾；</li>\n<li>由独立的 Libra 协会（The Libra Association）管理，负责发展生态系统。</li>\n</ol>"}},{"node":{"frontmatter":{"title":"npm解雇风波导致罢工依然处于僵局","publish":true,"cover":"","showCover":true,"date":"2019-06-21","category":"nodejs","url":"https://gist.github.com/aeschright/8ed09cbc2a4aee00fcb4ad35086d76a6","author":"Audrey Eschright 摘译 Ka","translator":"","tags":["npm"],"priority":1},"html":"<ul>\n<li>\n<p>npm cli 已经有 3 个月未提交了，</p>\n</li>\n<li>\n<p><a href=\"https://github.com/npm/cli/pull/177\">PR 6.9.1 依然处于停顿状态</a></p>\n</li>\n<li>\n<p><a href=\"https://www.techug.com/post/javascript-npm.html\">JavaScript 背后的公司 NPM 风雨飘摇：管理层出现变故</a></p>\n</li>\n<li>\n<p><code class=\"language-text\">空降兵上级</code>带来<code class=\"language-text\">空降嫡系部队</code>排除异己开除老员工。</p>\n</li>\n</ul>\n<blockquote>\n<p>硅谷也少不了这<code class=\"language-text\">空降兵</code>问题</p>\n</blockquote>"}},{"node":{"frontmatter":{"title":"酷炫易用React Toast弹窗组件react-toastify","publish":true,"cover":"https://user-images.githubusercontent.com/5574267/35336500-e58f35b6-0118-11e8-800b-2da6594fc700.gif","showCover":true,"date":"2019-06-20","category":"frontend","url":"https://github.com/fkhadra/react-toastify","author":"Fadi Khadra","translator":"","tags":["react"],"priority":2},"html":""}},{"node":{"frontmatter":{"title":"react css 样式组件 styled-components","publish":true,"cover":"","showCover":true,"date":"2019-06-20","category":"frontend","url":"https://github.com/styled-components/styled-components","author":"Evan Jacobs","translator":"","tags":["react"],"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><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">import</span> styled <span class=\"token keyword\">from</span> <span class=\"token string\">'styled-components'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// 创建一个Title组件</span>\n<span class=\"token keyword\">const</span> Title <span class=\"token operator\">=</span> styled<span class=\"token punctuation\">.</span>h1<span class=\"token template-string\"><span class=\"token string\">`\n  font-size: 1.5em;\n  text-align: center;\n  color: palevioletred;\n`</span></span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// 创建一个Wrapper组件</span>\n<span class=\"token keyword\">const</span> Wrapper <span class=\"token operator\">=</span> styled<span class=\"token punctuation\">.</span>section<span class=\"token template-string\"><span class=\"token string\">`\n  padding: 4em;\n  background: papayawhip;\n`</span></span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// 使用</span>\n<span class=\"token operator\">&lt;</span>Wrapper<span class=\"token operator\">></span>\n  <span class=\"token operator\">&lt;</span>Title<span class=\"token operator\">></span>Hello World<span class=\"token punctuation\">,</span> <span class=\"token keyword\">this</span> is my first styled component<span class=\"token operator\">!</span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Title<span class=\"token operator\">></span>\n<span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>Wrapper<span class=\"token operator\">></span><span class=\"token punctuation\">;</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"readme-md-generator 依据 package 和 git 信息生成 README","publish":true,"cover":"https://user-images.githubusercontent.com/9840435/59458494-d7a94780-8e1a-11e9-9103-42639c347c38.jpg","showCover":true,"date":"2019-06-21","category":"nodejs","url":"https://github.com/kefranabg/readme-md-generator","author":"Franck Abgrall","translator":"","tags":["markdown"],"priority":1},"html":"<p><code class=\"language-text\">npx readme-md-generator -y</code></p>"}},{"node":{"frontmatter":{"title":"websocket-as-promised-promise 方式的 websocket","publish":true,"cover":"https://user-images.githubusercontent.com/1473072/32486445-b2443538-c3b7-11e7-8e9f-94c95efad760.png","showCover":true,"date":"2019-06-21","category":"nodejs","url":"https://github.com/vitalets/websocket-as-promised","author":"Vitaliy Potapov","translator":"","tags":["webscoket"],"priority":1},"html":"<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">import</span> WebSocketAsPromised <span class=\"token keyword\">from</span> <span class=\"token string\">'websocket-as-promised'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">const</span> wsp <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">WebSocketAsPromised</span><span class=\"token punctuation\">(</span><span class=\"token string\">'ws://example.com'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">await</span> wsp<span class=\"token punctuation\">.</span><span class=\"token function\">open</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nwsp<span class=\"token punctuation\">.</span><span class=\"token function\">send</span><span class=\"token punctuation\">(</span><span class=\"token string\">'message'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">await</span> wsp<span class=\"token punctuation\">.</span><span class=\"token function\">close</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<ul>\n<li>支持浏览器和 nodejs</li>\n<li>支持第三方 websocket 库</li>\n</ul>"}},{"node":{"frontmatter":{"title":"react 多窗口组件 react-mosaic支持触摸设备","publish":true,"cover":"https://github.com/nomcopter/react-mosaic/raw/master/screencast.gif","showCover":true,"date":"2019-06-20","category":"frontend","url":"https://github.com/nomcopter/react-mosaic","author":"Kevin Verdieck","translator":"","tags":["react"],"priority":1},"html":"<p>支持 typescript\n<a href=\"https://nomcopter.github.io/react-mosaic/\">在线 Demo</a></p>"}},{"node":{"frontmatter":{"title":"opencvnodejs 支持 openCV4","publish":true,"cover":"https://user-images.githubusercontent.com/31125521/30052864-41bd5680-9227-11e7-8a62-6205f3d99d5c.gif","showCover":true,"date":"2019-06-21","category":"nodejs","url":"https://github.com/justadudewhohacks/opencv4nodejs","author":"Vincent Mühler","translator":"","tags":["opencv","machine learning"],"priority":2},"html":""}},{"node":{"frontmatter":{"title":"国内首例云服务器侵权案二审改判，阿里云胜诉","publish":true,"cover":"","showCover":true,"date":"2019-06-22","category":"law","url":"https://www.infoq.cn/article/yle*cO7zS9flA9uDbCYy","author":"赵钰莹","translator":"","tags":["aliyun"],"priority":1},"html":"<p>这一事件最初可以追溯到四年前。2015 年 8 月，乐动卓越公司接到玩家投诉称，网址为 www.callmt.com 的网站提供《我叫 MT 畅爽版》的下载及游戏充值服务。乐动卓越公司经比对发现，该款游戏涉嫌非法复制其游戏的数据包，通过技术手段发现，该款游戏内容存储于阿里云公司的服务器。</p>\n<p>之后，乐动卓越公司两次致函阿里云公司，要求其删除涉嫌侵权内容，并提供服务器租用人的具体信息。乐动卓越公司认为，阿里云公司的行为涉嫌构成共同侵权，因而诉阿里云公司侵犯信息网络传播权。遂于 2015 年 11 月向北京市石景山区人民法院起诉，请求判令阿里云断开链接、停止服务，向其提供数据库信息，并赔偿经济损失。一审认定阿里云应承担侵权责任，赔偿 26 万余元。</p>\n<p>当时，阿里云公司表示：“作为云服务器提供商，既没有任何权利去查看用户的信息内容，也没有任何理由去调用用户的数据。只有收到司法部门的正式裁决和通知，阿里云公司才会依照法律要求配合司法部门协助调查。”</p>\n<p>至此，历时四年，北京知识产权法院最终确定阿里云公司不承担任何法律责任。</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":"我不喜欢 Go 语言的十个理由","publish":true,"cover":"","showCover":true,"date":"2019-06-17","category":"go","url":"https://www.infoq.cn/article/sVaeA7Y3pei2sYy_lK9e","author":"Lawrence 译者 阿拉丁","translator":"","tags":["go"],"priority":1},"html":"<ol>\n<li>Go 语言使用首字母大小写来决定标识符的可见性</li>\n<li>在 Go 语言里，结构体不会显式声明它实现了哪些接口，而是通过匹配方法签名来辨别</li>\n<li>Go 语言中没有异常，而是通过多个返回值来返回错误</li>\n<li>Go 语言里有很多“神奇”的行为</li>\n<li>因为 Go 语言的首字母大写约定，很容易出现很多相同的标识符</li>\n<li>要进行 Go 代码自动生成并不容易 </li>\n<li>Go 语言没有三元运算符（?:）</li>\n<li>sort 接口很笨</li>\n<li>缺少泛型</li>\n<li>这是个小问题，但足以说明 Go 语言设计者没有完全站在程序员的角度考虑问题</li>\n</ol>\n<p>有的网友对作者的观点表示认同，并表示虽然会将 Go 语言作为一种备用的编程语言，但如无必要不会再去用它。有的网友则觉得作者提出的大部分缺点都不是问题，并希望 Go 语言保持初心，不要随意修改。</p>"}},{"node":{"frontmatter":{"title":"V8 发布 v7.6","publish":true,"cover":"https://v8.dev/_img/v8-release-76/json-parsing.svg","showCover":true,"date":"2019-06-22","category":"nodejs","url":"https://v8.dev/blog/v8-release-76","author":"Adam Klein 摘译 Ka","translator":"","tags":["v8"],"priority":1},"html":"<ul>\n<li>JSON.parse获得差不多两倍性能提升</li>\n<li>Frozen/sealed 数组性能提升</li>\n<li>支持Promise.allSettled</li>\n</ul>"}},{"node":{"frontmatter":{"title":"一张图说明 html5 布局元素","publish":true,"cover":"https://res.cloudinary.com/css-tricks/image/upload/c_scale,w_1176,f_auto,q_auto/v1560084994/sections-diagram_gwnulb.png","showCover":true,"date":"2019-06-20","category":"frontend","url":"https://css-tricks.com/how-to-section-your-html/","author":"Daniel Tonon","translator":"","tags":["html5"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"管理 docker 里的 nodejs 内存","publish":true,"cover":"","showCover":true,"date":"2019-06-20","category":"nodejs","url":"https://developer.ibm.com/articles/nodejs-memory-management-in-container-environments/","author":"Ravali Yatham","translator":"","tags":["docker"],"priority":1},"html":"<p>--memory 与 <a href=\"https://nodejs.org/api/cli.html#cli_node_options_options\">--max-old-space-size</a>配合</p>\n<ul>\n<li>\n<p>docker\n<code class=\"language-text\">docker run --memory 1000000b --interactive --tty &lt;imagename&gt; bash</code> 决定 docker contaner 最多可用多少内存</p>\n</li>\n<li>\n<p>docker 内部脚本 <code class=\"language-text\">node --max_old_space_size=1024 test-fatal-error.js</code> 告诉 nodejs 可用多少内存</p>\n</li>\n<li>\n<p><code class=\"language-text\">--max_old_space_size</code> 以 megabyte(兆字节) 做单位</p>\n</li>\n<li>\n<p><code class=\"language-text\">process.memoryUsage()</code>以 bytes(字节)做单位</p>\n</li>\n<li>\n<p>理论上 32 位 nodejs 默认不超过 700MB；64 位不超过 1400MB。</p>\n</li>\n<li>\n<p>实际上往往还是决定于<code class=\"language-text\">--memory</code> 赋值的 container 内存大小</p>\n</li>\n</ul>"}},{"node":{"frontmatter":{"title":"微前端？react-vue一起用","publish":true,"cover":"https://res.cloudinary.com/practicaldev/image/fetch/s--Ugkc02A1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/wstpdc9ie6iw77qfeam7.jpg","showCover":true,"date":"2019-06-20","category":"frontend","url":"https://dev.to/dabit3/building-micro-frontends-with-react-vue-and-single-spa-52op","author":"Nader Dabit","translator":"","tags":["react"],"priority":1},"html":"<p>微服务还不够，微前端也出现了，<a href=\"https://alili.tech/archive/11052bf4/\">去年 2018 就有此概念提出</a>。</p>\n<p>如果你想，也可以 react,vue 一起用。</p>\n<p>使用<a href=\"https://single-spa.js.org/\">Single SPA</a>。\n<a href=\"https://github.com/dabit3/micro-frontend-example\">代码示例</a></p>\n<p>为什么要这么做？也许是由于整合多个团队的已有代码。</p>\n<blockquote>\n<p>用户会用这样的“百衲衣”界面吗？</p>\n</blockquote>"}},{"node":{"frontmatter":{"title":"硅谷 it 薪水全透明了","publish":true,"cover":"","showCover":true,"date":"2019-06-20","category":"other","url":"https://www.infoq.cn/article/HRIQ_0OJQ6sl7aULuXvc","author":"Kif Leswing 译者 无明","translator":"","tags":["career"],"priority":1},"html":"<p><a href=\"https://www.levels.fyi/\">硅谷公司薪水和级别</a>\n谷歌和 Facebook 是如何给工程师定职级和薪水的？</p>\n<ul>\n<li>起薪 15 万美元</li>\n<li>职级系统的一个不好地方在于它会形成一种“要么晋升，要么出局”的文化，而且会让大公司的多元化问题进一步恶化。</li>\n<li>“这对公平性和多元化产生一定的影响。如果一些人因为具备较高的谈判技巧而获得较高的薪水，那么总有一些人会因为谈判能力不突出而拿不到满意的薪酬”。</li>\n<li>“大部分工程师分布在 L3 和 L5 之间。在大部分公司里，员工等级就是职业等级，他们的余生可能就只能处在当前的等级上”。</li>\n<li>“技术人对管理不太感兴趣，他们不想成为管理者，只想继续从事技术工作”。</li>\n</ul>"}},{"node":{"frontmatter":{"title":"黑客帝国矩阵字幕动画实现","publish":true,"cover":"","showCover":true,"date":"2019-06-20","category":"frontend","url":"https://codepen.io/yuanchuan/pen/YoqWeR","author":"Yuan Chuan","translator":"","tags":["animation"],"priority":1},"html":"<p class=\"codepen\" data-height=\"265\" data-theme-id=\"0\" data-default-tab=\"js,result\" data-user=\"yuanchuan\" data-slug-hash=\"YoqWeR\" style=\"height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;\" data-pen-title=\"Matrix digital rain (animated version)\">\n  <span>See the Pen <a href=\"https://codepen.io/yuanchuan/pen/YoqWeR/\">\n  Matrix digital rain (animated version)</a> by yuanchuan (<a href=\"https://codepen.io/yuanchuan\">@yuanchuan</a>)\n  on <a href=\"https://codepen.io\">CodePen</a>.</span>\n</p>\n<script async src=\"https://static.codepen.io/assets/embed/ei.js\"></script>"}},{"node":{"frontmatter":{"title":"可编辑表格组件tui不再依赖jquery","publish":true,"cover":"https://user-images.githubusercontent.com/18183560/42144044-de298b02-7df3-11e8-8bbd-dc824ae0df52.png","showCover":true,"date":"2019-06-22","category":"frontend","url":"https://github.com/nhn/tui.grid","author":"TOAST UI","translator":"","tags":["grid"],"priority":1},"html":""}}]}}