FEX 技术周刊 - 2019/10/28
Node v13.0.0 (Current)
The V8 engine was updated to version 7.8. This includes performance improvements to object destructuring, memory usage and WebAssembly startup time. Node.js releases are now built with default full-icu support. This means that all locales supported by ICU are now included and Intl-related APIs may return different values than before. The minimum Xcode version supported for macOS was increased to 10. 另附：10 Years of Node with Gireesh Punathil of IBM.
Preparing for the Future with React Prereleases
To share upcoming changes with our partners in the React ecosystem, we’re establishing official prerelease channels. We hope this process will help us make changes to React with confidence, and give developers the opportunity to try out experimental features. This post will be most relevant to developers who work on frameworks, libraries, or developer tooling. Developers who use React primarily to build user-facing applications should not need to worry about our prerelease channels.
Open-sourcing Polynote: an IDE-inspired polyglot notebook
We are pleased to announce the open-source launch of Polynote: a new, polyglot notebook with first-class Scala support, Apache Spark integration, multi-language interoperability including Scala, Python, and SQL, as-you-type autocomplete, and more.
What is Serverless? The “2020” edition
I’ve spent most of this year avoiding talking about serverless as can be seen from previous blog posts such as Serverless is Doctrine, not a Technology and Cloud 2.0 is no longer King — Serverless has dethroned it. Discussions on various networks have tended to descend into discussions around the compute aspects of FaaS. Not only that, but I’ve tried to stay out of discussions, because it feels like too many big companies and marketing budgets are trying to “own” the word, to ensure that their technology is part of the movement. The word “serverless” has definitely been co-opted by a range of companies to fit their preferred technology that in my mind it doesn’t fit. 另附：Zoho Catalyst - The simplest serverless platform you’ll ever see.
Rethink: Serverless For Frontend
大概两个月前，为了给团队小伙伴分享我们目前做的事的价值，写了一篇 『Serverless For Frontend 前世今生』 。在那篇文章中，主要讲了进入每个阶段的缘由和产出的东西，但对演进背后的源动力的思考和阐述有所欠缺。在之后这段时间，一方面跟内外的同学交流，一方面在实践中去复盘，于是有了本分享。我希望讲清楚 Serverless For Frontend 的 Why 以及一部分目前看到的 What ，但不会讲太多 How ，因为都还在摸索中，且大家的基建都不一样，无从复制。本文，则主要是对分享的 Slide 的一些提炼，完整的 Slide 参见文末。另附：2019 JSConf China 《面向传统，Serverless 进化之路》分享文字版.
在圈内，开源一度被称为“集市”。相对封闭严格的传统企业 IT 文化，开源更强调自由开放的社区文化。InfoQ 追踪阿里巴巴多年，找到了阿里巴巴整个开源发展过程中的数位关键”赶集人“，试图了解这一中国近十年极具代表性的科技公司的开源历史。过去十年，阿里巴巴经历了淘宝的壮大，阿里云计算的成立，上市，双11节节攀升的流量，每一个阶段都有其存在的意义和目标，开源也随着这些变化而在不同的时期表现出不一样的状态。不变的是，阿里这群“赶集人”探索出了一条自主开源的道路，一走就是十个年头。
如何通过 DDD 降低软件开发的成本
DDD 是一个有效的方式，但是如果 DDD 的落地方式过于复杂，一定会催生出更简化的方式。即：复杂度同力一样不会消失，也不会凭空产生，它总是从一个物体转移到另一个物体或一种形式转为另一种形式。
本文将介绍一款全新的前端开发工具，希望它能给你的前端开发带来看起来和现在一样但其实又不那么一样的体验。如同它名字的前半部分，server，你可以简单地说，server-x（缩写为 svrx）就是一个本地服务器， 并且它还是一个功能丰富、使用便捷的轻量级服务器。
The problems of shared mutable state and how to avoid them
This blog post answers the following questions: What is shared mutable state? Why is it problematic? How can its problems be avoided? Sections marked with “(advanced)” go deeper and can be skipped if you want to read this blog post more quickly.
Focusing on focus
Focus behavior in HTML had been under-specified for the past few years, and it was also quite confusing due to a variety of subtle differences between focusing methods, UA-specific behaviors, relation to the tabindex attribute, relations to shadow DOM, etc. A few months ago Domenic filed a meta-bug that contains a list of things to fix so that we would have a good foundation for further additions to focus-related stuff, and to hopefully make focus in HTML make sense to browser engineers and web authors!
Gantry: Slack’s Fast-booting Frontend Framework
Gantry’s successful rollout internally came down to us taking a concept that was already working and abstracting it for general consumption. The intersection of multiple product requirements meant we covered most use-cases that a Slack application might need, and this has kept Gantry flexible enough to support many other applications since its inception.
Task-based effectiveness of basic visualizations
So far this week we’ve seen how to create all sorts of fantastic interactive visualisations, and taken a look at what data analysts actually do when they do ‘exploratory data analysis.’ To round off the week today’s choice is a recent paper on an age-old topic: what visualisation should I use? No prizes for guessing “it depends!” …the effectiveness of a visualization depends on several factors including task at the hand, and data attributes and datasets visualized. Is this the paper to finally settle the age-old debate surrounding pie-charts??
The Dynamic Composer (an AWS serverless pattern)
I’m a big fan of following the Single Responsibility Principle when creating Lambda functions in my serverless applications. However, there are several drawbacks with this approach that often attract criticism. These include things like increased complexity, higher likelihood of cold starts, separation of log files, and the inability to easily compose functions. I think there is merit to these criticisms, but I have personally found the benefits to far outweigh any of the negatives. A little bit of googling should help you find ways to mitigate many of these concerns, but I want to focus on the one that seems to trip most people up: function composition.
Storing 50 million events per second in Elasticsearch: How we did it
Improving our monitoring has allowed us to better understand what is happening inside our cluster. For each index, no matter its size, we now have shards with no more than 25GB of data on each. Having smaller shards also enables better rebalancing and relocation when needed. We avoid hotspot issues because our hot layer only has shards in write, and the hot, warm and cold architecture improves our cache utilization for read requests.
PyTorch Mobile: Exploring Facebook’s new mobile machine learning solution
PyTorch enters the mobile machine learning game with its experimental mobile deployment pipeline.
GRIT: a Protocol for Distributed Transactions across Microservices
eBay technologists recently showed off a distributed transaction protocol called GRIT, for distributed ACID (atomicity, consistency, isolation, durability) transactions across microservices with multiple underlying databases.
A new era of spatial computing brings fresh challenges—and solutions—to VR
Researchers will be showing off a method for allowing people to safely navigate a given route in real-world environments, such as a daily walk to work, while seeing themselves strolling a different VR world, such as a city of their choosing. They’ve also developed a technology that leverages newly introduced eye-tracking of users so that visual details in VR can be changed in real time without those changes being detected. Finally, researchers have invented a new haptic feedback controller that uniquely emulates the human sense of touch by meshing centuries-old and cutting-edge technologies.
Lesser Known Coding Fonts
In this post, I want to show five fonts that I don’t see as often on /r/unixporn, but which I believe deserve to be better known. (Edit: ironically enough, this post cannot be posted on /r/unixporn, because they don’t accept content that isn’t screenshots, photos, or videos.)
The default SSH port is 22. It is not a coincidence. This is a story of how it got that port.
Why Devs (Should) Like Estimates
As a Principal Web Developer at Stack Overflow and a long time Tech Lead, I learnt that accurate estimates were essential in order for a company to be healthy and productive. Over the years I have spent a good deal of time developing my theories for why estimates and breakdowns are so important, and crafting my own methodology for how best to go about doing them. Below, I attempt to distill the lessons I’ve learned so that others can experiment with and improve upon my techniques. Now, I should be clear, the advice below is what works for me. I’m sure there are different approaches that might work better for others. Feel free to share your favorite approach in the comments.
Quantum Supremacy Using a Programmable Superconducting Processor
We developed a new 54-qubit processor, named “Sycamore”, that is comprised of fast, high-fidelity quantum logic gates, in order to perform the benchmark testing. Our machine performed the target computation in 200 seconds, and from measurements in our experiment we determined that it would take the world’s fastest supercomputer 10,000 years to produce a similar output. 另附：IBM casts doubt on Google’s claims of quantum supremacy.
Dapr: Microsoft’s New, Portable, Event-driven, Runtime for Distributed Apps
Dapr is a portable, event-driven runtime that makes it easy for developers to build resilient, microservice stateless and stateful applications that run on the cloud and edge and embraces the diversity of languages and developer frameworks.
Firefox 70 — a bountiful release for all
Amazing user features and protections aside, we’ve also got plenty of cool additions for developers in this release. These include DOM mutation breakpoints and inactive CSS rule indicators in the DevTools, several new CSS text properties, two-value display syntax, and JS numeric separators. In this article, we’ll take a closer look at some of the highlights! 另附：Dramatically reduced power usage in Firefox 70 on macOS with Core Animation.
Developers: Get Ready for New SameSite=None; Secure Cookie Settings
In May, Chrome announced a secure-by-default model for cookies, enabled by a new cookie classification system (spec). This initiative is part of our ongoing effort to improve privacy and security across the web. Chrome plans to implement the new model with Chrome 80 in February 2020. Mozilla and Microsoft have also indicated intent to implement the new model in Firefox and Edge, on their own timelines.
Electron 7.0.0 has been released! It includes upgrades to Chromium 78, V8 7.8, and Node.js 12.8.1. We’ve added a Window on Arm 64 release, faster IPC methods, a new nativeTheme API, and much more!
Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the DevTools Protocol. Puppeteer runs headless by default, but can be configured to run full (non-headless) Chrome or Chromium.
OpenJS Foundation launches new professional certification program to support the future of Node.js development
The certifications focus on critical skills that Node.js developers need to build Node.js applications and services in professional environments; Certification is valid for three years with a renewal option.
GitLab 12.4 released with improved Merge Request Dependencies and Audit API
GitLab 12.4 is released with several improvements for governance including an Audit API, Code Owner approvals for Protected Branches, and Access Control for Pages. Merge Request Dependencies help you orchestrate work across teams, while so many more exciting features help you be more efficient and deliver better software faster.
Announcing the GitHub Education Classroom Report 2019
How teachers are using GitHub to train the next generation of developers.
Automated Continuous Deployment at Heroku
Over the past four years, the Heroku Runtime team has transitioned from occasional, manual deployments to continuous, automated deployments. Changes are now rolled out globally within a few hours of merging any change—without any human intervention. It’s been an overwhelmingly positive experience for us. This doc describes why we decided to make the change, how we did it, and what we learned along the way.
ws: a Node.js WebSocket library
ws is a simple to use, blazing fast, and thoroughly tested WebSocket client and server implementation.
Declarative data-fetching and caching framework for REST APIs with React. resourcerer is a library for declaratively fetching and caching your application’s data. Its powerful higher-order React component (HOC) withResources allows you to easily construct a component’s data flow, including: serial requests, prioritized rendering for critical data (enabling less critical or slower requests to not block interactivity), delayed requests, prefetching…
Convert cURL Commands to Node.js Code
Uses the request library. It also supports Python, PHP, Go, and other languages.
Type Route is a flexible, type safe routing library built on top of the same core library that powers React Router.
An exceptionally fast, tiny time series chart.
Tina is a site editing toolkit for modern React-based sites (Gatsby and Next.js).
Peaks.js — Interact With Audio Waveforms
Tiny 200 byte functional event emitter / pubsub.
CKEditor 5 v15.0.0 with horizontal line, page break, responsive toolbar and SVG upload support
This editor version introduces support for inserting horizontal lines, page breaks and SVG images into the WYSIWYG editor. It also allows you to define the document title section thanks to the new title plugin. The editor toolbar is now responsive, which improves the UX, especially for mobile devices. But there is more — so read on!
Ghost 3.0 is far and away the biggest release we’ve ever done, in terms of scale. We announced more today in one go than at any other point in our history - and more people were involved in this release than ever before.
Nordic.js 2019 Talks
Alpine Linux image with nginx with HTTP/3 (QUIC), TLSv1.3, 0-RTT, brotli support. All built on the bleeding edge. Built on the edge, for the edge.
The New World of Notebook Publishing
We’ve been working towards it for many years, but now it’s finally here: an incredibly smooth workflow for publishing Wolfram Notebooks to the web—that makes possible a new level of interactive publishing and computation-enabled communication.
Open Doodles - Free sketchy illustrations
Open Doodles is a set of free illustrations that embraces the idea of Open Design. You can copy, edit, remix, share, or redraw these images for any purpose without restriction under copyright or database law (CC0 license.) I hope that this kind of resource makes it easier for designers to show the value of illustration in their mockups. Maybe you use these images as placeholders, before you’re ready to hire an illustrator. Or perhaps this will encourage others to create their own kit and share it with the world.
Inside Adobe Spectrum, the design system making apps like Photoshop on iPad possible
Adobe is opening up new resources for designers and developers with the launch of an official website for its company-wide design system, Spectrum. From the new Creative Cloud desktop app for Macs to the upcoming Photoshop on iPad, Spectrum is what gives Adobe’s apps their distinct look and feel. 另附：Adobe发布PS 2020版！逆天黑科技看哭设计师…、Designing accessible color systems.
Connecting the Dots Between Product and Branding
How rethinking brand expression influenced Microsoft products and vice versa.
How to Measure Learnability of a User Interface
To measure learnability, determine your metric, gather your data, and plot the averages on a line curve. Analyze the learning curve by looking at its slope and its plateau.
Change for the Good or Bad? A Guide to UX Innovation
UX innovation is a natural extension of that desire to create new things and make life easier. But while carefully thought-out innovations are often welcome, not all change is good. Innovation for innovation’s sake often leads to websites that aren’t user-friendly and do little more than feed the designer’s ego. So how does a UX designer decide when to innovate and when to follow established design patterns? Why do designers choose to implement innovative UX designs in the first place? And what should designers keep in mind when they’ve decided to try something original and creative on a project?
Speaking Up for Conversation Design
Voice-first user experiences are now ubiquitous. Smart-speaker sales are up, as is their usage. Older adults are benefiting from the use of voice assistants. However, a large percentage of users still find the experience of talking to voice assistants unnatural. So how can we make voice experiences better?
The Internet of creation disappeared. Now we have the Internet of surveillance and control
An interview with this specialist in human rights, technology and freedom of expression to discuss how today’s societies are advancing to the drumbeat of “digital colonialism”.
Coda 是一款专为团队协作设计和开发的多人合作「在线工作空间」，它将在线文档、表格与各种第三方 App 相结合，打造出了一个功能强大的文档工具。最近，Coda 更新了 2.0 版本，不仅优化了整体界面、让撰写文稿的体验更加清爽，还增加了不少实用功能，让用 Coda 协作这件事更加符合直觉，就像 Coda 的 CEO 说的那样：Coda 1.0 是为文稿创作者准备的，Coda 2.0 则是专为整个团队打造的。
对数据可视化有兴趣的可以阅读由 AntV 带来的 墨者修齐 2019-10-28·可视化式的思考与图形式的发现、IBM Technology Garden、The Language of Congress