
获得徽章 0
- Facebook 在听证会上被国会议员吊打:
国会议员:我很诧异 Facebook 选择 Rust 语言。我的第一个问题是,为什么选择 Rust 语言作为 Libra 的实现语言? 您是否认为它足够成熟来应对大型加密货币交易的安全挑战?
Facebook:我们拥有并控制这些代码(答非所问)
国会议员:看起来 Libra 是建立在 Rust 语言的每日构建(nightly release)之上的。 这很有意思,因为我们国防部发布项目不敢这么搞。 相对于正式版本,你们用到了 Rust 的每日构建版本哪些新特性? Facebook 是否认为它们依赖于 Rust 语言的非正式发布功能? 为什么选择每日构建版本?你认为这是原型阶段的一个功能吗?
Facebook:您说的太技术了,我不懂
国会议员:展开414 - 2018 年 Github 用户增数超 800 万,新增仓库数量超百分之四十,刚看到这一数据还是很震惊的。Github 没有因卖身微软而跌下神坛,依旧是世界各地 developer 的圣地,最大「同性社交」网站果然名不虚传。410
- 在群里看到有人提到React fiber,写一点个人的看法。
Fiber这个东西很有意思,我觉得它不是一蹴而就的,引出它的可能是性能问题,然后在这个思路上走下去发现了更多有意思的东西。
组件树是一个可能会很大很深的树,一次性的渲染通常需要递归地遍历整个树,这样在树很深的时候可能会导致栈溢出错误,而且整个渲染过程可能很长,导致掉帧。
解决的办法很简单,如果递归过程中可以随时退出并保存上下文,就像多线程切换时会保留栈那样,那么就可以分多次的遍历完整个树。
实现方式就是把在遍历过程中原本在栈上的数据保存成数据结构,比如当前遍历节点,它的children列表,上一级节点等,这个数据结构就是fiber。于是原本的遍历渲染变成了,遍历建立fiber树,然后分多次的遍历fiber树进行渲染。不过fiber实际上组成的不是一个树而是图,react把子节点实现成了链表,通过fiber的sibling连接起来,这样会有更好的遍历性能。
于是就会发现,原本的线性的栈现在变成了一个结构化的图,后者除了不会有栈溢出和可以部分遍历之外,还有一些有意思的区别。首先,栈是对计算机友好的线性结构,但是不容易调试,它随遍历过程递进又随之回退,我们几乎只能借助调试器来观察现场。而fiber是一个持久的结构,任何时候我们可以直接观察它整个的状态。其次,它使react的代码更加简明了,它将遍历和逻辑解偶了,不管是渲染还是什么只要对待一个fiber节点处理就好了。
这些区别产生的结果就是解放了想象力,一旦走到这里这个框架就形成了,react可以在fiber上加入更多功能而不必局限于最初对栈的模拟的初衷。比如用alternate(也是个fiber节点)保存最新的渲染结果,这样就可以异步地渐进式地更新整个UI,于是有了Time Slicing和Suspence。更进一步的,在fiber上保存和读取副作用,于是就有了hooks,函数组件一跃成为更好用的存在,函数线性的语法结构不仅让代码变短了,也更容易重构了。
这些想象力的产物又增加了生产力,比如有了React.lazy实现loading效果变得非常简单,那么设计师就可以设计更加用户友好的UI。Web之所以在用户界面上超越了native应用就是因为这方面生产效率高,所以越来越多的electron应用出现。我认为React的不断创新可能也会悄悄的改变UI的形态,而fiber的出现是一个重要的拐点。展开评论28 - 人才需求同比增长3.6倍 《中国人工智能 ABC 人才发展报告》发布
近日,移动招聘平台 BOSS 直聘携手百度、中国传媒大学联合发布《中国人工智能 ABC 人才发展报告》,报告分析了人工智能 ABC(Artificial Intelligence 人工智能、Big Data 大数据、Cloud Computing 云计算)岗位各类关键词,并提出新型人才培养模式。
报告指出,从 2018 年的人才供需状况来看,人工智能类岗位需求明显增多,行业对人工智能人才的需求趋于具象化,人工智能岗位下沉明显,其中尤以金融、智慧交通和智能制造等行业对人工智能人才需求最为旺盛。人工智能人才薪资待遇方面呈现明显上升趋势,但是人才水平良莠不齐,人才引进风险居于高位。展开评论3