FEX 技术周刊 - 2019/10/21
深阅读
Soli - You are the only interface you need
https://atap.google.com/soli/
Soli is a miniature radar that understands human motions at various scales: from the tap of your finger to the movements of your body. Soli aims to understand the nuances of human movements so that we can use our natural body language and gestures as a form of input. We created an interaction framework that groups human movements according to levels of proximity and engagement between the user and Soli: aware, engaged and active. The framework is based on regular human nonverbal communication models.
Bazel Reaches 1.0 Milestone!
https://opensource.googleblog.com/2019/10/bazel-reaches-10-milestone.html
We’re excited to announce the first General Availability release of Bazel, an open source build system designed to support a wide variety of programming languages and platforms. Bazel was born of Google’s own needs for highly scalable builds. When we open sourced Bazel back in 2015, we hoped that Bazel could fulfill similar needs in the software development industry. A growing list of Bazel users attests to the widespread demand for scalable, reproducible, and multi-lingual builds. Bazel helps Google be more open too: several large Google open source projects, such as Angular and TensorFlow, use Bazel. Users have reported 3x test time reductions and 10x faster build speeds after switching to Bazel.
Where We Go From Here: Thoughts on the Immediate Future of the Web
https://mor10.com/where-we-go-from-here-2019/
In my +15 years working on and with the web, the one major lesson I’ve learned is the future keeps arriving, sooner than you think, and often the future is already here. The web, the internet, and the technologies and communities powering them are evolving ever more rapidly, and what we consider future possibilities today often becomes practical realities the very next day. The future keeps arriving. Keep this in mind as you read on.
The Strengths and Benefits of Micro Frontends
https://www.toptal.com/front-end/micro-frontends-strengths-benefits
Micro-frontend architecture is a design approach in which a front-end app is decomposed into individual, semi-independent “microapps” working loosely together. The micro-frontend concept is vaguely inspired by, and named after, microservices. The benefits of the micro-frontend pattern include:
- Micro-frontend architectures may be simpler, and thus easier to reason about and manage.
- Independent development teams can collaborate on a front-end app more easily.
- They can provide a means for migrating from an “old” app by having a “new” app running side by side with it.
解密国内BAT等大厂前端技术体系-阿里篇
https://mp.weixin.qq.com/s/haSCjEOVCZSeaT2q5E2BQw
进入2019年,大前端技术生态似乎进入到了一个相对稳定的环境,React在2013年发布至今已经6年时间了,Vue 1.0在2015年发布,至今也有4年时间了。整个业界在前端框架不断迭代中,也寻找到了许多突破方向,例如跨平台中的RN、Flutter,服务端GraphQL、Serverless,前端和客户端的融合越来越紧密,前端在Node和Electron的加持下,也扩展了自己的版图到服务端和桌面。为了了解当前前端的发展趋势,让我们从国内各大互联网大厂开始,了解他们的最新动态和未来规划。第一篇先从阿里巴巴开始。
[译]webpack 5 之持久化缓存指南
https://mp.weixin.qq.com/s/oB5eYax_NndcM5IinPgzNQ
继 webpack v5-beta0 发布后,官方又发布了持久化缓存指南。首先,要注意的是默认情况下不会启用持久化缓存。你可以自行选择启用。为何如此?webpack 旨在注重构建安全而非性能。我们没有打算默认启用这一功能,主要原因在于此功能虽然有 95% 几率提升性能,但仍有 5% 的几率中断你的应用程序/工作流/构建。这可能听起来很糟,但相信我它并非如此。只不过需要开发人员进行额外的操作来配置它。
[译]一位开发者的幽默独白:JavaScript工具怎么就这么烂
https://mp.weixin.qq.com/s?__biz=MzUxMzcxMzE5Ng==&mid=2247492706&idx=1&sn=06f434b05e00b4b6950e10032d785be7
JavaScript 工具难用吗?作为 JavaScript 开发者的你是否早已对其叫苦不迭。本文将主要描述 JavaScript 工具的各种相关缺点,并解释这些缺点产生的原因。接下来就让我们一起跟随作者,看一看 JavaScript 工具“烂”在哪些方面。
Simplifying web deploys
https://medium.com/pinterest-engineering/simplifying-web-deploys-19244fe13737
Over the past six months, Pinterest has moved to a CI/CD model for our API and web layers, which has truly improved agility by reducing time between merge and production. Prior to the update, we had been deploying our web code in the same way for years, and it began showing its age. That mechanism is internally called A/B deploys and externally it’s referred as Blue-Green deploys. In this post we describe how and why we replaced it with rolling deploys.
Designing accessible color systems
https://stripe.com/blog/accessible-color-systems
With the existing tools we found, it was hard to create a color system that allowed us to pick great colors while ensuring accessibility. We decided to create a new tool that uses perceptual color models to give real-time feedback about accessibility. This enabled us to quickly create a color scheme that met our needs, and gave us something we could iterate on in the future.
High-performance Node.js concurrency with native “events” package
https://itnext.io/high-performance-node-js-concurrency-with-events-on-hexomter-da4472ae3061
Naturally, JavaScript considered as a single-threaded programming language with Event Loop implementation as the main driving engine. However, it’s not fully like that for Node.js, because they actually implemented Thread Pooling API based on libuv the library, which is a core library for Node.js to access other OS API like networking, file system, etc…
Vanilla JavaScript and HTML - No frameworks. No libraries. No problem.
https://johnpapa.net/render-html-2/
Also, consider that if you are rendering small amounts of content, you may want to use HTML, JavaScript, and the DOM without any other tools. Recently I wrote some web fundamentals examples to help teach the DOM, HTML, JavaScript, and the basics of the browser. This experience made me realize that maybe other developers, maybe you, would appreciate a reminder of how you can render content without libraries. If anything, it’s fun, educational, and might make us all respect the value of modern libraries and frameworks which handle this for us.
Qt vs. HTML – The Full-Stack Comparison
https://www.qt.io/blog/qt-vs.-html-the-full-stack-comparison
The truth is, both HTML5 and Qt are terrific options and neither of them is strictly better than the other in every context. If you are instead looking to increase your awareness of which technology fits which situation better, when it makes sense to combine the two, and how to make sure you plan for an open, scalable architecture, please give it a read!
Memories of web development past
https://christianheilmann.com/2019/10/15/memories-of-web-development-past/
I just found an old CD with a projects folder of work I did in 1998 – 1999 as a web developer and I am in awe about a few things.
Images done right: Web graphics, good to the last byte
https://evilmartians.com/chronicles/images-done-right-web-graphics-good-to-the-last-byte-optimization-techniques
Start taking graphics on the web seriously and boost your applications’ performance by learning the essentials about image formats, both modern and old-school. Dig into SVGs and adopt the latest and greatest tools to optimize your graphical content: both vector and raster. Study the theory behind digital images and how humans perceive them—to improve the experience for your users.
10 years of Node with Gabriel Schulhof from Intel
https://www.nearform.com/blog/10-years-of-node-with-gabriel-schulhof-from-intel/
In this post we speak with Gabriel Schulhof, a software engineer at Intel Corporation to hear his views on the importance of the community and its continuity and in finding the future collaborators to progress node.js to other computing environments.
The perfect architecture flow for your next Node.js project
https://blog.logrocket.com/the-perfect-architecture-flow-for-your-next-node-js-project/
Laying out a project’s structure in a practical way is one of the hardest points of the development process and, indeed, a delicate one. By looking at the previous articles I have written here on LogRocket, we can define a path about discussing Node.js technologies, how to choose what front-end framework to use, and now we can try to dig deeper on how to structure our web apps once we have decided on the tech stack to use.
How Netflix microservices tackle dataset pub-sub
https://medium.com/netflix-techblog/how-netflix-microservices-tackle-dataset-pub-sub-4a068adcc9a
At Netflix we use an in-house dataset pub/sub system called Gutenberg. Gutenberg allows for propagating versioned datasets — consumers subscribe to data and are updated to the latest versions when they are published. Each version of the dataset is immutable and represents a complete view of the data — there is no dependency on previous versions of data. Gutenberg allows browsing older versions of data for use cases such as debugging, rapid mitigation of data related incidents, and re-training of machine-learning models. This post is a high level overview of the design and architecture of Gutenberg.
How Dropbox Security builds tools for threat detection and incident response
https://blogs.dropbox.com/tech/2019/10/how-dropbox-security-builds-better-tools-for-threat-detection-and-incident-response/
The Dropbox Detection and Response Team (DART) detects and mitigates information security threats to our employees, infrastructure, and customer data. DART ingests security-relevant logs for building detection, threat hunting and responding to potential incidents. Our log volume is huge, averaging tens of terabytes a day.
Making the Tokio scheduler 10x faster
https://tokio.rs/blog/2019-10-scheduler/
We’ve been hard at work on the next major revision of Tokio, Rust’s asynchronous runtime. Today, a complete rewrite of the scheduler has been submitted as a pull request. The result is huge performance and latency improvements. Some benchmarks saw a 10x speed up! It is always unclear how much these kinds of improvements impact “full stack” use cases, so we’ve also tested how these scheduler improvements impacted use cases like Hyper and Tonic (spoiler: it’s really good).
Act locally, connect globally with IoT and edge computing
https://www.allthingsdistributed.com/2019/10/global-iot-edge-computing.html
In this post, I want to talk about edge computing, the power to have compute resources and decision-making capabilities in disparate locations, often with intermittent or no connectivity to the cloud. In other words, process the data closer to where it’s created.
How AWS built a production service using serverless technologies
https://aws.amazon.com/cn/blogs/opensource/real-world-serverless-application/
We are excited to announce that we have published a new open source project designed to help customers learn from Amazon’s approach to building serverless applications. The project captures key architectural components, code structure, deployment techniques, testing approaches, and operational practices of the AWS Serverless Application Repository, a production-grade AWS service written mainly in Java and built using serverless technologies. We wanted to give customers an opportunity to learn more about serverless development through an open and well-documented code base that has years of Amazon best practices built in.
Fighting fraud using partially blind signatures
https://engineering.fb.com/security/partially-blind-signatures/
We shared research we’re doing to explore a new approach to reporting events with greater anonymity — while still combatting fraud — by using cryptographic techniques like blind signatures. We believe that if browser makers and application developers work together to define a new set of APIs that leverage these techniques, combatting fraud will require less information to be collected from the people who use these browsers and apps. In this post, we’ll talk about the challenges of private fraud-resistant reporting and suggest a possible industry-wide solution using anonymized logging and blind signatures.
Video Architecture Search
https://ai.googleblog.com/2019/10/video-architecture-search.html
To our knowledge, this is the very first work on neural architecture search for video understanding. The video architectures we generate with our new evolutionary algorithms outperform the best known hand-designed CNN architectures on public datasets, by a significant margin. We also show that learning computationally efficient video models, TinyVideoNets, is possible with architecture evolution. This research opens new directions and demonstrates the promise of machine-evolved CNNs for video understanding.
Functional RL with Keras and Tensorflow Eager
https://bair.berkeley.edu/blog/2019/10/14/functional-rl/
In this blog post, we explore a functional paradigm for implementing reinforcement learning (RL) algorithms. The paradigm will be that developers write the numerics of their algorithm as independent, pure functions, and then use a library to compile them into policies that can be trained at scale. We share how these ideas were implemented in RLlib’s policy builder API, eliminating thousands of lines of “glue” code and bringing support for Keras and TensorFlow 2.0.
FPGA design for Software Engineers
https://www.walknsqualk.com/post/014-tiny-fpga-bx/
Over the last few years I’ve gotten more interested in electronics and FPGA design. I’ve also noticed that a lot of other software folks seem interested in doing the same, but often don’t know where to start. So, I think I have some interesting advice for software engineers that feel like dipping their toes into the hardware world from the point of view of a software engineer. In this post I’ll go over FPGAs in general, the basics of the Verilog language, simulating a design and deploying it to an inexpensive TinyFPGA-BX board.
新鲜货
Should We Rebrand JavaScript?
https://kieranpotts.com/rebranding-javascript/
An interesting question was asked recently in LinkedIn’s JavaScript group: Does JavaScript need to be renamed? The question really got me thinking. If we did rebrand JavaScript, what would we call it?
Hack for Good
https://blog.angular.io/hack-for-good-6b500f1946a3
The Angular and NativeScript teams teamed up last month to organise the first ng-ns Hack For Good — an online hackathon with prizes, where all participants were asked to build mobile apps with NativeScript Angular for NGOs and good causes.
Ionic React
https://ionicframework.com/blog/announcing-ionic-react/
Ionic React represents the most significant change in Ionic Framework’s history and opens up Ionic Framework to a whole new audience. Given that, we’d like to tell a bit of the story about how we got here, why we built it, and who it’s for.
IPFS Camp Keynotes and Interviews
https://blog.ipfs.io/2019-10-14-ipfs-camp-keynotes-interviews/
If you’ve been following the many IPFS Camp updates here in the blog, you’ve likely already explored the videos from our lightning talks, deep dives, poster projects, core and elective courses, and most recently the SciFi Fair. Today, we’re excited to share the Keynotes that brought us together on our first and last days of IPFS Camp, and the Community Interviews that highlight some of the amazing work being done by IPFS Camp attendees in the wider ecosystem.
Firefox’s New WebSocket Inspector
https://hacks.mozilla.org/2019/10/firefoxs-new-websocket-inspector/
We are especially excited about our new WebSocket inspection feature, because you told us in feedback how important it would be for your daily work. The WebSocket inspector will be released in Firefox 71, but is ready for you to use in Firefox Developer Edition now. 另附:Developing cross-browser extensions with Mozilla web-ext 3.2.0 .
WebAssembly.sh
https://webassembly.sh/
https://medium.com/wasmer/webassembly-sh-408b010c14db
An online WebAssembly Terminal to run WASI modules directly on your browser
What’s New In Python 3.8
https://docs.python.org/3/whatsnew/3.8.html
Python 3.8 was released on October 14th, 2019. This article explains the new features in Python 3.8, compared to 3.7. For full details, see the changelog. 另附:Django 3.0 beta 1 released
Popper.js
https://github.com/FezVrasta/popper.js
A kickass library to manage your poppers.
Toucaan—A Tropical CSS Framework for The Web
https://github.com/bookiza/toucaan
https://bubblin.io/blog/toucaan-introduction
Toucaan is full of fun facts, interesting patterns and great documentation to style the apps of the new world. It is easy and logical, and tries to get out of the way as soon as it can.
Hexo 4.0 — Node powered blog framework
https://github.com/hexojs/hexo/releases/tag/4.0.0
A fast, simple & powerful blog framework, powered by Node.js.
Flyimg
https://github.com/flyimg/flyimg
Image resizing, cropping and compression on the fly with the impressive MozJPEG compression algorithm. One Docker container to build your own Cloudinary-like service. Flyimg can be deployed to GCP as a serverless container in one click with Cloud Run Button.
Node-convict
https://github.com/mozilla/node-convict
Convict expands on the standard pattern of configuring node.js applications in a way that is more robust and accessible to collaborators, who may have less interest in digging through imperative code in order to inspect or modify settings. By introducing a configuration schema, convict gives project collaborators more context on each setting and enables validation and early failures for when configuration goes wrong.
Zero: A graphics pipeline implemented in JavaScript and rendered to the terminal
https://github.com/sinclairzx81/zero
Zero is a small graphics app that uses JavaScript to replicate the functionality of a GPU and uses the terminal to display its rendered output via nodejs’ stdout. Zero was written for fun as well as to see how far one could reasonably push JavaScript performance. Rendering has been tested on Windows, OSX and Linux terminals. 另附:Chalk - Coloring Your Terminal Using Nodejs.
Aquameta
https://github.com/aquametalabs/aquameta
Aquameta is a web-based IDE for full-stack web development. Developers can manage HTML, CSS, Javascript, database schema, views, templates, routes, tests and documentation, and do version control, branching, pushing, pulling, user management and permissions, all from a single web-based IDE. In theory. And mostly in practice.
Assist
https://assist.app/
Instant terminal sharing from anywhere. Unblock your remote team.
Free for developers
https://free-for.dev/#/
Developers and Open Source authors now have a massive amount of services offering free tiers, but it can be hard to find them all in order to make informed decisions. This is a list of software (SaaS, PaaS, IaaS, etc.) and other offerings that have free tiers for developers.
Serenity - Graphical Unix-like operating system for x86 computers
https://github.com/SerenityOS/serenity
http://www.serenityos.org/happy/1st/index.html
I always wondered what it would be like to write my own operating system, but I never took it seriously. Until now. Serenity is a love letter to ’90s user interfaces with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems. Roughly speaking, the goal is a marriage between the aesthetic of late-1990s productivity software and the power-user accessibility of late-2000s *
nix. This is a system by me, for me, based on the things I like.
2,500 More MS-DOS Games Playable at the Archive
https://blog.archive.org/2019/10/13/2500-more-ms-dos-games-playable-at-the-archive/
Another few thousand DOS Games are playable at the Internet Archive! Since our initial announcement in 2015, we’ve added occasional new games here and there to the collection, but this will be our biggest update yet, ranging from tiny recent independent productions to long-forgotten big-name releases from decades ago.
BrachioGraph - the cheapest, simplest possible pen-plotter
https://brachiograph.readthedocs.io/en/latest/
BrachioGraph - arm-writer - is an easy-to-build pen-plotter, driven by a library of simple Python applications.
Music Theory for Musicians and Normal People
https://tobyrush.com/theorypages/index.html
This page includes links to each of the individual Music Theory pages I’ve created in PDF form. This is a work in progress; I am writing new ones regularly and fixing errors and omissions on existing ones as I find them.
设计
Harmony by Design
https://medium.com/microsoft-design/harmony-by-design-b286377ea730
Striving for balance between nature and technology. “All of these different technologies or touchpoints are about the human’s need,” said Jonah. “Whether it is the humans in their space, the humans in virtual space, or the humans actually being fed.” These interactions present opportunities for people to experience technology, for better or worse. As designers, we must anticipate imbalance, explore the unknowns, and build harmonious solutions.
Future of Artificial Intelligence in Design
https://uxplanet.org/future-of-artificial-intelligence-in-design-ce8f4e7a2adc
“Artificial intelligence”–as though AI was going to work as some kind of magic-tech. A more useful way to think about AI — at least for the short-term — is “Augmented Intelligence.”
How Frontend Developers Can Empower Designer’s Work
https://www.smashingmagazine.com/2019/10/frontend-developers-empower-designers-work/
As a frontend developer, I want to apologize to the designers out there for all the misunderstandings that have happened in the past. I think it’s time for us developers to improve our awareness of the designers’ role and show them that we can — and should — look beyond our own screens.
超多案例帮你读懂交互设计7大定律
https://www.uisdc.com/7-interactive-design-law
我们在产品设计的过程中会经历非常多的决策阶段,大到一个功能流程的闭环设计,小到思考一个元素的最合理布局,在这些场景中,我们首选的解决方案当然是更适合当前功能特性和使用场景的方案,如果没有合适的方案或者在几种方案面前犹豫不决时,一般都会选择遵守设计规则和接近设计规则的那个方案。这些所谓的规则也是交互设计的基础理论和方法论,我们能否在工作中信手拈来并且灵活运用它呢?同时也为了将来能够掌握「舌战群猿」这门高级技能,我们还是要从打牢基础开始。今天就让我们回到起点,聊一聊交互设计的 7 大定律。
产品及其它
Google and Ambient Computing
https://stratechery.com/2019/google-and-ambient-computing/
The most surprising revelation from yesterday’s Made by Google 19 keynote came in Google Senior Vice President of Devices and Services Rick Osterloh’s opening remarks: If you look across all of Google’s products, from Search to Maps, Gmail to Photos, our mission is to bring a more helpful Google for you. Creating tools that help you increase your knowledge, success, health, and happiness. Now when we apply that mission to hardware and services, it means creating products like…Pixel phones, wearables, laptops, and Nest devices for the home. Each one is thoughtfully and responsibly designed to help you day to day without intruding on your life.
Asynchronous Communication: The Real Reason Remote Workers Are More Productive
https://doist.com/blog/asynchronous-communication/
While I think remote work is the future, I believe that asynchronous communication is an even more important factor in team productivity, whether your team is remote or not. We know that we are challenging the status quo and that calm, asynchronous communication isn’t the current norm. It’s going to take a paradigm shift to change things. We’re betting that in the future, the most successful companies and teams will be the ones who make this shift. It will be the teams that don’t require their employees to be always-on, prioritize asynchronous communication to create space for deep work, and allow employees to disconnect and recharge fully.
将“邀请有礼”玩到极致:从10万到150万,复盘简报产品的增长黑客
https://36kr.com/p/5255979
简单的“邀请有礼”玩法,被新闻简报公司Morning Brew玩到极致。2017年,它只有10万订阅用户,在短短18个月内,其用户数增长至150万,其中30%来自用户推荐。Morning Brew成功的秘诀是,它设计了一个推荐体系,将已有老用户变成行走的广告牌,激励他们向别人推荐这个产品,从而带来大量新用户。本期全媒派(ID: quanmeipai)带来Morning Brew的产品负责人Tyler Denk的复盘文章,深入拆解用户增长的思路与方法。
巨象觉醒故事:IBM怎样从破产边缘起死回生
https://mp.weixin.qq.com/s?__biz=MzUzOTc4NDQxMQ==&mid=2247491217&idx=2&sn=07298c6bf4f9be0657ef0645fb244d36
在崇尚精益创业、强调敏捷思维的今天,不少人潜意识中似乎存在着一条“公理”,那就是“小”就是“好的”,而“大”则与“臃肿”、“迟缓”等各类负面标签连接在了一起。在这种思维定势中,小公司动作敏捷、有创业精神、反应迅速以及高效率,大公司却动作缓慢、官僚气息浓厚、反应迟钝以及缺乏效率。曾经担任IBM公司CEO的郭士纳却持有完全相反的想法。他说,“我还从来没见过有哪家小公司不愿意成长为大公司的,也从来没有见过哪家小公司不眼红大公司的研究和营销预算,或者大公司销售人员的规模以及势力范围的。”在郭士纳看来,大,很重要。因为规模就是杠杆。深度和广度可以容纳更大的投资、更大的风险以及更长久地对未来进行投入。“这不是大象是否能够战胜蚂蚁的问题,这是一头大象是否能够跳舞的问题。如果大象能够跳舞,那么蚂蚁就必须离开舞台。”而IBM公司就是这样一头想要起舞的大象。另附:长期主义,就是扔掉投票器,踏上称重机。