FEX 技术周刊 - 2019/10/07
Improving V8 regular expressions
In its default configuration, V8 compiles regular expressions to native code upon the first execution. As part of our work on JIT-less V8, we introduced an interpreter for regular expressions. Interpreting regular expressions has the advantage of using less memory, but it comes with a performance penalty. In this blog post we describe how we take advantage of the upsides of interpreting regular expressions while mitigating the downsides.
Preact X - Virtuous DOM and the Fragments of Suspense
Preact X is the next major version of Preact fully packed with features like Fragments, Hooks, componentDidCatch, Test-Utils, Debug-Warnings, many compatibility fixes and so much more 🎉 It’s finally happening! After months of hard work we’ve crossed the finish line and are over the moon with excitement to finally mark Preact X as stable. We’d like to thank everybody who tested it and submitted bug reports.
Text Rendering Hates You
Rendering text, how hard could it be? As it turns out, incredibly hard! To my knowledge, literally no system renders text “perfectly”. It’s all best-effort, although some efforts are more important than others. The topics I focus on here have no particular rhyme or reason, they’re just the ones that come to mind after a few years of working on rendering in Firefox. For instance, I don’t spend much time talking about the challenges of text-segmentation or managing the different platform-specific text libraries, because I don’t look at that much.
HTTP (Hypertext transfer protocol) 翻译成中文是超文本传输协议，是互联网上重要的一个协议，由欧洲核子研究委员会CERN的英国工程师 Tim Berners-Lee v发明的，同时，他也是WWW的发明人，最初的主要是用于传递通过HTML封装过的数据。在1991年发布了HTTP 0.9版，在1996年发布1.0版，1997年是1.1版，1.1版也是到今天为止传输最广泛的版本（初始RFC 2068 在1997年发布， 然后在1999年被 RFC 2616 取代，再在2014年被 RFC 7230/7231/7232/7233/7234/7235取代），2015年发布了2.0版，其极大的优化了HTTP/1.1的性能和安全性，而2018年发布的3.0版，继续优化HTTP/2，激进地使用UDP取代TCP协议，目前，HTTP/3 在2019年9月26日 被 Chrome，Firefox，和Cloudflare支持，所以我想写下这篇文章，简单地说一下HTTP的前世今生，让大家学到一些知识，并希望可以在推动一下HTTP标准协议的发展。
另附：Chrome - No More Mixed Messages About HTTPS.
在 UC 做的前端工程化探索
我在 2016 年初加入 UC 的国际业务部，负责为 UC News 搭建运营后台。随着前端团队人数越来越多，我开始推动团队的前端技术栈统一以及前端工程化，开发了一个叫 Cans 用于快速搭建中后台前端应用的框架。直到了 2019 年我离开 UC, Cans 仍然服务于 UC 的国际业务。本文主要记录了我如何从 UC News 运营后台孵化出这个内部框架，以及其背后的设计理念。虽然 Cans 没有开放源代码。但我认为相比这些工具的源码，那些我在开发这些工具背后的理念、思考，更有被分享的价值。
Why we chose ECharts for data visualizations
Learn why GitLab switched from D3.js to ECharts as our library of choice for rendering data visualizations.
Want to Improve UI Performance? Start by Understanding Your User
I’ll dive into a few key areas that we found made the biggest impact on UI performance: How to assess your current situation and spot areas that could be improved; Prioritizing the loading of components and data; Improving the perceived loading performance by taking a look at how the design of loading states can influence the way users experience load time. Our team has always kept performance top of mind. We follow industry best practices like route-based bundle splitting and are careful not to include any large external dependencies. Nevertheless, it was still clear that we had a lot of room for improvement. The front end of our application is built using React, GraphQL, and Apollo. The advice in this article aims to be framework agnostic, but there are some references to React specific tooling.
另附：Performance metrics for blazingly fast web apps
Middleware-based clipboard handling - meet clipboar
In the newest version of CKEditor 4, we introduced a new mechanism of handling pasting into the WYSIWYG editor that is provided by the Paste Tools plugin. It is based on a battle-tested idea of middlewares and simplifies the process of adding new paste handlers. We have decided to play around a little bit more with this concept and created a simple library for handling pasting and dropping content into a web page. Read on for more!
I created the exact same app in React and Vue. Here are the differences
React vs Vue. Finally, a side-by-side code comparison between Vue and React! 🎉 [Updated and rewritten for 2019: Now with React Hooks] Having used Vue at work, I had a fairly solid understanding of it. I had, however, been curious to know what the grass was like on the other side of the fence - the grass in this scenario being React.
Don’t Sync State. Derive It!
The fact is that you can really simplify your app’s state by considering whether the state needs to be managed by itself or if it can be derived. We learned that derived state can be the result of a single variable of state, or it can be derived from multiple variables of state (some of which can also be derived state itself). So next time you’re maintaining the state of your app and trying to figure out a synchronization bug, think about how you could make it derived on the fly instead. And in the few instances you bump into performance issues you can reach to a few optimization strategies to help alleviate some of that pain.
Avoid 100vh On Mobile Web
How to detect machine-translated webpages
Why is CSS so Weird?
CSS is the design language of the web — one of three core web languages — but it also seems to be the most contentious and often perplexing. It’s too easy and too hard, too fragile and too resilient. Love it or hate it, CSS is weird: not quite markup, not quite programming in the common (imperative) sense, and nothing like the design programs we use for print. How did we get here?
How CSS Grid changes the way we think about structuring our content
With grid, we no longer have to rely on
<div> s to create the structure of our page, or even a more complex component. The structure is literally defined by the parent and not how the content is organized within in. This means we can have nice, simple markup that sticks to the content itself without a reliance on organizing it through the use of
另附：Layout-Fun with CSS Grid、Editorial Design Patterns With CSS Grid And Named Columns.
另附：Why Progressive Web Apps Are The Future of Mobile Web - 2019 Research.
Power of Protocol Oriented Programming
In this article, We will talk about the power of protocol-oriented programming. It is in talks after it has been introduced to the developer by Apple. Almost everyone in the developer’s community had heard it; at some point in time.
Solving documentation for monoliths and monorepos
At Spotify, we’re always trying to push the boundaries of the way the world experiences audio. In order to achieve this, our engineers need to learn and move quickly. It is the best way we believe we can achieve the Spotify company mission of unlocking the potential of human creativity. We have been trialling our Mkdocs Monorepo plugin for several weeks with internal squads and we’re happy to share this in beta with the greater open source community.
How to Make Good Code Reviews Better
Good code reviews are the bar that all of us should strive for. They cover common and easy to follow best practices that any team can get started with, while ensuring high-quality and helpful reviews for the long term. Better code reviews are where engineers keep improving how they do code reviews. These code reviews look at the code change in the context of the codebase, of who is requesting it and in what situation. These reviews adjust their approach based on the context and situation. The goal not only being a high-quality review, but also to help the developers and teams requesting the review to be more productive.
How Sqreen handles 50,000 requests every minute in a write-heavy environment
Sqreen is the industry’s first provider of Application Security Management (ASM), a unified platform for security, operations, and engineering teams to help them succeed in building and running secure applications together, without code changes, reduced engineering velocity, or added operational burden. To handle the needs of modern application security, Sqreen uses an agent-based solution that deals with a huge volume of writes.
Building Resilient Serverless Systems
John Chapin explains how to use serverless technologies and an infrastructure-as-code approach to architect, build, and operate large-scale systems that are resilient to vendor failures, even while taking advantage of fully managed vendor services and platforms. He leads an end-to-end demo of the resilience of a well-architected serverless system in the face of massive simulated failure.
Processing 40 TB of code from ~10 million projects with a dedicated server and Go for $100
There are two parts to this interesting study. First, the why and how of grabbing code from 10 million repositories, and secondly the results of his analysis over the downloaded code. There’s basically something for everyone in here, even if it’s just the most popular curse words in public repos(!)
Happy 25th anniversary, World Wide Web Consortium!
Since then we at the Web Consortium have led the Web to its full potential by convening industry, researchers, and the global community of Web developers to create freely available and open standards that ensure that the Web remains open, accessible, and interoperable for everyone around the globe. Software developers implement these standards in browsers, servers, blogs, graphic editors, search engines, and all the other software that powers the Web experience.
npm turns 10
It’s our ten-year anniversary! To celebrate, we thought we’d share some milestones we’ve reached along the way. Thank you to all who have helped us get here.
TensorFlow 2.0 focuses on simplicity and ease of use, featuring updates like:
- Easy model building with Keras and eager execution.
- Robust model deployment in production on any platform.
- Powerful experimentation for research.
- API simplification by reducing duplication and removing deprecated endpoints.
另附：Algorithmia is TensorFlow 2.0 Compatible.
Vue 3.0 终于来了
Vue 3.0 的想法是引入灵感来自于 React Hook 的 Function-based API，作为主要的组件声明方式。
Node-RED Version 1.0 released
Node-RED is a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways. It provides a browser-based editor that makes it easy to wire together flows using the wide range of nodes in the palette that can be deployed to its runtime in a single-click.
Hydra: A framework that simplifies development of complex applications
Hydra is a lightweight framework that simplifies the development of Python applications, especially complex ones, by introducing the ability to compose and override configurations. Hydra makes it easier to add functionality to projects to accommodate new use cases and requirements without having to rewrite significant portions of code.
另附：Fundamentals of Python Programming.
Bot Land - An online strategy game with a focus on automation
Design your bot, Choose your hardware, Tell it what to do, Battle other players!
A list of everything that could go in the head of your document. A free guide to HTML5
Zero Divs! Pure CSS pixel art animation!
另附：How to Make 3D Charts for the Web Using D3 and X3DOM
OGL - Minimal WebGL framework
OGL is a small, effective WebGL framework aimed at developers who like minimal layers of abstraction, and are comfortable creating their own shaders. With zero dependencies, the API shares many similarities with ThreeJS, however it is tightly coupled with WebGL and comes with much fewer features. In its design, the framework does the minimum abstraction necessary, so devs should still feel comfortable using it in conjunction with native WebGL commands. Keeping the level of abstraction low helps to make the framework easier to understand and extend, and also makes it more practical as a WebGL learning resource.
React for CLIs. Build and test your CLI output using components.
A node.js library to automate chrome/chromium browser. Taiko is a free and open source browser automation tool built by the team behind Gauge from ThoughtWorks. Taiko is a node library with a clear and concise API to automate the chrome browser. Tests written in Taiko are highly readable and maintainable.
Carbon - Create and share beautiful images of your source code
You know all of those code screenshots you see on Twitter? Though the code’s usually impressive, we saw room for improvement in the aesthetic department. Carbon makes it easy to create and share beautiful images of your source code. So what are you waiting for? Go impress all of your followers with your newfound design prowess.
KarelDB - A Relational Database Backed by Apache Kafka
KarelDB is a fully-functional relational database backed by Apache Kafka.
另附：PostgreSQL 12 Released!.
More Than a Query Language: SQL in the 21st Century
It’s rare we’d include an item that’s both a PDF and a slide deck as a featured item, but when it’s Markus Winand going deep on SQL’s history and developments in 21st century versions of the SQL spec, it’s a must see.
另附：SQL queries don’t start with SELECT.
A specification for adding human and machine readable meaning to commit messages.
It has been two years since calibre 3.0. This time has been spent mostly in making the calibre Content server ever more capable as well as migrating calibre itself from Qt WebKit to Qt WebEngine, because the former is no longer maintained. The Content server has gained the ability to Edit metadata, Add/remove books and even Convert books to and from all the formats calibre itself supports. It is now a full fledged interface to your calibre libraries. The change to use Qt WebEngine has entailed a complete rewrite of various parts of calibre, including the E-book Viewer, PDF Output, Book details etc.
This resource lists a bunch of stories which in some way, explore the beautiful ideas behind computer science, software engineering and even plain old programming.
20,000 Startup Ideas
This gives a kind of map of the territory of current economically important human activities. Therefore it represents a good source of startup ideas. It maybe is even the listing of approximately all startup ideas.
另附：Y - Combinator Logo Top Companies List - 2019.
交互文档，即交互设计说明文档。英文 Design Requirement Document ，简称DRD。主要是用来承载设计思路、设计方案、信息架构、原型线框、交互说明等内容。工作上而言，有一份规范的文档可以让你的设计更有说服力，也易于工作对接，提高彼此之间的沟通效率。本文主要阐述以Axure软件为撰写工具，大家可以根据实际需求决定用什么软件（Sketch、PPT、Word、PS、AI 等）。比如小需求可以用Sketch，快而高效。如果是要给甲方爸爸/大老板看的，使用PPT会让他们更好理解。
Lets dive deep into Sketch2React 1.6+
Lets celebrate by giving you a deep dive into all the new things that we have right now, in version 1.6.5 (pre-release). And a nice discount code on the bottom of this article.
The Obvious UI is Often the Best UI
Design clear interactions instead of clever ones, and users will follow. When we talk about common sense with product design, what we now see as strikingly obvious may not have been so apparent to designers when they first started. For a long time, designers have endeavored to make products as easy to use and navigate as possible. However, in order to highlight their products’ features, it has taken time for designers to understand users’ needs and challenges and iterate.
Reconciling the Differences in Our Data: A Mixed-Methods Research Story
Five steps for turning data discrepancy into better outcomes for customers.
How to Use Visual Hierarchy to Create Impactful Interfaces
Visual hierarchy is about prioritizing design elements to effectively communicate information to users. What makes effective communication? It’s when a business delivers the right message about product purpose and philosophy, ensuring that people can easily explore and use a product. So, it’s crucial to align visual emphasis with the goal of a specific page or content.
Inspired Design Decisions: Bea Feitler, An Unstoppable Creative Force
In this fifth installment of Inspired Design Decisions, Andy Clarke will teach you about Bea Feitler, who directed Harper’s Bazaar throughout the 1960s and has been described as “the pioneering female art director you’ve never heard of.” Andy will teach you about Feitler’s confident work and show you how to apply some of her design techniques to the work you make for the web. In this article, you’ll learn how to emphasize scale and maintain its contrast on even the smallest screens. Andy will teach you how to make confident color choices, and how to use pattern and texture to add depth to your designs.
What are weird and/or novel ways to do web UIs?
Do you know any websites that have weird UIs ? Something like a ZUI for example.
Why you shouldn’t ignore your competitors
This post is written by Marie Prokopets, co-founder of Product Habits and FYI, and features slides presented by her co-founder Hiten Shah at the 2019 Appealie SaaS Conference. I’ve been told countless times to ignore my competitors. Don’t waste time thinking about what they are doing. Don’t look at their latest features. Don’t worry about them. Basically, pretend they don’t exist. Instead, I’m told to focus on my customers.
– THE END –