FEX 技术周刊 - 2019/12/16
Develop, Debug, Learn? A time to re-think our tooling
I don’t have all the answers we seek to make development a simpler task. But I think we are well on the way. With an open mind, open ears and open source we can fix a lot of the things that both tire us and make our market appear less appealing. People are worried about automation and computers taking their jobs. They also are worried about large tech companies ruling the world without opening the doors to people who haven’t got the same education and experience as the ones working in them. By changing our tools to be more all-encompassing and making our accumulated knowledge part of the development process we make a good start to changing that. And we make it easier for the next generation of developers to focus on delivery, not on knowing all about the toolchain.
Announcing Flutter 1.12: What a year!
Flutter 1.12 has been released with several performance improvements, localizations for 24 new locales, new widgets and more. 另附：Under the Hood of eBay Motors: New App Powered By Advanced Technology Like Flutter, ML and BFF、Exploring SwiftUI Part 1 - A brief history of Apple UI development and Initial impressions.
20 ways to become a better Node.js developer in 2020
I’ve compiled below 20 skills, technologies and considerations on choosing between them. Picking the right tools became one of our greatest challenges — the Node.js ecosystem has matured and present attractive options in almost every field. Vanilla or TypeScript? Ava, Mocha or Jest? Express, Fastify or Koa? or maybe Nest? should I include ES6 modules in my next project or stick to good-old ‘require’? Mixing and matching among all of those require deep familiarity with the consequences. These rich set of tools and paradigms also encourages you to tiptoe into unexplored territory. I hope that the next bullets will inspire you to enrich your toolbox and diversify yourself.
Browser Functions: A new serverless platform using Web Browser execution engines
If you want to build a modern web app, you typically need to use a few different tools: one set for the front-end, and another for the back-end. In addition, you would need to learn and use a different API (and often even a different programming language) for the back-end. However, the Web API is a rich and stable API, and the web browser is a stable, powerful and secure execution environment. So why then can we not use this execution environment for our back-end too? This is the question we asked ourselves at IBM Research, so we decided to try running a browser on the server. This turned out to work much better than we had anticipated!
从 VSCode 看大型 IDE 技术架构
谈起 Web IDE，没人能绕开 VSCode，它非常流行，同时又完全开源，总共 350000 行 TypeScript 代码的巨大工程，使用了 142 个开源库。市面上选择基于 VSCode 去修改定制的 IDE 比比皆是：Weex Studio、白鹭Egret Wing、快应用IDE… 我希望从 VSCode 身上看到什么？大型复杂 GUI 软件（如 IDE 类）如何组织功能模块代码，如何使用 Electron 技术将 Web 软件桌面化，如何在打造插件化开放生态的同时保证软件整体质量与性能，如何打造一款好用的、流行的工具软件。
面对各类运营需求，微信游戏团队在B端开发实践中进行思考和提炼，创立了通用组件语言规范（CLS，Common Components Language Specification），对所有组件进行统一抽象，指引无终端依赖、无语言依赖、无框架依赖的标准化组件开发模式。并基于此规范实现了一套 Vue.js 的声明式组件库，以标准化JSON描述页面组成，写完JSON就完成了页面开发，以此来简化前端工作，提高开发效率。
Thinking in React Hooks
React introduced hooks one year ago, and they’ve been a game-changer for a lot of developers. There are tons of how-to introduction resources out there, but I want to talk about the fundamental mindset change when switching from React class components to function components + hooks.
React is a state manager too, ya know!
You probably don’t need Redux… or Context. Use React’s internal component state instead of complex and third-party solutions. 另附：Manage Global State with Context API and Hooks
Z’s Still Not Dead Baby, Z’s Still Not Dead
Still, all fashions fade eventually. I’m hopeful that with the styling tools we have today, we’ll move beyond flatness and add an extra dimension. Here are five CSS properties which will bring depth and richness to your designs. 另附：Art Direction and the New WordPress Editor.
Six Web Performance Technologies to Watch in 2020
Don’t bet on 5G and HTTP/3 to make things faster, there are six technologies that I believe will have a bigger impact on web performance in 2020.
W3C Trace Context: An Open Standard with Big Implications for Distributed Tracing Tools
Continuous integration and deployment with Bazel
Code in our monorepo is built and tested exclusively with Bazel. Abstractly, Bazel views the repository as a set of targets (files, binaries, libraries, tests, etc.) and the dependencies between them. In particular, Bazel knows the dependency graph between all source files and tests in the repository. We modified our continuous integration system to extract this dependency information from Bazel (via bazel query) and use it to compute the set of tests affected by a particular commit. This allows us to greatly reduce the number of tests executed on most commits while still being correct.
Back under a SQL Umbrella
https://queue.acm.org/detail.cfm?id=3371598 If anything will define the year databases have had in 2019, it’ll probably be the huge shift into thinking about everything (well, almost) in terms of SQL. This post digs into two papers that respectively cover Google’s Procella data system and a SQL-based distributed machine learning system. 另附：[Why databases use ordered indexes but programming uses hash tables](https://www.evanjones.ca/ordered-vs-unordered-indexes.html.
Parsing 18 billion JSON lines with Go
How Scylla Scaled to One Billion Rows a Second
Scylla is a highly scalable, highly performant NoSQL database. But just how fast can fast get? And what happens when you run it on a bare metal cloud like Packet? We set out to design a test that would showcase the combined abilities of Scylla as a database and Packet’s fastest instances. We’ll spill the beans early: we were able to scan more than 1,000,000,000 rows per second (that’s a billion, with a “b”). Now, if we were only doing a million rows per second per server, that’d need a cluster of 1,000 servers.
Introducing Storage Transfer Service for on-premises data
There’s an enormous amount of data in the world today, and your company likely operates its own storage infrastructure to store this data. Running your business in the cloud can generate more value from your data and facilitate collaboration across your organization, all while optimizing for infrastructure costs. Before you can take advantage of all that cloud offers, though, you have to actually get your data to the cloud. That’s why we’ve developed a new software service that helps you accomplish large-scale, online data transfers: Transfer Service for on-premises data. This can help take the complexity out of data transfers and move data faster than existing online tools like gsutil. 另附：
The History of Data Exchange
We need to collaborate on open data to make it better, just like with open source software. We need to collaborate at internet-scale. That is why we created DoltHub, a place on the internet to store, host, and collaborate on open data for free. CSVs are the past and present of data exchange but Dolt and DoltHub are the future.
An Introduction to Reverse Engineering.
API Practices If You Hate Your Customers
In this article, I document a number of industry best practices designed to show customers how much you hate them. All of them are easy to implement. Heck, your company may be doing many of these already.
The Product-Minded Software Engineer
Product-minded engineers are developers with lots of interest in the product itself. They want to understand why decisions are made, how people use the product, and love to be involved in making product decisions. They’re someone who would likely make a good product manager if they ever decide to give up the joy of engineering. I’ve worked with many great product-minded engineers and consider myself to be this kind of developer. At companies building world-class products, product-minded engineers take teams to a new level of impact.
Challenging projects every programmer should try
I talk to a lot of students and professional developers that often want to start a side project, but aren’t sure what to build. Below is a handful of software projects that taught me a lot. In fact, they’re great because you could build them multiple times and learn new things each time. So whenever I don’t know what to build or I want to learn a new programming language or framework, I start with one of these:
- Text editor
- 2D game - Space Invaders
- Compiler - Tiny BASIC
- Mini operating system
- Spreadsheet (hard!)
- Video game console emulator (hard!)
OSCHINA 公布 2019 年度最受欢迎中国开源软件
Instadeq - Data Analysis and Visualization for Everyone
Data analysis, visualization and collaboration for individuals and teams. 另附：Things end users care about but programmers don’t.
Atlassian launches new serverless cloud development platform
Atlassian has a portfolio of developer tools like Bitbucket, Jira and Confluence. It also has a marketplace with thousands of add-ons. But what it lacked was a development platform to call its own. Today, that changed when the company announced the Forge platform. “Forge will empower developers to more easily build and run enterprise-ready cloud apps that integrate with Atlassian products,” the company wrote in a blog post announcing the new tools.
W3C Trace Context specification enters proposed recommendation status and what it means
W3C Trace Context specification defines the format for propagating distributed tracing context between services. Distributed tracing makes it easy for developers to find the causes of issues in highly-distributed microservices applications by tracking how a single interaction was processed across multiple services. Each step of a trace is correlated through an ID that is passed between services, and W3C Trace Context now defines a standard for these context propagation headers.
Web Design And Development Advent Roundup For 2019
A roundup of Advent Calendar sites of interest to web designers and developers. From accessibility to UX, coding challenges to Perl, there really is something for everyone this December.
A Recap of Frontend Development in 2019
A look back at the top events, news, and trends for frontend and web development.
Electron joins the OpenJS Foundation
Stateless React Components for Bootstrap 4.
This release adds support for the highly anticipated preact-devtools extension. It’s in an early preview state, but it has proven to be very useful already for inspecting a component tree in our internal testing. Apart from that there is a new SuspenseList component to control loading in lists and the usual round of bug fixes.
A high-performance, feature-packed library for all your mapping needs. OpenLayers makes it easy to put a dynamic map in any web page. It can display map tiles, vector data and markers loaded from any source. OpenLayers has been developed to further the use of geographic information of all kinds.
Fx Command-line JSON processing tool
Command-line tool and terminal JSON viewer.
HappyHues - Curated colors in context
Not sure what colors to use in your designs or where to use them? Happy Colors is a color palette inspiration site that acts as a real world example as to how the colors could be used in your design projects.
Don’t change anything in your Docker container image and minify it by up to 30x (and for compiled languages even more) making it secure too!
Single header library for writing non-blocking HTTP servers in C.
Vim 8.2 is available!
The main new feature of Vim 8.2 is support for popup windows. These can be used to display text on top of other windows and are very flexible: they can be positioned relative to text, at an absolute position or just in the middle of the screen. The size can be fixed or can adjust to fit the text. A “zindex” value specifies what popup window goes on top of others.
Looking at the Future – Design Trends of 2020
We’ve identified 20 emerging design trends for 2020, but we’re not just listing fonts and colors. We’re showcasing game-changers and industry shakers that will define our experiential landscape for the year to come.
Principles of Conversational Design
Using human conversation patterns to design more natural digital interactions. 另附：A Six-Minute Breakdown of Gartner’s Top Conversational AI Platforms.
Mental models for designers
Curious about product design at Dropbox? Here’s a look at tools we use for solving problems, making decisions, and communicating ideas.
The Icon Kaleidoscope
Redesigning over 100 icons with new colors, materials, and finishes.
Becoming a strategic, customer-centric product designer
A design-led strategy is now standard practice and I think it’s a really exciting time to be a designer. Designers learn to think creatively, build empathy for customers, and be comfortable with ambiguity. These are core skills needed to develop innovative customer-centric ideas, and it means designers are uniquely positioned to help frame design-led product strategy. If jumping into this strategic side of design scares you, don’t worry. This article guides you through typical activities and links to Atlassian plays that you can borrow.
I Invented the World Wide Web. Here’s How We Can Fix It.
My parents were mathematicians. My mother helped code one of the first stored-program computers — the Manchester Mark 1. They taught me that when you program a computer, what you can do is limited only by your imagination. That excitement for experimentation and change helped me build the World Wide Web. I’m introducing a new approach to overcome that stalemate — the Contract for the Web. The Contract for the Web is a global plan of action created over the past year by activists, academics, companies, governments and citizens from across the world to make sure our online world is safe, empowering and genuinely for everyone.
对数据可视化有兴趣的可以阅读由 AntV 带来的 墨者修齐 2019-12-16·生物的进化关系、球赛复盘展示、德国气候变化
– THE END –