FEX 技术周刊 - 2019/01/28
The TypeScript Tax - A Cost vs Benefit Analysis
As TypeScript stands, I would definitely use it again in small open-source libraries, primarily to make life easier for other TypeScript users. But I will not use the current version of TypeScript in my next large scale application, because the larger the project is, the more the costs of using TypeScript compound.
The Great Divide
Two front-end developers are sitting at a bar. They have nothing to talk about. Let’s say there is a divide happening in front-end development. I feel it, but it’s not just in my bones. Based on an awful lot of written developer sentiment, interviews Dave Rupert and I have done on ShopTalk, and in-person discussion, it’s, as they say… a thing. The divide is between people who self-identify as a (or have the job title of) front-end developer, yet have divergent skill sets.
Yarn’s Future - v2 and beyond
This thread aims to expose our roadmap for the next major Yarn release, and let you know about significant changes that we plan to make regarding Yarn’s design. The codename for these changes is Berry - that’s how we’ll refer to it during the next few months.
Introducing Ionic 4: Ionic for Everyone
Ionic 4 represents the culmination of more than two years of research and hard work transforming Ionic from “mobile for Angular” into a powerful UI Design System and app framework for every web developer in the world. There are so many things to talk about with this release, but first I’d like to talk about how we got here.
前端性能优化の备忘录 2019 版
在（网站）项目刚启动时，我们就应该（对网站）采取（一些有助于网站）性能提升的手段，并且该过程一直要持续到网站的最终版本发布上线。在这段时间里，假设我们需要牢记这些优化手段，并且希望针对这些优化手段做一下总结，内心 OS：天啦噜，这总结应该长啥样呀？往下阅读，你就会发现一篇非常客观的年度总结：前端性能优化の备忘录 2019 版，今年这一版的内容讲的是对一些问题的后续跟进。比如，如何让网站的响应速度更快、交互体验更顺畅以及如何做才不会让网站耗尽用户的带宽。
在过去的一年里，我是如何使用 Flutter 的呢？我做了以下这些事情：使用 Flutter 重写一款已经发布到 App Store 的 iOS 应用程序；开发了一个 Flutter 免费速成课程，录制 5 个多小时的教学视频内容；使用 Flutter 开发一些小型尚未发布的应用程序。以下是在过去一年中，我通过使用 Flutter 学到的东西。
HTML5 Input Types: Where Are They Now?
HTML5 introduced thirteen new types of form input, adding significantly to the number of different fields web designers and developers could add to our forms. These new types all require browsers to support them, and take-up has been slower than some of us would have liked. What is the state of those field types in 2019? Which can we use, and which should still be avoided?
React 16.6.0 Goodies
We’re going to cover what I consider the best of those new goodies with examples of how we can put them to use in our work. 另附：Understanding Fragments in React、Why Isn’t X a Hook?.
Why I don’t use React-Router
React-Router is the most popular routing solution out there for React applications — so much so, that a lot of developers think of it as the ‘Official Routing Solution’ for React. While I’m sure React-Router works quite well for a lot of people, I’ve always disliked working with React-Router. I’ll try to summarize my reasons in this article.
Interactive Text Animation with React Hooks
How to animate headings that respond to mouse movements using React Hooks, CSS Modules, CSS variables and clip-path.
We’re making Tumblr more accessible!
If you’re an avid user of Tumblr on mobile web, then you might’ve noticed some improvements we made. Bigger font sizes and higher contrast text? Your screen reader actually reads what you hope it would? You’ve guessed it, we’re making Tumblr ✨accessible✨.
storytelling with data - new year, new tools!
We’re excited to see the variety of tools exemplified here. These range from the familiar go-to’s (Tableau, Excel, PowerBI) and also some that may be less widely known throughout the broader community (Datawrapper, Flourish, RAWGraphs). Interested in seeing a specific tool? We’ve organized the submissions alphabetically by tool and encourage you to scroll through the entire post to familiarize yourself with the wide array available for visualizing data.
What is tree shaking and how does it work?
Tree shaking is a method of optimising our code bundles by eliminating any code from the final file that isn’t actually being used.
Node.js multithreading: What are Worker Threads and why do they matter?
Introducing The Component-Based API
In the world of APIs, GraphQL has lately overshadowed REST due to its ability to query and retrieve all required data in a single request. In this article, I will describe a different type of API, based around components, which takes a step further the amount of data it can fetch from a single request.
Working with GraphQL using Vanilla JS
Developing Microservices with Behavior Driven Development and Interface Oriented Design
With Behavior Driven Development (BDD), a service’s functionality is described by tests that concentrate on the operations to be performed rather than the syntax of these operations such as JSON or XML. Interface Oriented Design (IOD) includes other contractual obligations of a microservice, such as limitations on resource usage, throughput, and error reporting. Together BDD and IOD help describe a service’s behavior so that consumers can easily understand and rely upon it.
Programming paradigms for dummies: what every programmer should know
Programming paradigms are approaches based on a mathematical theory or particular set of principles, each paradigm supporting a set of concepts. Van Roy is a believer in multi-paradigm languages: solving a programming problem requires choosing the right concepts, and many problems require different sets of concepts for different parts.
Our Software Dependency Problem
Software dependencies carry with them serious risks that are too often overlooked. The shift to easy, fine-grained software reuse has happened so quickly that we do not yet understand the best practices for choosing and using dependencies effectively, or even for deciding when they are appropriate and when not. My purpose in writing this article is to raise awareness of the risks and encourage more investigation of solutions.
The scalable fabric behind our growing data center network
Dropbox needs its underlying network infrastructure to be reliable, high-performing, cost-effective, and truly scalable. In previous posts we described how the edge network was designed to improve user performance, and how the supporting multi-terabit backbone network spans continents to interconnect edge PoPs and multiple data centers. In this post we describe how we evolved the Dropbox data center network from the legacy chassis based four-post architecture to a scalable multi-tier, quad-plane fabric.
Managing Distributed Tasks with Helix Task Framework
Stateless tasks are widely used for serving large-scale data processing systems. Lots of requests were made by systems, which rely on Apache Helix, for a stateless task management feature to be added to Apache Helix. Recently, our team decided to explore new ways to manage stateless tasks, in addition to our ongoing work to support Helix. The result of these efforts is Helix Task Framework, an engine that powers distributed execution of stateless tasks. In this post, we’ll introduce Helix Task Framework, which is available in Helix as an advanced feature.
HTTP/3: From root to tip
In this blog post we’ll explore the history behind some of HTTP/3’s previous names and present the motivation behind the most recent name change. We’ll go back to the early days of HTTP and touch on all the good work that has happened along the way.
Network protocols for anyone who knows a programming language
The network stack does several seemingly-impossible things. It does reliable transmission over our unreliable networks, usually without any detectable hiccups. It adapts smoothly to network congestion. It provides addressing to billions of active nodes. It routes packets around damaged network infrastructure, reassembling them in the correct order on the other side even if they arrived out of order. It accommodates esoteric analog hardware needs, like balancing the charge on the two ends of an Ethernet cable. This all works so well that users never hear of it, and even most programmers don’t know how it works.
The Future Will Be Documented
MongoDB was born out of frustration from using relational databases not designed for today’s modern applications. After 40 years of no real alternatives, we pioneered a new way to work with data – the MongoDB document model and the associated query language.
It’s Time to Move on from Two Phase Commit
In this post, we will first describe 2PC: how it works and what problems it solves. Then, we will show some major issues with 2PC and how modern systems attempt to get around these issues. Unfortunately, these attempted solutions cause other problems to emerge. In the end, I will make the case that the next generation of distributed systems should avoid 2PC, and how this is possible.
The Internals of PostgreSQL
In this document, the internals of PostgreSQL for database administrators and system developers are described. PostgreSQL is an open source multi-purpose relational database system which is widely used throughout the world. It is one huge system with the integrated subsystems, each of which has a particular complex feature and works with each other cooperatively. Although understanding of the internal mechanism is crucial for both administration and integration using PostgreSQL, its hugeness and complexity prevent it. The main purposes of this document are to explain how each subsystem works, and to provide the whole picture of PostgreSQL.
The Practical Linux Hardening Guide
This guide details the planning and the tools involved in creating a secure Linux production systems - work in progress.
What’s New In DevTools (Chrome 73)
Use Logpoints to log messages to the Console without cluttering up your code with console.log() calls. When inspecting a node, DevTools now shows an expanded tooltip containing commonly important style properties like font, margin, and padding. Code coverage data can now be exported as a JSON file. The Sources and Network panels now support code folding. 另附：What the Firefox DevTools Team Did in 2018
How to make VR with the web, a new video series
In this new YouTube series, How to make a virtual reality project in your browser with three.js and WebVR, I’ll take you through building an interactive birthday card in seven short tutorials, complete with code and examples to get you started. The whole series clocks in under 60 minutes. We begin by getting a basic cube on the screen, add some nice 3D models, set up lights and navigation, then finally add music.
Electron v5.0.0 Timeline
For the first time ever, Electron is excited to publicize our release schedule starting with v5.0.0. This is our first step in having a public, long-term timeline.
Jest 24: Refreshing, Polished, TypeScript-friendly
It’s been 4 months since the last minor release, and 8 months since Jest 23, so this upgrade is a big one, with something for everyone! Highlights include built-in support for TypeScript by upgrading the Jest internals to Babel 7, fixing some long-standing issues with missing console output and performance issues when computing large diffs, and a brand new sparkling website. ✨
Prettier 1.16: HTML improvements and better CRLF handling
This release improves HTML formatting and contains better CRLF handling, new syntax features, and fixes several bugs.
The State of the Octoverse: Machine Learning
We pulled data on contributions between January 1, 2018 and December 31, 2018. Contributions could include pushing code, opening an issue or pull request, commenting on an issue or pull request, or reviewing a pull request. For the most imported packages, we used data from the dependency graph, which includes all public repositories and any private repositories that have opted in to the dependency graph. 另附： Github Release Radar · December 2018.
W3C Strategic Highlights - Future Web Standards
W3C has a variety of mechanisms for listening to what the community thinks could become good future Web standards. There are lots of good ideas. The W3C strategy team has been identifying promising topics and invites public participation.
Twitter migrates data to Google Cloud to keep the world tweeting
To determine if a migration of this scale would even be possible, Twitter had a rigorous cloud evaluation process. After months of in-depth analysis, Twitter engineers found Google Cloud to be the best fit for Twitter’s needs because it provided flexibility in storage and compute scaling in both dimensions independently while also providing access to a high-speed network.
AMD Open Source Driver for Vulkan
The AMD Open Source Driver for Vulkan® is an open-source Vulkan driver for Radeon™ graphics adapters on Linux®. It is built on top of AMD’s Platform Abstraction Library (PAL), a shared component that is designed to encapsulate certain hardware and OS-specific programming details for many of AMD’s 3D and compute drivers. Leveraging PAL can help provide a consistent experience across platforms, including support for recently released GPUs and compatibility with AMD developer tools.
Remote Code Execution in apt/apt-get
I found a vulnerability in apt that allows a network man-in-the-middle (or a malicious package mirror) to execute arbitrary code as root on a machine installing any package. The bug has been fixed in the latest versions of apt. If you’re worried about being exploited during the update process, you can protect yourself by disabling HTTP redirects while you update.
RE:DOM is a tiny (2 KB) UI library by Juha Lindstedt and contributors, which adds some useful helpers to create DOM elements and keeping them in sync with the data. Because RE:DOM is so close to the metal and doesn’t use virtual dom, it’s actually faster and uses less memory than almost all virtual dom based libraries, including React.
Trigger a action on element when keyboard hotkey is pressed. Automatically binds hotkeys to any link with a data-hotkey attribute set. Multiple hotkeys are separated by a ,. Key combinations are separated by a +, and key sequences are separated by a space.
Code Galaxies Visualization
Software Galaxies visualizes dependencies among most popular package managers. Every star in this visualization represents a package.
Fast Node Manager (fnm)
Fast and simple Node.js version manager, built in ReasonML.
Automate the tedious tasks of software releases. Happily release and publish your Git repositories, npm packages, GitHub & GitLab releases, changelogs, and much more!
Full duplex messaging between web browsers and servers**
GitHub Windows Edition: User style transforming GitHub into Windows 9x
浓浓的复古风，另附：Windows 98 Icons are Great，看来 Windows 98 是很多人的记忆中的“味道”。
Ant Design 情感化设计
Rethinking UX for AI-driven Alerting
I’ve been designing monitoring tools for almost 10 years now, and in that time a lot has changed. The infrastructure we build software on, for example, has been transformed multiple times—moving first from physical hosts to VMs in the cloud, then from VMs to containers, and now from containers to serverless and cloud service-based infrastructure. With the introduction of advanced statistical methods into alerting I think we’re seeing the first major transformation in alerting UX, so I want to unpack it and talk about where things are going.
7 Google Web Design Resources to Improve your UX
This list of resources will help you and your team squeeze as much value out of your web development investment as possible.
Top Four Principles of Human-Centred Design
Focus on the people. Find the right problem. Think of everything as a system. Always test your design decisions.
9 Product Design Do’s and Don’ts
Sometimes you can do all the right things and still get to the wrong place. The key is to do the right things the right way.
An Analysis of 24 Creative 404 Error Pages
Here are 24 examples of 404 error pages that will help you understand how to design a user-friendly error page.
AlphaStar: Mastering the Real-Time Strategy Game StarCraft II
we introduce our StarCraft II program AlphaStar, the first Artificial Intelligence to defeat a top professional player. In a series of test matches held on 19 December, AlphaStar decisively beat Team Liquid’s Grzegorz “MaNa” Komincz, one of the world’s strongest professional StarCraft players, 5-0, following a successful benchmark match against his team-mate Dario “TLO” Wünsch. The matches took place under professional match conditions on a competitive ladder map and without any game restrictions. 另附：星际2人机大战：职业高手首次被AI击败.
金山办公葛珂：如何用 30 年的时间实现一个最初的想法
WPS 却走过了 30 年时间，从桌面 PC 到智能手机时代，WPS 不仅是见证中国软件发展史兴衰的重要一员，还成为中国办公软件领域的排头兵。当从 PC 时代走到智能手机时代，WPS 又很早开始打造移动版本，这一脚步为其随后的发展扩展了新的道路，并收获了上亿用户的认可。「可怕的不是变化可能伴随短期困境，而是拒绝改变还缄默无声。」葛珂曾担心 WPS 前进的道路，但走到今天，这家公司找到了属于自己的步子，也创造了不平凡的结果。而在这条路上究竟有哪些不为人知的关键词？办公软件领域这三十年的变化又是如何？在 WPS 看来一家有历史积累的公司又如何走向未来？三十岁的 WPS 也许有着自己的理解。
白鸦 - 聊聊 enjoy
了解一下有赞的企业文化，可以和 有赞宣布“996工作制” 参照着看。
– THE END –