FEX 技术周刊 - 2019/11/11
Announcing Visual Studio Online Public Preview
Available beginning at Microsoft’s Ignite conference as a public preview, Visual Studio Online provides managed, on-demand development environments that can be used for long-term projects, to quickly prototype a new feature, or for short-term tasks like reviewing pull requests. You can work with environments from anywhere using either Visual Studio Code, Visual Studio IDE (in private preview), or the included browser-based editor. 另附：对话微软顶级代码女神潘正磊：Visual Studio 与 VS Code 的未来走向, Microsoft wants anyone to be a developer, whether they code or not, .
Building Great User Experiences with Concurrent Mode and Suspense
This post will be most relevant to people working on data fetching libraries for React. It shows how to best integrate them with Concurrent Mode and Suspense. The patterns introduced here are based on Relay — our library for building data-driven UIs with GraphQL. However, the ideas in this post apply to other GraphQL clients as well as libraries using REST or other approaches. This post is aimed at library authors. If you’re primarily an application developer, you might still find some interesting ideas here, but don’t feel like you have to read it in its entirety. 另附：The React Conf 2019 Playlist、Great Content from JSConf Budapest 2019.
Exciting Times Ahead — Be Ready For Angular 9
The Angular 9 RC is out, what an exciting time to be Angular developer, no I am not saying this because of Angular 9 RC release. It’s because Ivy is here, Ivy is now the default rendering engine in Angular. 另附：Accessibility in Angular Applications.
NPM Updates to Community, Docs & more…
Here on the Community & Open Source Team we’ve been working hard, in front of and behind the scenes, to provide real value and unlock developer potential. With that in mind, I’m happy to announce a number of updates/releases we’ve landed this morning & would like to detail.
将在线服务和离线任务混合混部到相同物理资源上，通过资源隔离、调度等控制手段 , 充分使用资源，同时保证服务的稳定性，我们称这样的技术为“混部”。百度从 2012 年就开始尝试进入混部技术领域，研发并推广了代理计算（BVC/IDLE）系统，大规模重构后演进成为一套通用的在离线混部系统（千寻）。目前公司混部的整体技术迈向成熟，并在大搜索、Feed、凤巢等机器上实现了规模化运用。本文整理自百度基础架构部资深研发工程师张慕华在 QCon 全球软件开发大会（北京站）2019 上的演讲，他主要介绍了百度在在离线混部系统架构的演进和实践。
如果产品不能让用户身心感到愉悦和舒适，他们很可能会迅速使用其他替代品，对于 toC 的产品尤为明显，产品体验糟糕必然会被市场淘汰。但是体验是一个很庞大的话题，有很多方面会影响产品的体验，如性能、UI、交互以及人性化的功能等等，本文抛砖引玉，只从技术层面的某几个方面聊聊移动端的体验优化，主要以 Android 为切入点，IOS 大部分优化方向与 Android 类似。考虑到市面上绝大多数 APP 都是 Native+H5 相结合的应用，且本人项目中也大量使用 H5 页面，因此将从 Native 端和 H5 端分别总结如何优化体验。
How Gatsby can power your site offline - even without JavaScrip
You know the feeling: you saw a cool website or read an interesting article the other day, and you’d like to check back on it, or maybe you’re with some people that you’d like to share it with. But what’s this? You don’t have any phone signal, and the wi-fi connection is spotty at best – if there is one at all! You attempt to open the page, but try as you might, the loading spinner just keeps on spinning… With gatsby-plugin-offline, that’s a thing of the past.
What I’ve learned about accessibility in SPAs
Over the past year or so, I’ve learned a lot about accessibility, mostly thanks to working on Pinafore, which is a Single Page App (SPA). In this post, I’d like to share some of the highlights of what I’ve learned, in the hope that it can help others who are trying to learn more about accessibility.
How to Fully Optimize Webpack 4 Tree Shaking
We reduced our bundle sizes by an average of 52%.
Easier Node.js streams via async iteration
Working with Node.js streams is much more pleasant if we use asynchronous iteration. This blog post explores how to do that.
Audio Fingerprinting using the AudioContext API
Fingerprinting as introduced in this article is a way of identifying users based on one or more set of unique device characteristics. Along with Canvas fingerprinting, Audio fingerpnting takes advantage of device performance specs to build up an identifying fingerprint of a user. The problem is it does not need to take any permission from the users and works on all browsers and can be used to track users across browsers. It has the same basic process of doing this as canvas fingerprinting. Assign a task to the browser, record how it is executed, and use such data to build the finge rprint.
How to Build a Simple Video Converter with Node.js
Videos are an incredibly popular medium for sharing information, but in the past, converting videos has always been a problem for people. With FFMPEG, this can now be solved easily.
Code Health: Respectful Reviews == Useful Reviews
While code review is recognized as a valuable tool for improving the quality of software projects, code review comments that are perceived as being unclear or harsh can have unfavorable consequences: slow reviews, blocked dependent code reviews, negative emotions, or negative perceptions of other contributors or colleagues. Consider these tips to resolve code review comments respectfully.
Building a Large-scale Distributed Storage System Based on Raft
In recent years, building a large-scale distributed storage system has become a hot topic. Distributed consensus algorithms like Paxos and Raft are the focus of many technical articles. But those articles tend to be introductory, describing the basics of the algorithm and log replication. They seldom cover how to build a large-scale distributed storage system based on the distributed consensus algorithm. In this article, I’d like to share some of our firsthand experience in designing a large-scale distributed storage system based on the Raft consensus algorithm.
GraphQL Search Indexing
Almost a year ago we described our learnings from adopting GraphQL on the Netflix Marketing Tech team. We have a lot more to share since then! There are plenty of existing resources describing how to express a search query in GraphQL and paginate the results. This post looks at the other side of search: how to index data and make it searchable. Specifically, how our team uses the relationships and schemas defined within GraphQL to automatically build and maintain a search database.
Optimizing Search Index Generation using secondary cache
To support the Walmart Search, a Full Index is generated periodically, and incremental updates are applied via real-time stream processing. Together they keep the Walmart search index current. The Full Index is implemented as a Spark based batch job, that does a full table scan on the underlying Item Store (Apache Cassandra).
Computers Evolve a New Path Toward Human Intelligence
Neural networks that borrow strategies from biology are making profound leaps in their abilities. Is ignoring a goal the best way to make truly intelligent machines?
Open Letter to the Linux Foundation
I am writing to you as a concerned member of the software development community which I have enjoyed serving for the last 50 years. I am writing in public because the events I wish to describe took place in public. I fear that something has gone terribly wrong within your organization; and that it will have deep repercussions within this industry that I cherish. 另附：An analysis of performance evolution of Linux’s core operations.
Announcing our new integration with Microsoft Teams
Collaboration and information discovery should be easy, no matter what software platform you’re using at the moment. Today we’re excited to announce a new integration that will allow you to access the power of Stack Overflow for Teams inside of Microsoft Teams! 另附：A Technical Deep Dive into Our MS Teams Integration.
GitHub Sponsors is now out of beta in 30 countries
GitHub Sponsors is now out of beta and generally available to developers with bank accounts in 30 countries and growing. Since GitHub Sponsors launched, the beta has grown exponentially, reaching tens of thousands of developers in the GitHub community. It’s been amazing to see what open source developers have already done with sponsorships in just a few months. 另附：Highlights from Git 2.24.
Go Turns 10
This weekend we celebrate the 10th anniversary of the Go release, marking the 10th birthday of Go as an open-source programming language and ecosystem for building modern networked software. 另附：Go Modules: v2 and Beyond, TiDB in the Browser: Running a Golang Database on WebAssembl.
W3C Website redesign, phase 1 RFP
The purpose of our Website redesign RFP is to identify a fully qualified proposer. Interested parties are encouraged to take advantage of the open Questions and Answers period, and required to submit a written proposal to Coralie Mercier, Head of W3C Marketing & Communications who manages this project, no later than 13 December 2019 1700 UTC. We expect to award the project on January 10, 2020.
Announcing Dart 2.6 with dart2native: Compile Dart to self-contained, native executables
We’re announcing dart2native, an extension of our existing compiler set, with the ability to compile Dart programs to self-contained executables containing ahead-of-time-compiled machine code. With dart2native, you can create tools for the command line on macOS, Windows, or Linux using Dart.
Announcing .NET Jupyter Notebooks
As Try .NET has grown to support more interactive C# and F# experiences across the web with runnable code snippets, and an interactive documentation generator for .NET Core with the dotnet try global tool, we’re happy to take that same codebase to the next level, by announcing C# and F# in Jupyter notebooks.
Optional Chaining, Nullish Coalescing, Assertion Functions, Better Support for never-Returning Functions, (More) Recursive Type Aliases.
WebGPU and WSL in Web Inspector
In Safari Technology Preview release 91, beta support was added for the WebGPU API and WSL. In Safari Technology Preview release 94, support for showing WebGPU devices, as well as all associated render/compute pipelines and canvas elements, was added to Web Inspector inside the Canvas Tab.
Scroll-To-Text using a URL fragment
To enable users to easily navigate to specific content in a web page, we propose adding support for specifying a text snippet in the URL. When navigating to such a URL, the browser will find the first instance of the text snippet in the page and bring it into view. Web standards currently specify support for scrolling to anchor elements with name attributes, as well as DOM elements with ids, when navigating to a fragment. While named anchors and elements with ids enable scrolling to limited specific parts of web pages, not all documents make use of these elements, and not all parts of pages are addressable by named anchors or elements with ids.
You Cannot Submit an Electron 6 (or 7) App to the Apple Store
Allright, as a follow up to the previous chapter in this odyssey I can now state that, apparently, you cannot submit an electron 6 or 7 app to the apple store.
TOAST UI Chart
TOAST UI Chart supports an easy way to draw various and essential charts on your web service.
Library to provide basic geospatial operations like distance calculation, conversion of decimal coordinates to sexagesimal and vice versa, etc. This library is currently 2D, meaning that altitude/elevation is not yet supported by any of its functions!
Pure CSS Lace
HTML/CSS drawing inspired by Flemish baroque oil portraits. Hand-coded entirely in HTML & CSS. Another piece of highly detailed CSS-only art from Diana Smith. This is best viewed in Chrome, but it’s interesting to see how it looks in other browsers.
PostgREST is a standalone web server that turns your PostgreSQL database directly into a RESTful API. The structural constraints and permissions in the database determine the API endpoints and operations.
Build your own X
Recursive Sans and Mono: A Free Variable Type Family
Recursive Sans and Mono: A Free Variable Type Family — This is a new ‘highly-flexible’ type family that takes advantage of variable font tech to let you pick the right style along five different axes. It’s pretty clever, well demonstrated, and very suitable for presenting data, code, or to be used in documentation and UIs.
A Cloud for Everyone
Tailoring complex experiences for every user level.
Conversational Applications | the New Face of Your Apps
Tech giants like Facebook, Google, and Baidu know that people aren’t filling their devices with apps anymore. Just 35 percent of smartphone users download a single app in an average month, and the average app loses 90 percent of its daily active users within 30 days of release. The future of technology is all about ease of use and “human” interactivity, and it’s why M has a host of competitors — WeChat, Siri, Google Now, Alexa, Duer, and Cortana, just to name a few — all vying to become consumers’ next favorite personal assistant and app home base.
Notifications, widgets, quick actions, and Siri shortcuts or Google Assistant routines are all ways to support mobile sessions shorter than 15 seconds, with minimal interaction to complete a user goal.
Designing the Facebook Company Brand
The new company branding is designed to help us better represent the diversity of products we build, establish distinction from the Facebook app and communicate our purpose in the world. Here is a look into the decisions we made to design our company brand. 另附：
Creating Online Environments That Work Well For Older Users
A significant part of the Internet-using population is aged 50 or older — including the people who invented it. Designers need to understand what older users need and why it’s not enough to just say, “I can read it, so what’s the problem?”
The Top 4 Pain Points UX/UI Designers Are Facing
Here are 4 of the most common challenges you brought up: Team Collaboration, Not Enough Time, Maintaining a Design System, Complicated Design Tools. 恰好有两个相关实践：How GitLab Pages made our Sketch design handoffs easier and faster, a design system governance process.
微软发力 RPA：AI+RPA 已成热门趋势
微软在 Ignite 2019 大会上正式宣布了在 Power Platform 上增加 RPA 功能，为了与 Power Platform 保持一致，Microsoft Flow 更名为 Power Automate，并新增了机器人流程自动化（RPA）功能，从而在 Power Platform 上提供跨越人工智能、API、UI 的完善的端到端的自动化解决方案。通过能够弥补 API 与 UI 自动化之间差异的统一的自动化平台，Power Automate 简化了端到端的自动化场景。微软宣布在 Power Automate 下推出一项名为 UI flows 的全新机器人流程自动化功能的公共预览版。创建 UI flow 是一种非常轻松和熟悉的体验，只要鼠标指点、无需编写代码就能完成，对于不支持 API 的自动化流程，只要通过记录和回放人与软件系统的互动操作，就能将人工任务轻松转化为自动化流程。Power Automate 中预设了超过 275 个在支持 API 自动化的 app 和服务中得到广泛应用的连接器，将其与 UI flow 搭配使用，就能得到一个可以胜任各行各业、各种不同工作内容的端到端的自动化平台。另附：UiBot RPA开发大赛助力电商卖家备战“双11”、冯大辉都提醒我们是时候了解一下 RPA 了。
Magi 是由 Peak Labs 研发的基于机器学习的信息抽取和检索系统，它能将任何领域的自然语言文本中的知识提取成结构化的数据，通过终身学习持续聚合和纠错，进而为人类用户和其他人工智能提供可解析、可检索、可溯源的知识体系。如果您是从 magi.com 来到这里的话，那么恭喜您发现了 Magi 的一半！这个长得很像搜索引擎的网站就是 Magi 的公众版本，但与搜索引擎不同，Magi 不仅收录互联网上的海量文本，还会去尝试理解并学习这些文本中蕴含的知识和数据。
Microsoft four-day work week ‘boosts productivity’
Microsoft Japan said sales had been boosted by nearly 40% during an experiment in which staff worked a four-day week on full pay. Offices were closed on every Friday of August 2019 and full-time staff were given “special leave”, which was paid. Meetings were restricted to a maximum of 30 minutes and online discussions were encouraged as an alternative to face-to-face. Japan has some of the longest working hours in the world. 另附：The Manager’s Schedule Is Holding Back Remote Work.
对数据可视化有兴趣的可以阅读由 AntV 带来的 墨者修齐 2019-11-11·A network of science、Github Octoverse 2019、加州房产噩梦
– THE END –