FEX 技术周刊 - 2019/09/16
A lighter V8
In late 2018 we started a project called V8 Lite, aimed at dramatically reducing V8’s memory usage. Initially this project was envisioned as a separate Lite mode of V8 specifically aimed at low-memory mobile devices or embedder use-cases that care more about reduced memory usage than throughput execution speed. However, in the process of this work, we realized that many of the memory optimizations we had made for this Lite mode could be brought over to regular V8 thereby benefiting all users of V8. In this post we highlight some of the key optimizations we developed and the memory savings they provided in real-world workloads.
The Philosophy of Computer Science
Please note that this is a 28 megabyte PDF so only click through if you want to save what is a quite remarkable looking 900 page book covering the breadth of computer science and its relationship to philosophy, ethics, and more.
Don’t get locked up into avoiding lock-in
A significant share of architectural energy is spent on reducing or avoiding lock-in. That’s a rather noble objective: architecture is meant to give us options and lock-in does the opposite. However, lock-in isn’t a simple true-or-false matter: avoiding being locked into one aspect often locks you into another. Also, popular notions, such as open source automagically eliminating lock-in, turn out to be not entirely true. Time to have a closer look at lock-in, so you don’t get locked up into avoiding it!
Perspectives from Contributing to Angular
The Angular framework is easily the largest and most complex codebase I have worked with, and has taught me valuable ideas about software development. This post discusses what I’ve learned about understanding and working on large codebases, and how my confidence in open-source contribution has changed since working on Angular.
[译]亚马逊 CTO 的“中台论”
Werner Vogels 是 Amazon.com 的 CTO，他撰写了一篇文章，总结 AWS 这二十多年来，如何通过变革应用程序架构、调整企业组织架构等方式，让构建现代应用程序的客户“将更多时间花在定义业务逻辑上，扩展系统以轻松满足高峰期客户需求，提高敏捷性，同时更快、更频繁地向市场发布新功能”。在文中他提到亚马逊“庞大的整体式‘书店’应用程序以及臃肿的数据库极大限制了我们的速度与敏捷性。每当我们打算为客户提供新的功能或者产品，我们就必须在专为书店设计的应用程序当中编辑甚至重写大量代码”，将组织架构调整为小团队并“赋予他们对应用程序内特定部分的更多操作权限”，通过改变对技术的运用方式，业务交付速度提升非常明显，比如某汽车领域客户将将新功能的推出时间由六个月缩短至一周。这篇文章体现的，对比我们现在倡导的“中台论”，很多地方都不谋而合了。也可谓是亚马逊的“中台论”，虽然他们并没有使用这个词。
那么，什么是“10x 工程师”呢？ Kirani 在 Twitter 上没有确切给出定义。我们假定 10x 工程师的生产率是普通工程师的 10 倍。在大家吐槽这个定义之前，我要澄清一下。我把输出作为开发组或团队的输出来进行测量，而不是作为个人的输出。因此，我对“10x 工程师”的定义是: 想较于公司雇用的其他人，10x 工程师能让团队的输出增加 10 倍。从 Twitter 上给出评估列表后，标识“10x 工程师”的方法发生了很大的变化。我用来标识 “10x 工程师”的 11 个方法如下。
王者之战，下一代高性能跨平台 UI 渲染引擎
本文主要阐述目前主流的跨平台渲染引擎以及目前关于渲染引擎的探索，目前各种渲染引擎并不是一成不变的，都在蓬勃发展。如 Blink 的 Slimming Paint 项目采用和 Native View 相同的策略， Render Layer 只输出 Display List ，由 CC 根据策略是采用 Layer Compositor 还是 Direct GPU Raster 思路？Firefox 的 WebRender 渲染引擎，尝试把 JS 的执行， Layout、Paint 的执行并行化，并采用更高级的 GPU 绘制元素的方式。相信未来一定会涌出不少优秀的跨平台 UI 渲染引擎。
本文是淘宝前端技术专家——徐乾伟（烧鹅）分享的淘宝 Web 3D 应用与游戏开发实战，这个话题在业界被谈及得比较少。今天将会从移动、3D、游戏三种交叉的话题来和大家探讨。接下来和小编一起从初试 Web 3D、使用 WebGL、工作流相关的游戏编辑器三个部分来了解吧~
Horrible Interfaces and How to Build Them
This entertaining talk from React Rally looks at a variety of ‘horrible’ Web-based interface approaches and the underlying technologies involved.
React’s useEffect and useRef Explained for Mortals
Sometimes the pantheon of React Gods have a hard time translating their wisdom into language the rest of us can understand. It usually goes like this: You hit a snag with React, google your issue, and read a blog or Stack Overflow post with some advice that makes you feel more lost than when you started.
5G Will Definitely Make the Web Slower, Maybe
So network performance stands to get much faster very soon. That should alleviate the web’s performance problems right? Well, it should, but I don’t expect it will. At least not soon. If recent trends continue, 5G just might make web performance worse, not better, for the average person.
CSRF is (really) dead
A little while back I wrote a blog post about how “CSRF is dead”. It focused on SameSite cookies, a powerful yet simple feature to protect your website against CSRF attacks. As powerful as it was, and as much as it will kill CSRF, you had to enable it on your site, and that was the problem. Now, we’re solving that problem.
Machine Learning For Front-End Developers With Tensorflow.js
Analyzing the Wikipedia DDoS Attack
On September 6th starting at 10:40 am Pacific time, ThousandEyes detected a major disruption of user access to Wikipedia sites from around the world that lasted nine hours. Wikipedia’s German Twitter account shared that the site was “being paralyzed by a massive and very broad DDoS attack,” as translated from the below.
Running GitHub on Rails 6.0
On August 26, 2019, the GitHub application was deployed to production with 100 percent of traffic on the newest Rails version: 6.0. This change came just 1.5 weeks after the final release of Rails 6.0. Rails upgrades aren’t always something companies announce, but looking back at GitHub’s history of being on a custom fork of Rails 3.2, this upgrade is a big deal. It represents how far we’ve come in the last few years, and the hard work and dedication from our upgrade team made it smoother, easier, and faster than any of our previous upgrades.
Is serverless the end of ops?
Weighing some of the pros and cons of serverless architecture.
DevOps didn’t exist when I started as a developer: How this one principle changed my career
When asked to write a “What is DevOps?” post, I decided to take an approach that was different from the many others who have written on the subject. In this post, I’m going to define DevOps based on my decades of experience working in tech. I’ll traverse my professional timeline discussing how DevOps came into my life and expressing how it impacted me and my chosen career.
A Technical Introduction to MemSQL
This is a brief technical backgrounder on MemSQL, our features, our architecture, and so on. MemSQL: we exist. Very important first point. We have about 50 engineers scattered across our San Francisco and Seattle offices for the most part, but also a various set of offices across the rest of the country and the world.
The Beauty of Functional Languages in Deep Learning — Clojure and Haskell
TensorFlow and PyTorch in Python are popular, as is the Keras package in R. However, in the production of deep learning systems, performance and safety are two issues that drive companies to choose functional programming languages such as Clojure and Haskell instead.
Nearly all retro game systems generate colors in some variant of RGB encoding. But the raw pixel colors are often designed for very different screens than those that emulators typically run on. In this article, I’ll walk through the importance of color emulation, and provide some example code and screenshots. The most common target display type these days are LCD panels. These are known for having very poor black levels. The distinction between TN, PVA, and IPS does not factor too much into this. Sometimes CRTs are used by enthusiasts, and OLED screens, especially on phones and tablets, are slowly becoming a thing. But for this article, the focus will be primarily on LCDs, though this technique is important for all display types.
MiniApp Standardization White Paper
This document introduces a new format for mobile application, named MiniApp, which is a very popular hybrid solution relies on Web technologies but also integrates with capabilities of Native Apps.
Flutter news from GDD China: uniting Flutter on web and mobile, and introducing Flutter 1.9
At Google Developer Days, our flagship conference for Chinese developers, we used the keynote to announce our latest stable release: Flutter 1.9. This release is our biggest update yet with more than 1,500 PRs from more than 100 contributors. The new features and updates span a wide range, from support for macOS Catalina and iOS 13 to improved tooling support, as well as new Dart language features and new Material widgets.
Evolving “nofollow” – new ways to identify the nature of links
Nearly 15 years ago, the nofollow attribute was introduced as a means to help fight comment spam. It also quickly became one of Google’s recommended methods for flagging advertising-related or sponsored links. The web has evolved since nofollow was introduced in 2005 and it’s time for nofollow to evolve as well. Today, we’re announcing two new link attributes that provide webmasters with additional ways to identify to Google Search the nature of particular links. These, along with nofollow, are summarized below: rel=”sponsored”, rel=”ugc”, rel=”nofollow”.
Now Available – Amazon Quantum Ledger Database (QLDB)
As a ledger database, QLDB is designed to provide an authoritative data source (often known as a system of record) for stored data. It maintains a complete, immutable history of all committed changes to the data that cannot be updated, altered, or deleted. QLDB supports PartiQL SQL queries to the historical data, and also provides an API that allows you to cryptographically verify that the history is accurate and legitimate. These features make QLDB a great fit for banking & finance, ecommerce, transportation & logistics, HR & payroll, manufacturing, and government applications and many other use cases that need to maintain the integrity and history of stored data.
Sequelize ORM npm library found vulnerable to SQL Injection attacks
The good news is the problem is solved and you just need to update if you’re using Sequelize. But if you want to learn about how the vulnerability was discovered and how it could be abused, read on.
Proxying packages with GitHub Package Registry and other updates
The npmjs.com proxy enables you to use GitHub Package Registry as the source of your organization’s npm packages and the proxied source of packages from npm. Try it out—just change the .npmrc file in your project directory.
The Top Programming Languages 2019
Python remains the big kahuna, but specialist languages hold their own.
WebGPU and WSL in Safari
WebGPU is a new API being developed by Apple and others in the W3C which enables high-performance 3D graphics and data-parallel computation on the Web. This API represents a significant improvement over the existing WebGL API in both performance and ease of use. Starting in Safari Technology Preview release 91, beta support is available for WebGPU API and WSL, our proposal for the WebGPU shading language.
Caniuse and MDN compatibility data collaboration
MDN’s browser compatibility data is now integrated into the popular caniuse website, with the goal of surfacing even more web compatibility info to web developers. 另附：Firefox’s Test Pilot Program Returns with Firefox Private Network Beta.
React Suite 4.0
A suite of React components, sensible UI design, and a friendly development experience.
Immer (German for: always) is a tiny package that allows you to work with immutable state in a more convenient way. It is based on the copy-on-write mechanism.
A highly customisable and versatile GraphQL client for React.
An Interactive Introduction to Fourier Transforms
Fourier transforms are a tool used in a whole bunch of different things. This is an explanation of what a Fourier transform does, and some different ways it can be useful. And how you can make pretty things with it.
augmented-ui from PropJockey
augmented-ui enables you to create cyberpunk inspired ui for any size element, on any web page or app, with very little effort and is free to use in any project
Tiler is a tool to create an image using all kinds of other smaller images (tiles). It is different from other mosaic tools since it can adapt to tiles with multiple shapes and sizes (i.e. not limited to squares). An image can be built out of circles, lines, waves, cross stitches, legos, minecraft blocks, paper clips, letters, … The possibilities are endless!
Universal database layer for the client, server & mobile devices. It’s like Lego for databases.
SQL concepts: from A to Z
SQL concepts that pop up during training, if you need a refresher or have a junior analyst in your life who needs a resource to refer to.
An easy-to-use BI server built for SQL lovers. Power data analysis in SQL and gain faster business insights.
Project Naptha automatically applies state-of-the-art computer vision algorithms on every image you see while browsing the web. The result is a seamless and intuitive experience, where you can highlight as well as copy and paste and even edit and translate the text formerly trapped within an image.
CURL 7.66.0 – THE PARALLEL HTTP/3 FUTURE IS HERE
I personally have not done this many commits to curl in a single month (August 2019) for over three years. This increased activity is of course primarily due to the merge of and work with the HTTP/3 code. And yet, that is still only in its infancy…
A high-speed network driver written in C, Rust, Go, C#, Java
Ixy is an educational user space network driver for the Intel ixgbe family of 10 Gbit/s NICs (82599ES aka X520, X540, X550, X552, …). Its goal is to show that writing a super-fast network driver can be surprisingly simple, check out the full description in the main repository of the C implementation to learn about the basics of user space drivers. Ixy was originally written in C as lowest common denominator of system programming languages, but it is possible to write user space drivers in any programming language.
Introduction to Ant Design System for Figma
Hello everyone, my name is Mateusz and I’m the product designer behind Ant Design System for Figma. I’ve been using Figma for almost 3 years and decided to create an ultimate solution to help me in my everyday work. In this short article you will learn what it is, why I created it and how it can help you. You will also see how you can use the system and how it works.
The Gradual Design System: How We Built Slack Kit
A group of engineers, designers, and writers began to centralize these standards, documenting the bits and pieces, small and large, that make up Slack. We named it Slack Kit. It’s an evolving internal resource containing everything from typography to accessibility patterns. It helps us keep the product as consistent and accessible as possible, while speeding up design and engineering efforts. And with the release of our new client, it’s now used throughout Slack. It’s a system that grew retrospectively, taking advantage of lessons learned from early feature implementations to inform the patterns we wanted to codify. This post is about how we built it.
Stop Infinite Scrolling on Your Website - Now!
If you are still dilly-dallying on whether to use infinite scrolling or not, the only thing we would like to ask you is this- Does using infinite scrolling on your website put you at a great advantage vis-a-vis the normal interface with pagination? If the answer to the question is ‘Yes’, then please go ahead and use it. If not, do keep in mind that there are a lot of designing and application development challenges that are associated with this. If you are an eCommerce website, please don’t even think about using infinite scrolling. It can create a negative dent on your store’s traffic and sales.
Principles For Designing Better Products
As a general rule, to build something great is not about more hours and resources thrown at a problem, but less bullshit.
Don’t Listen To Customers – Why User Research Matters
“A lot of times, people don’t know what they want until you show it to them.” How many times have we heard customers tell us what they want, only to learn that it’s not really what they wanted? We end up confused and perplexed. This creates a problem. When we, as designers, do not challenge our clients’ responses in a thoughtful way, the entire product–and their business–can fail. But there’s a solution: in-depth user research focused on finding out what customers really want.
对数据可视化有兴趣的可以阅读由 AntV 带来的 墨者修齐 2019-09-16·Tableau 图表分类、从经典中学习图表设计、是什么让数据可视化更