FEX 技术周刊 - 2019/07/22
frontend design, react, and a bridge over the great divide
Quark: A Software ‘Sketchbook’ for Node, HTML and CSS Experiments
Redux with Code-Splitting and Type Checking
How I ruined my application performances by using React context instead of Redux
I used React contexts instead of Redux for centralized states; Without a selector system, my components where getting lots of data as props, some of them were often changing and not necessary to build the view; Any changes in these contexts objects caused almost all my components to rerender; I had thousands of useless rerenders at every user interaction; Refactor all the application to use Redux and use wisely the selector system to give each components strictly what it needed solved the problem; Before choosing between contexts or redux, think about the optimizations the selector system can bring you.
写了35年的程序，终于把自己的看家本领晒了出来，共享出来。两年多的时间，近二十万行代码，放在了GitHub上。好多朋友关切的问我，开源怎么赢利？抛开开源的商业模式不提，我想，只要我们开源的代码真正创造了价值，有人用，那我和团队就是最大的赢家。如果30年后，还有人在用TDengine,哪怕只是其中一个模块，其中一个函数，那就是对我们两年多日夜奋战的最大肯定，就是给我这个程序员的最大回报。更希望30年后，我还能对TDengine继续贡献代码，那将是我还未老去的最好证明。钱再多，也难让人在历史上留下痕迹，但一幅好的作品却可以传承，让后人好好的品味。愿我领头开发的TDengine成为传世之作，Leave a dent in the world!
Everything You Need To Know About CSS Margins
Margins in CSS seem simple enough at first glance. Applied to an element it forms a space around the element, pushing other elements away. However, there is more to a margin than you might think.
Introducing Osgood: A New V8-Based Platform for Building HTTP Servers
HTTP Security Headers - A Complete Guide
In this article, I will walk through the commonly evaluated headers, recommend security values for each, and give a sample header setting. At the end of the article, I will include sample setups for common applications and web servers.
Think in Math. Write in Code
Programmers love to discuss programming languages. Besides debating their own merits, we integrate them into our identities and even infer things about others who use them. Some even defend a form of Linguistic Determinism that thinking is limited to what is typable. Since we spend so much time using languages, an interest in making them better is justified. However, the character of these debates suggests that we think of them as something more. Perhaps we have forgotten their primary role. Programming languages are implementation tools, not thinking tools. They are strict formal languages invented to instruct machines in a human-friendly way. In contrast, thoughts are best expressed through a medium which is free and flexible.
Operating a Large, Distributed System in a Reliable Way: Practices I Learned
For the past few years, I’ve been building and operating a large distributed system: the payments system at Uber. I’ve learned a lot about distributed architecture concepts during this time and seen first-hand how high-load and high-availability systems are challenging not just to build, but to operate as well. Building the system itself is a fun job. Planning how the system will handle 10x/100x traffic increase, ensuring data is durable, regardless of hardware failures is intellectually rewarding. However, operating a large, distributed system has been an eye-opening experience for myself.
Open Sourcing Brooklin: Near Real-Time Data Streaming at Scale
Brooklin is a distributed system intended for streaming data across multiple different data stores and messaging systems with high reliability at scale. It exposes a set of abstractions that make it possible to extend its capabilities to support consuming and producing data to and from new systems by writing new Brooklin consumers and producers. At LinkedIn, we use Brooklin as the primary solution for streaming data across various stores (e.g., Espresso and Oracle) and messaging systems (e.g., Kafka, Azure Event Hubs, and AWS Kinesis).
Presto at Pinterest
To provide employees with the critical need of interactive querying, we’ve worked with Presto, an open-source distributed SQL query engine, over the years. Operating Presto at Pinterest’s scale has involved resolving quite a few challenges. In this post, we share our journey.
Introducing the Plato Research Dialogue System: A Flexible Conversational AI Platform
Plato was designed to address these needs and can be used to create, train, and evaluate conversational AI agents for a variety of use cases. It supports interactions through speech, text, or structured information (in other words, dialogue acts), and each conversational agent can interact with human users, other conversational agents (in a multi-agent setting), or data. Perhaps most significantly, Plato can wrap around existing pre-trained models for every component of a conversational agent, and each component can be trained online (during the interaction) or offline (from data).
Big Data Is Still Hard. Here’s Why
We’re over a decade into the big data era that emerged from the tectonic collision of mobile, Web 2.0, and cloud forces. Bolstered by progress in machine learning, we stand at the cusp of a new AI era that promises even greater automation of rudimentary tasks. But despite the progress in AI, big data remains a major challenge for many enterprises. 另附：Google got Looker. Salesforce bought Tableau. But open source tools are rising in popularity across the world of business intelligence and data analysis.
Let’s Build a Compiler
Compilers, interpreters, runtimes, and the like can sometimes feel vaguely magical. They take your code, perform complex transformations that you only partially understand, and spit out an executable binary. Clearly, the inner workings of such a beast must contain arcane secrets, not meant for the minds of mortals. Of course, even if it feels that way sometimes, that doesn’t make it true. As with everything else in software, there’s no magic. You can understand it, with a little research and experimentation. There’s plenty of resources out there to understand how compilers work. I haven’t found anything that takes you from zero to a fully usable compiler, though, so I figured I’d try to write something that fits the bill. I’ve always found that the best way to learn how a system works is to build one yourself, so let’s do that. In short, this series will walk you through building an optimizing compiler from scratch. Hopefully we’ll both learn something along the way.
History and effective use of Vim
This article is based on historical research and on simply reading the Vim user manual cover to cover. Hopefully these notes will help you (re?)discover core functionality of the editor, so you can abandon pre-packaged vimrc files and use plugins more thoughtfully.
Parrotron: New Research into Improving Verbal Communication for People with Speech Impairments
Project Euphonia has demonstrated that speech recognition models can be significantly improved to better transcribe a variety of atypical and dysarthric speech. Today, we are presenting Parrotron, an ongoing research project that continues and extends our effort to build speech technologies to help those with impaired or atypical speech to be understood by both people and devices. Parrotron consists of a single end-to-end deep neural network trained to convert speech from a speaker with atypical speech patterns directly into fluent synthesized speech, without an intermediate step of generating text—skipping speech recognition altogether.
The Web Can’t Survive a Monoculture
Believe it or not, I convinced myself that a Chromium monoculture could actually be acceptable. For a minute. In this post, I’ll discuss that thought process and explain why I’m still optimistic about the web’s future.
Announcing NativeScript 6.0
This is a huge milestone for the framework and the common theme behind the release is “Productivity”. For the past months, we have worked on several features that aim to improve developer productivity in many aspects: Faster delivery of patches using NativeScript AppSync; The NativeScript Core Theme now works out of the box for all NativeScript components; A new and improved TabView which enables common scenarios without custom development; Webpack is now the driver of the development experience, and HMR is on by default.
Dash 2019: Guide to Datadog’s newest announcements
At Dash 2019, we are excited to share a number of new products and features on the Datadog platform. With the addition of Network Performance Monitoring, Real User Monitoring, support for collecting browser logs, and single-pane-of-glass visibility for serverless environments, Datadog now provides even broader coverage of the modern application stack, from frontend to backend. Read on for details about those releases, as well as numerous other features for monitoring your metrics, traces, logs, synthetic tests, and more.
CKEditor 5 v12.3.0 with word count, autocorrect, link attributes and new upload adapter
We are happy to announce the release of CKEditor 5 v12.3.0. This editor version contains some exciting new features that were at the top of the wishlist for our community and customers alike, like word and character count, automatic text transformations, link attributes, text block and list indentation, or the Base64 image upload adapter. Typing on Android got significantly improved and a new watchdog functionality will be helpful in recovering from editor crashes.
The MDN Web Docs Have a New React-Powered Homepage
It’s in beta now but the popular frontend developer resource site is trying a React-driven front-end.
The Airtable API provides a simple way of accessing your data. Whether it’s contacts, sales leads, inventory, applicant information or todo items, the vocabulary of the interactions closely matches your data structure. You will use your table names to address tables, column names to access data stored in those columns. In other words, the Airtable API is your own RESTful API for your base.
Run your tests using Jest & Puppeteer.
Smashtest • Test 10x Faster
Smashtest is a language for rapidly describing and deploying test cases. Greatly speed up your automated testing by writing tests in a tree-like format. Trees represent how we think when we’re testing. They allow us to list all the permutations that branch off from any given point.
OctoSQL is a query tool that allows you to join, analyse and transform data from multiple databases and file formats using SQL.
.NET Reunified: Microsoft’s Plans for .NET 5
When Microsoft announced .NET 5 at Microsoft Build 2019 in May, it marked an important step forward for developers working across desktop, Web, mobile, cloud and device platforms. In fact, .NET 5 is that rare platform update that unifies divergent frameworks, reduces code complexity and significantly advances cross-platform reach. This is no small task. Microsoft is proposing to merge the source code streams of several key frameworks—.NET Framework, .NET Core and Xamarin/Mono. The effort will even unify threads that separated at inception at the turn of the century, and provide developers one target framework for their work.
What’s coming in Python 3.8
The walrus operator; Debug support for f-strings; Positional-only parameters; A movable
Announcing The New Go Store
We are excited to launch the new Go official swag and merch store shipping worldwide. We are even more excited to announce that 100% of the proceeds from the Go store go directly to GoBridge. GoBridge is a non-profit organization focused on building bridges to educate underrepresented groups by teaching technical skills and fostering diversity in the Go community. 另附：Proposal: A built-in Go error check function, “try”.
TinyGo - Go on Microcontrollers and WASM
TinyGo is a project to bring the Go programming language to microcontrollers and modern web browsers by creating a new compiler based on LLVM. You can compile and run TinyGo programs on several different microcontroller boards such as the BBC micro:bit and the Arduino Uno. TinyGo can also be used to produce WebAssembly (WASM) code which is very compact in size.
At what time of day do famous programmers work?
I was curious when the famous programmers do their work. And it is quite easy to find. The result of programmers work is a code. Code is stored in version control systems (VCS). When you put code in VCS the time is record.
A simple syntax for complex argumentation. Writing pro & contra lists in Argdown is as simple as writing a Twitter message. You don’t have to learn anything new, except a few simple rules that will feel very natural. Your document is transformed into an argument map while you are typing. You can export your analysis as HTML, SVG, PDF, PNG or JSON. If that is not enough, you can easily extend Argdown with your own plugin.
org-web - org mode on the web
org-web lets you directly edit your org files online. It syncs with Dropbox and Google Drive and is optimized for mobile use.
An open source React library to power production-ready animations. Design fluid animations for the web, across desktop and mobile.
How to Structure an Effective Typographic Hierarchy
While practicing and experimenting with creating an effective hierarchy is the best way to really master the skill, there are a number of guidelines designers should learn first, before setting out on their own. After all, it’s impossible to break the rules effectively without first knowing what they are.
Cognitive Maps, Mind Maps, and Concept Maps: Definitions
Cognitive maps, concept maps, and mind maps are diagramming techniques that can be utilized throughout the UX process to visualize knowledge and surface relationships among concepts.
Inside the Microsoft Emoji Design Studio
Discover the hidden complexity behind your favorite emoji.
阅读体验重塑 | Webnovel 阅读页改版
作为阅文集团的出海阅读产品，Webnovel 上线两年以来，随着用户量的不断增长以及产品功能的持续迭代，原先的阅读页体验已然滞后。今年五月初，我们对 Webnovel 的阅读页进行了一次改版优化，以下是此次改版的经验总结。
The future of productivity: People and tools that grow together
Computers are disappearing. This doesn’t mean they’re actually going away, though. In fact, every day more and more of how we live, work, and interact is transformed by computers. But it does mean that technology has become so ubiquitous in recent years that our focus can now shift from our computers to what they enable us to do.
正好是到了登月 50 周年的纪念日。阿波罗 11 号的开源代码仓库，这几天也在 GitHub 上连续占据着趋势榜头条。不过出现了尴尬的一幕，这个仓库这几天被大量灌水，里面的中文 issue 占绝大多数。仓库作者 chrislgarry 终于发声回应了。还是耗子哥的这个实在：闲话登月程序和程序员。另附：中文仓库在 GitHub 屠榜！国外开发者不开心了.
支付服务商从入门到精通（一） —— 牌照
对数据可视化有兴趣的可以阅读由 AntV 带来的 墨者修齐 2019-07-22·大规模时空数据分析 IEEE VIS 2018最佳论文解读、帮助视障用户、机器人理解可视化
– THE END –