FEX 技术周刊 - 2019/03/11
深阅读
JavaScript Performance Pitfalls in V8
https://ponyfoo.com/articles/javascript-performance-pitfalls-v8
In recent years, JavaScript engines have improved on all fronts. Not only did the peak performance improve, but engines also managed to deliver more consistent and predictable levels of performance. But heuristics can also easily work against you, and it helps to be aware of them. So today I’m gonna share some background on two subtle performance pitfalls in the V8 JavaScript engine. Being aware of these potential pitfalls might help you to resolve issues if you get bitten by these more easily.
Real virtuality: connecting real things to virtual reality using web technologies
https://hacks.mozilla.org/2019/03/connecting-real-things-to-virtual-worlds-using-web/
This is the story of our lucky encounter at FOSDEM, the largest free and open source software event in Europe. We are two developers, focused on different domains, who saw an opportunity to continue our technical conversation by building a proof of concept. Fabien Benetou is a developer focused on virtual reality and augmented reality. Phillipe Coval works on the Internet of Things. Creating a prototype gave the two of us a way to explore some ideas we’d shared at the conference.
Case Study: Npm uses Rust for its CPU-bound bottlenecks
https://www.rust-lang.org/static/pdfs/Rust-npm-Whitepaper.pdf
The challenges that npm faces demand efficient and scalable solutions. When a service can be deployand-forget, that saves valuable operations time and lets them focus on other issues. npm employees also value having a helpful community around any technology they use. Rust fits all these criteria and is currently in use as part of npm’s stack.
另附:Building fast interpreters in Rust.
How Are Function Components Different from Classes?
https://overreacted.io/how-are-function-components-different-from-classes/
Are there any fundamental differences between React functions and classes at all? Of course, there are — in the mental model. In this post, I will look at the biggest difference between them.
Cache-Control for Civilians
https://csswizardry.com/2019/03/cache-control-for-civilians/
The best request is the one that never happens: in the fight for fast websites, avoiding the network is far better than hitting the network at all. To this end, having a solid caching strategy can make all the difference for your visitors. That being said, more and more often in my work I see lots of opportunities being left on the table through unconsidered or even completely overlooked caching practices. Perhaps it’s down to the heavy focus on first-time visits, or perhaps it’s a simple lack of awareness and knowledge? Whatever it is, let’s have a bit of a refresher.
前端专业方向的尽头
https://www.zhangxinxu.com/life/2019/03/fe-end/
每个人都是独立的个体,没有什么按部就班,没有什么理所当然,关键要清楚自己要的什么,自己拥有的是什么,自己能够到达的彼岸有多远。如果三五年前,我觉得自己的专业对团队对企业的贡献到头了,我也会考虑向人向事这一块转型,只是,当技术积累突破到一定阶段后,你心里面就会明白,自己能够做的事情还有很多,自己可以走出一条别人没有走过的纯专业方向的探索之路。
设计可维护可扩展的系统
https://zhuanlan.zhihu.com/p/58228892
近期,华为腾讯都宣布投入重金和精力在技术建设上,华为更是宣布全面提升软件质量,视高质量代码为尊严和个人荣誉。这是一个非常大的话题,涉及到意识观念、方法论、解决方案、流程制度和组织结构等方面。本文落脚在方法论和解决方案上(文末有其他部分的链接),重点介绍部分软件开发思想,讲解如何利用设计模式、设计原则和编程范式,设计易懂、可扩展的和高内聚低耦合的系统。也会讲解这些思想的实现,你可以将这些设计思想和实现,纳入工具箱,选择适合的进行设计开发。
爱奇艺自研UI引擎渲染技术分析
https://mp.weixin.qq.com/s?__biz=MzIyMjQ0MTU0NA==&mid=2247488131&idx=2&sn=c0d5b6c5cbd0b661c634f1826cc95d90
我们都知道,好的视频内容可以吸引更多用户。那么在好的内容基础上,我们希望用更好的架构及渲染技术,不断迭代出更轻、更炫、更平滑的客户端,保证用户有更好的体验。在此驱动下我们致力于开发一套高效的跨平台渲染引擎Lyra,为用户提供新的体验。本文主要详细阐述在PC客户端上引入的新渲染技术。
Chameleon原理首发:其它跨多端统一框架都是假的
https://mp.weixin.qq.com/s/nabaad5UnnNUZovEV8df-Q
以往我们说某一功能跨多端,往往是指在诸如 PC、移动等不同类型的设备之间都能实现;或者更加具体一点,指的是“跨平台”,可能是大到跨操作系统,比如 Windows、macOS、Linux、iOS 与 Android 等,可能是小到跨某个具体技术的不同实现库。但是今天我们要介绍的是关于跨 MVVM 架构模式各种环境的场景。
[译]Web渲染那些事儿
https://segmentfault.com/a/1190000018374048
作为开发者,经常需要面对影响整个应用架构的决策。而Web开发者的核心决策之一,就是应用逻辑与渲染工作的实现,应处于架构中的什么位置(译注:客户端 or 服务器?)。现在有很多不同构建网站的方法,因此这些决策变得愈加困难。我们对这一领域的理解,来自于我们过去几年在 Chrome 工作中,与大型网站的交流。从广义上讲,我们鼓励开发人员考虑通过一种称为 rehydration 的方式,进行服务器渲染或静态渲染。
迈向 Tech Lead 之路
https://www.phodal.com/blog/path-to-tech-lead/
2019 年 1 月 19 日 ~ 2019 年 1 月 20 日,蹭了一个公司的 Tech Lead 培训—— Coach 来自 ThoughtWorks 中国区的两个资深 Tech Lead 和 ThoughtWorks 澳大利亚联邦区的资深 Tech Lead。两天的培训下来,学习到了不少的东西。内容只进不出,过些日子怕是会忘记了。于是,便有了这篇文章,一来记录下自己学习的东西;二来,结合自己的 “经验” 做一些总结。
在淘宝做前端的这三年
https://mp.weixin.qq.com/s/bqnLtbbiFa7rlKPyMwb-Fw
在淘宝做前端是我第一份签了劳动合同的工作,在这个人才济济的大公司里,接触了非常多的人和事物,也学到了非常多的东西、开阔了眼界。所以还是有必要做一个回顾和总结,一是自己备忘,二是或许对一些前端新人有所帮助,因为这篇文章会涉及到一些入职、职业规划、招聘、晋升、离职等方面的信息。
Computer science in JavaScript: Circular Doubly-linked lists
https://humanwhocodes.com/blog/2019/03/computer-science-in-javascript-circular-doubly-linked-lists/
This post is about modifying a doubly linked list (also called a linear doubly linked list) in such a way that the last node in the list points to the first node in the list, effectively making the list circular. Circular doubly linked lists are interesting because they allow you to continuously move through list items without needing to check for the end of the list. You may encounter this when creating playlists or round-robin distribution of traffic to servers.
How a Monolith Architecture Can Be Transformed into Serverless
https://dev.to/kylegalbraith/how-a-monolith-architecture-can-be-transformed-into-serverless-8l4
In this post, I want to focus on how a monolith application can transform into serverless over time. We already know that anything brand new could be built using serverless. But how do we take the application or service we have today and make it serverless? The simplest answer is that we rewrite it. But this is expensive from a development perspective and depends on what needs to be rewritten. I propose that we pause a second before we jump in and begin rewriting our codebases. Let’s look at how we would move the components of existing applications to serverless.
How not to design a wire protocol
http://esr.ibiblio.org/?p=8254
A wire protocol is a way to pass data structures or aggregates over a serial channel between different computing environments. Designing wire protocols is, like other kinds of engineering, an art that responds to cost gradients. It’s often gotten badly wrong, partly because of clumsy technique but mostly because people have poor intuitions about those cost gradients and optimize for the wrong things. In this post I’m going to write about those cost gradients and how they push towards different regions of the protocol design space.
How we made Firewall Rules
https://blog.cloudflare.com/how-we-made-firewall-rules/
In this blog post I tell the story of Cloudflare’s Page Rules mechanism and how Firewall Rules came to be. Along the way I’ll look at the technical choices that led to us building the new matching engine in Rust.
We Analyzed 13 Billion Log Entries – Here’s What We Learned
https://kinsta.com/blog/analyzing-log-entries/
We analyzed 13 billion (that’s right billion) log entries, and this time around we’ve decided to share all of our findings with you! We split the stats into three different sections: access logs, cache performance, and PHP engine.
Autotuning Cassandra to reduce latencies
https://vorstella.com/blog/autotuning-cassandra-to-reduce-latencies/
At Vorstella we’re building an AI expert that helps teams run distributed systems at scale. A while back our team was passing around some research papers about autonomous databases and optimizing system configurations, and they grabbed our attention. This post walks through how we used Bayesian Optimization to build an auto-tuning system for Cassandra and achieved a 43% latency reduction and an 80% throughput increase over documented best practices.
另附:2019 Database Trends – SQL vs. NoSQL, Top Databases, Single vs. Multiple Database Use.
Achieving 100k connections per second with Elixir
https://stressgrid.com/blog/100k_cps_with_elixir/
In this article, we look at scaling Elixir to handle 100k connections per second. The workload consists of 100k devices, each simply opening a TCP/IP connection, waiting for 1±10% seconds, and closing the connection. The test consists of three phases: a 15-minute rampup, 1 minute sustained load, and 15-minute rampdown.
What happened to OpenStack?
https://aeva.online/2019/03/what-happened-to-openstack/
I get asked this question fairly often during interviews, like people think that OpenStack is dead. I make a squishy face before answering. Here’s a hint: OpenStack is not dead, but something happened to it. The project is still quite healthy and is following the usual hype curve: OpenStack is finally mature enough that it’s less interesting to talk about, so it’s understandable that people think something happened.
Real-Time AR Self-Expression with Machine Learning
https://ai.googleblog.com/2019/03/real-time-ar-self-expression-with.html
One of the key challenges in making these AR features possible is proper anchoring of the virtual content to the real world; a process that requires a unique set of perceptive technologies able to track the highly dynamic surface geometry across every smile, frown or smirk. To make all this possible, we employ machine learning (ML) to infer approximate 3D surface geometry to enable visual effects, requiring only a single camera input without the need for a dedicated depth sensor.
Design Principles for Mathematical Engineering in Experimentation Platform at Netflix
https://medium.com/netflix-techblog/design-principles-for-mathematical-engineering-in-experimentation-platform-15b3ea143b1f
Mathematical engineers at Netflix in particular work on the scalability and engineering of models that estimate treatment effects. They develop scientific libraries that scientists can apply to analyze experiments, and also contribute to the engineering foundations to build a scientific platform where new research can graduate to. In order to produce software that improves a scientist’s productivity we have come up with the following design principles.
Exploring Neural Networks with Activation Atlases
https://distill.pub/2019/activation-atlas/
In this article we introduce activation atlases to this quiver of techniques. (An example is shown at the top of this article.) Broadly speaking, we use a technique similar to the one in CNN codes, but instead of showing input data, we show feature visualizations of averaged activations. By combining these two techniques, we can get the advantages of each in one view — a global map seen through the eyes of the network.
Linux 5.0: A major milestone with minor improvements
https://www.zdnet.com/article/linux-5-0-a-major-milestone-with-minor-improvements/
It’s not like Linus Torvalds didn’t warn us. Linux 5.0 is out, but there’s no big updates to be found here.
新鲜货
What’s new in the Go Cloud Development Kit
https://blog.golang.org/gcdk-whats-new-in-march-2019
Last July, we introduced the Go Cloud Development Kit (previously referred to as simply “Go Cloud”), an open source project building libraries and tools to improve the experience of developing for the cloud with Go. We’ve made a lot of progress since then – thank you to early contributors! We look forward to growing the Go CDK community of users and contributors, and are excited to work closely with early adopters.
Bildr
http://www.bildr.com/
Design. Build. Publish. Create full-stack web apps with or without code.
W3C approves WebAuthn as the web standard for password-free logins
https://venturebeat.com/2019/03/04/w3c-approves-webauthn-as-the-web-standard-for-password-free-logins/
W3C declared that the Web Authentication API (WebAuthn) is now an official web standard. First announced by the W3C and the FIDO Alliance in November 2015, WebAuthn is now an open standard for password-free logins on the web. It is supported by W3C contributors, including Airbnb, Alibaba, Apple, Google, IBM, Intel, Microsoft, Mozilla, PayPal, SoftBank, Tencent, and Yubico.
CKEditor 5 v12.0.0 with inline widgets and distraction free editor released
https://ckeditor.com/blog/CKEditor-5-v12.0.0-with-inline-widgets-and-distraction-free-editor-released/
We are happy to announce the release of CKEditor 5 v12.0.0. This editor version brings many new features (editor placeholder, inline widgets, CKEditor 5 inspector), a new editor build, many improvements for plugin authors as well as integration developers and, of course, some new guides in our documentation. It is a major release, so there are some breaking changes for plugin authors, possibly more breaking changes for developers who created their own rich text editors and a few changes that will affect CKEditor 5 integrations.
Ionic Release: 4.1 Hydrogen Out Now!
https://blog.ionicframework.com/ionic-release-4-1-hydrogen-out-now/
We are excited to announce that our first feature release after Ionic 4.0 is out now! In keeping true to using code names from the periodic table of elements, Ionic 4.1 is named Hydrogen (after the initial release of Neutronium). We have some exciting new features to share in this release, so let’s dive right in!
Storybook 5.0
https://medium.com/storybookjs/storybook-5-0-db1d0f9c83b8
Welcome to the future of component development! We’re kicking off 2019 with Storybook 5.0 (SB5), our biggest release to date. Here’s what’s in it: Complete overhaul of Storybook’s developer experience; Theme-ready component library; Evolved front-end architecture for addons; Brand new Storybook website.
另附:Storybook 5 Migration Guide.
Cherow
https://github.com/cherow/cherow
A very fast and lightweight, standards-compliant, self-hosted javascript parser with high focus on both performance and stability.
Ink
https://github.com/vadimdemedes/ink
React for CLIs. Build and test your CLI output using components.
NLP.js
https://github.com/axa-group/nlp.js
An NLP library for building bots, with entity extraction, sentiment analysis, automatic language identify, and so more.
Handtrack.js: Hand Tracking Interactions in the Browser using Tensorflow.js and 3 lines of code
https://hackernoon.com/handtrackjs-677c29c1d585
Handtrack.js library allows you track a user’s hand (bounding box) from an image in any orientation, in 3 lines of code.
autocannon
https://github.com/mcollina/autocannon
A HTTP/1.1 benchmarking tool written in node, greatly inspired by wrk and wrk2, with support for HTTP pipelining and HTTPS. On my box, autocannon can produce more load than wrk and wrk2.
Ghidra, NSA’s reverse-engineering tool
https://www.nsa.gov/resources/everyone/ghidra/
Ghidra is a software reverse engineering (SRE) framework developed by NSA’s Research Directorate for NSA’s cybersecurity mission. It helps analyze malicious code and malware like viruses, and can give cybersecurity professionals a better understanding of potential vulnerabilities in their networks and systems. NSA will be making Ghidra available to the public as an open source release in time for its first public demonstration at the 2019 RSA Conference this March.
PureOS is Convergent, Welcome to the Future
https://puri.sm/posts/converging-on-convergence-pureos-is-convergent-welcome-to-the-future/
Purism is beating the duopoly to that dream, with PureOS: we are now announcing that Purism’s PureOS is convergent, and has laid the foundation for all future applications to run on both the Librem 5 phone and Librem laptops, from the same PureOS release.
Introducing Kraken, an Open Source Peer-to-Peer Docker Registry
https://eng.uber.com/introducing-kraken/
To solve performance issues with our legacy Docker registry stack, Uber’s Cluster Management team developed Kraken, an open source, peer-to-peer (P2P) Docker registry.
另附:Open Sourcing Peloton, Uber’s Unified Resource Scheduler.
An introduction to distributed systems
https://github.com/aphyr/distsys-class
This outline accompanies a 12-16 hour overview class on distributed systems fundamentals. The course aims to introduce software engineers to the practical basics of distributed systems, through lecture and discussion. Participants will gain an intuitive understanding of key distributed systems terms, an overview of the algorithmic landscape, and explore production concerns.
Functional Programming in OCaml
http://www.cs.cornell.edu/courses/cs3110/2019sp/textbook/
Based on courses taught by Michael R. Clarkson, Robert L. Constable, Nate Foster, Michael D. George, Dan Grossman, Daniel P. Huttenlocher, Dexter Kozen, Greg Morrisett, Andrew C. Myers, Radu Rugina, and Ramin Zabih. This work is based on 20 years worth of course notes and intellectual contribution by the authors named above; teasing out who contributed what is, by now, not an easy task. The primary compiler and author of this work in its form as a unified textbook is Michael R. Clarkson.
Introduction to Theoretical Computer Science
https://introtcs.org/public/index.html
This is a textbook in preparation for an introductory undergraduate course on theoretical computer science. I am using this text for Harvard CS 121.
Python Data Science Handbook
https://github.com/jakevdp/PythonDataScienceHandbook
The book introduces the core libraries essential for working with data in Python: particularly IPython, NumPy, Pandas, Matplotlib, Scikit-Learn, and related packages. Familiarity with Python as a language is assumed; if you need a quick introduction to the language itself, see the free companion project, A Whirlwind Tour of Python: it’s a fast-paced introduction to the Python language aimed at researchers and scientists.
另附:Machine Learning for Beginners: An Introduction to Neural Networks.
设计
Guidelines for Human-AI Interaction
https://medium.com/microsoft-design/guidelines-for-human-ai-interaction-9aa1535d72b9
We’re excited to share a set of Guidelines for Human-AI Interaction. These 18 guidelines can help you design AI systems and features that are more human-centered. Based on more than two decades of thinking and research, they have been validated through a rigorous study published in CHI 2019.
另附:AI Guidelines in the Creative Process.
It has never been this easy to work better together
These are exciting times to be alive in friends! With the free release of Sketch2React v1 we are giving everyone a fighting chance to really try out our version of the future and how we see collaboration going forward. First a recap if you’re not 100% sure what you can do with our free design to code component framework.
Scaling the Craft of Design
https://medium.com/google-design/scaling-the-craft-of-design-490fdb0b567b
Design Operations (DesignOps) is an emerging function/methodology uniquely aligned to help solve certain classes of problems for evolving and scaling design organizations. In this article, I’ll share my approach to decoding this for myself through conducting my own research and engaging with a community of leaders in the space. With many inputs, it’s important to be mindful that every design organization is different — with its unique variables and challenges — as is how DesignOps takes shape.
Data-driven Design and Generative Design
https://www.toptal.com/designers/product-design/data-driven-generative-design-overview
At the intersection of great design and better user experiences are two key concepts that complement each other while also being distinct in their approach.
How eBay Uses Microinteractions to Delight Customers
https://www.ebayinc.com/stories/blogs/tech/how-ebay-uses-microinteractions-to-delight-customers-in-china/
At eBay, we’re always looking for ways to truly localize for all of our international markets. Our design team has spent some time designing and experimenting with exciting new experiences and microinteractions for shoppers in China.
10 principles to build interfaces you won’t hate
https://www.contentful.com/blog/2019/03/05/10-principles-building-interfaces-design/
Having a high level of usability in products creates engaged users, but there are some challenges involved. The issue product developers commonly run into is getting people to talk about the usability of products in a structured and descriptive way. Traditional forms of critique such as “crappy” and “slow” are not useful for designers. They need more specific information that will help them produce actionable tasks to improve the product. We use usability heuristics to establish a framework for feedback.
产品及其它
调查全球 98,000 名程序员发现,PHP 遭厌弃,前端岗已饱和
https://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650715128&idx=1&sn=b15ad15dd691144ee3af07480a5140d3
位于美国旧金山的知名招聘公司 Hired(专门为 Facebook、Uber 等顶级公司招聘人才)在走访全球 10,000 多家企业、邀请 98,000 名求职者参与其中之后正式发布了《2019 年软件开发者现状》调查报告,在以人工智能、机器学习、区块链、物联网等为首新技术打开互联网新纪元之际,与全球的开发者共同探讨技术圈最为流行的开发技能,编程语言以及市场最前沿趋势。
这5句大实话,送给如今的互联网产品团队
https://www.uisdc.com/most-common-startup-mistakes
在如今的互联网产品团队当中,很多问题都是「房间里的大象」,显而易见却常常被忽略。由于工作经常需要和许多互联网初创团队打交道,设计师 Eugen Eşanu 在今天的文章中说了5句大实话,每一句话都是针对一个具体而真实的问题而说的。也许它们会给你一些共鸣。
真正的CEO,是用人做事,不是做事用人
https://mp.weixin.qq.com/s?__biz=MzUyMDQ5NzI5Mg==&mid=2247503977&idx=1&sn=c6faac6a7ed7fb73878f661827ebadb1
改革开放40年,中国太多的创业者和企业家善于看外部世界,训练了把握商机、找风口、创新模式的能力。但是,他们很少向企业的内部看。向内看什么?看组织。美团联合创始人王慧文曾感慨:放眼中国互联网,真正有运营体系组织能力的,只有阿里巴巴。马云不止一次说,阿里最大的产品,不是互联网产品,是干部。马云提出过八个字:是“做事用人”还是“用人做事”?答案是肯定的,一个优秀的领导者是“用人做事”,而不是要做这件事了,去找人。
腾讯变革150天全记录
https://mp.weixin.qq.com/s/xCCNuCGEXySOST4QICYyjA
在2018年的危机当中,20岁的腾讯自上而下开启了一场前所未有的变革,投身未来20年产业互联网的新战场。作为一家拥有国民级应用的企业,腾讯每一次变革,都令公众与业界瞩目。为此,故事硬核采访了马化腾和他数十位同事,深度还原他们处理危机、调整架构、推翻自我、深入战场的全历程。
另附:腾讯生死战:一年内辞退10%中层管理,为年轻人让路。
– THE END –