FEX 技术周刊 - 2019/10/14
深阅读
Top-level await
https://v8.dev/features/top-level-await
Top-level await enables developers to use the await keyword outside of async functions. It acts like a big async function causing other modules who import them to wait before they start evaluating their body.
另附:The V8 Engine and JavaScript Optimization Tips.
The State of Machine Learning Frameworks in 2019
https://thegradient.pub/state-of-ml-frameworks-2019-pytorch-dominates-research-tensorflow-dominates-industry/
In 2019, the war for ML frameworks has two remaining main contenders: PyTorch and TensorFlow. My analysis suggests that researchers are abandoning TensorFlow and flocking to PyTorch in droves. Meanwhile in industry, Tensorflow is currently the platform of choice, but that may not be true for long.
Tools I recommend for building Geospatial Web Applications
https://medium.com/swlh/tools-i-recommend-for-building-geospatial-web-applications-274d6939536c
Being a freelance WebGIS developer, it is very frequent for me to decide what tools I’ll need for my next project. Now after a few years of experience, this decision has become a bit easier because of prior knowledge and I thought I should share it with all those who want to build a Geospatial Webapp.
Vue 3.0 公开代码之后……
https://mp.weixin.qq.com/s/_9XaMyAv0NjJRvwKEEleuw
源码公开后不久,社区内就有源码解析的文章出现,甚至还有培训课程打出了《从0实现 Vue 3.0 响应式源码》的噱头。尽管有一些“学不动了”的自嘲,社区里对 Vue 3.0 源码开放事件,总体上是一个非常正面的态度。在这种背景下,我注意到了两段争论,一个来自国外社区,一个来自国内;它们围绕不同的主题,却恰好拥有相同的内核。颇有意思,我认为值得分享给大家。
AntV 发布 G6 3.1 —— 潜心
https://zhuanlan.zhihu.com/p/85702103
自 G6 诞生以来,由 G6 承接的业务可以分为两大类,一类是图分析,另一类是图编辑。两者虽然有一定的程度上的相似,但各自的侧重点不同,前者更注重图数据的分析体验。后者更注重交互的编辑体验。之前我们使用 G6 来同时支持这两种不同类型的业务,从实际效果来看,并不能达到我们的期望。从 G6 3.1 版本开始,我们更侧重于图分析领域。
Umi UI 二期来了
https://github.com/sorrycc/blog/issues/87
Umi UI 一期做好了一个架子,但只是包含一些基础功能,而要做提效,则需要一些实打实的功能。一个月后的 Umi UI 二期带来了一些进阶功能,比如资产(区块+模板)、Mini 气泡、编译态同步、build 和 dev 文件分析等。
小程序底层实现原理及一些思考
https://zhuanlan.zhihu.com/p/81775922
两月以后,看着电脑,我回想起接到通知说要开发小程序引擎的那个下午。当时的我以为,这个小程序和其他小程序都不一样,因为它是个假的,其实是个网页。两月之后,我才发现,“噢~原来大家都是这么做的啊”。最近一直在做小程序的底层实现,过程中磕磕绊绊也多次进行架构方向上的转型,趁着周末抽空写一篇文章记录一下开发过程中遇到的问题和一些思考与决策。本篇文章更多的是在描述架构与技术方向层面的思考和决策,不会过多介绍具体某个问题是如何解决的,因为细节实在太多。
[译]一位开发者的幽默独白:JavaScript工具怎么就这么烂
https://mp.weixin.qq.com/s?__biz=MzUxMzcxMzE5Ng==&mid=2247492706&idx=1&sn=06f434b05e00b4b6950e10032d785be7
JavaScript 工具难用吗?作为 JavaScript 开发者的你是否早已对其叫苦不迭。本文将主要描述 JavaScript 工具的各种相关缺点,并解释这些缺点产生的原因。接下来就让我们一起跟随作者,看一看 JavaScript 工具“烂”在哪些方面。
The Full-stack Software Design & Architecture Map
https://khalilstemmler.com/articles/software-design-architecture/full-stack-software-design/
Software Design and Architecture is pretty much it’s own field of study within the realm of computing, like DevOps or UX Design. Here’s a map describing the breadth of software design and architecture, from clean code to microkernels.
99% of the Git commands you’ll need at work, demonstrated in a single script
https://bitbucket.org/BitPusher16/dotfiles/raw/49a01d929dcaebcca68bbb1859b4ac1aea93b073/refs/git/git_examples.sh
this script creates repos in a sandbox directory and uses them for demos. add an exit command anywhere to stop the script and examine repo state. rerun the script freely. it cleans up the sandbox before each run. the sandbox dir is ignored so created files are not added to any uber repo.
The Evolution of Web Content Management
https://remotesynthesis.com/blog/evolution-of-web-content-manaagement
The next step is simplifying the process of developing JAMStack sites that are tied to content sources (a headless CMS, an API, or any of a number of data sources). Some part of this already started with tools like NetlifyCMS - which has a one click deploy of a CMS-backed JAMStack site - and has continued with services like Stackbit - which allows you to deploy a site by choosing a static site generator and a headless CMS and deploy it in minutes with just a few clicks.
Making Instagram.com faster: Part 3 — cache first
https://instagram-engineering.com/making-instagram-com-faster-part-3-cache-first-6f3f130b9669
In recent years instagram.com has seen a lot of changes — we’ve launched stories, filters, creation tools, notifications, and direct messaging as well as a myriad of other features and enhancements. However, as the product grew, a side effect was that our web performance began to slow. Over the last year we made a conscious effort to improve this. This ongoing effort has thus far resulted in almost 50% cumulative improvement to our feed page load time. This series of blog posts will outline some of the work we’ve done that led to these improvements. In part 1 we talked about prefetching data and in part 2 we talked about improving performance by pushing data directly to the client rather than waiting for the client to request the data.
Adding Static Code Analysis to Stack Overflow
https://stackoverflow.blog/2019/10/08/adding-static-code-analysis-to-stack-overflow/
we’re applying static analysis to some of the code behind public Stack Overflow, Stack Overflow for Teams, and Stack Overflow Enterprise in order to pre-emptively find and eliminate certain kinds of vulnerabilities. How we accomplished this is an interesting story and also illustrative of advancements in .NET’s open source community.
Scribe: Transporting petabytes per hour via a distributed, buffered queueing system
https://engineering.fb.com/data-infrastructure/scribe/
Our hardware infrastructure comprises millions of machines, all of which generate logs that we need to process, store, and serve. The total size of these logs is several petabytes every hour. The outputs are generally processed somewhere other than where they were generated: They can be relevant to a variety of downstream processing pipelines and may each need to be accessed at different times. The task of collecting, aggregating, and delivering this volume of logs (with low latency and high throughput) requires a systematic approach. Our solution is Scribe, a distributed queueing system that encapsulates all the complexity behind moving service logs from point A to point B.
How LinkedIn customizes Apache Kafka for 7 trillion messages per day
https://engineering.linkedin.com/blog/2019/apache-kafka-trillion-messages
We maintain over 100 Kafka clusters with more than 4,000 brokers, which serve more than 100,000 topics and 7 million partitions. The total number of messages handled by LinkedIn’s Kafka deployments recently surpassed 7 trillion per day.
Why Salesforce Moved from Python to Go
https://stackoverflow.blog/2019/10/07/how-salesforce-converted-einstein-analytics-to-go/
Here at Salesforce, we had just this situation arise in the past few years. We ported most of our Einstein Analytics backend from a Python-C hybrid to Go. Go is a language that Google designed for large-scale, modern software engineering. The story goes that Google engineers had the idea to create a language designed for their large-scale applications and started designing Go while they were waiting for their massive C++ projects to compile. This post will discuss our experience in moving enterprise-level software from a C-Python hybrid over to an (almost) completely Go application.
另附:Uber Go Style Guide.
Understanding Scheduling Behavior with SchedViz
https://opensource.googleblog.com/2019/10/understanding-scheduling-behavior-with.html
Linux kernel scheduling behavior can be a key factor in application responsiveness and system utilization. Today, we’re announcing SchedViz, a new tool for visualizing Linux kernel scheduling behavior. We’ve used it inside Google to discover many opportunities for better scheduling choices and to root-cause many latency issues.
PyPy’s new JSON parser
https://morepypy.blogspot.com/2019/10/pypys-new-json-parser.html
In the last year or two I have worked on and off on making PyPy’s JSON faster, particularly when parsing large JSON files. In this post I am going to document those techniques and measure their performance impact.
Improving the Getting Started experience with AWS Lambda
https://aws.amazon.com/cn/blogs/compute/improving-the-getting-started-experience-with-aws-lambda/
To help you start right with serverless, AWS has added a Create application experience to the Lambda console. This enables you to create serverless applications from ready-to-use sample applications, which follow these best practices:
- Use infrastructure as code (IaC) for defining application resources
- Provide a continuous integration and continuous deployment (CI/CD) pipeline for deployment
- Exemplify best practices in serverless application structure and methods
另附:Fission: Serverless Functions for Kubernetes.
Stop Calling it Bad Code
https://blog.pragmaticengineer.com/bad-code/
By not using generic and negative terms like “bad”, conversations about code become constructive. Instead of starting with an emotional statement - this code is bad! - you’re now starting with observations and suggestions. Using this approach, people who you give feedback to will not feel threatened and act reflexively defensive, pushing back on your comments. That is what would happen if you started with vague and judging terms, like “bad code”.
Eight Habits of Expert Software Designers: An Illustrated Guide
https://thereader.mitpress.mit.edu/habits-of-expert-software-designers/
The best designers employ specific habits, learned practices, and observed principles when they work. Here are a few of them.
新鲜货
WebXR Augmented Reality Module - Level 1
https://www.w3.org/TR/2019/WD-webxr-ar-module-1-20191010/
Hardware that enables Virtual Reality (VR) and Augmented Reality (AR) applications are now broadly available to consumers, offering an immersive computing platform with both new opportunities and challenges. The ability to interact directly with immersive hardware is critical to ensuring that the web is well equipped to operate as a first-class citizen in this environment. The WebXR Augmented Reality module expands the functionality available to developers when their code is running on AR hardware.
OpenJS Foundation welcomes AMP project to help improve user experience on the web
https://openjsf.org/blog/2019/10/10/openjs-foundation-welcomes-amp-project-to-help-improve-user-experience-on-the-web/
The OpenJS Foundation, providing vendor-neutral support for sustained growth within the open source JavaScript community, announced today that the open source web component framework AMP will be joining the Foundation’s incubation program.
另附:OpenJS Foundation welcomes first Incubating project: Node Version Manager. (nvm).
Docker Enterprise: The First DISA STIG’ed Container Platform!
https://www.docker.com/blog/docker-enterprise-first-disa-stig-container-platform/
Docker Enterprise was built to be secure by default. When you build a secure by default platform, you need to consider security validation and governmental use. Docker Enterprise has become the first container platform to complete the Security Technical Implementation Guides (STIG) certification process. Thanks to Defense Information Systems Agency (DISA) for its support and sponsorship. Being the first container platform to complete the STIG process through DISA means a great deal to the entire Docker team.
Aliyun Serverless VSCode Extension
https://github.com/alibaba/serverless-vscode
Aliyun Serverless VSCode Extension 是阿里云 Serverless 产品 函数计算 Function Compute 的 VSCode 插件,该插件结合了函数计算 Fun 工具以及函数计算 SDK ,是一款 VSCode 图形化开发调试函数计算以及操作函数计算资源的工具。通过该插件,您可以:
- 快速地在本地初始化项目、创建服务函数
- 运行调试本地函数、部署服务函数至云端
- 拉取云端的服务函数列表、查看服务函数配置信息、调用云端函数
- 获得模版文件的语法提示: 自动补全、Schema 校验、悬浮提示
另附:Visual Studio Remotes: Simplifying developer environments.
The JS13kGames Winners
https://js13kgames.com/#winners
https://github.blog/2019-10-08-js13k-2019-highlights/
Js13kGames is a JavaScript coding competition for HTML5 Game Developers. The fun part of the compo is the file size limit set to 13 kilobytes.
Introducing Create Next App
https://nextjs.org/blog/create-next-app
Create Next App sets up a modern React application powered by Next.js in one command.
Nock
https://github.com/nock/nock
HTTP server mocking and expectations library for Node.js. Nock can be used to test modules that perform HTTP requests in isolation. For instance, if a module performs HTTP requests to a CouchDB server or makes HTTP requests to the Amazon API, you can test that module in isolation.
Sinuous
https://sinuous.netlify.com/
Sinuous is a small, blazing fast, reactive UI library. Sinuous provides the clarity of declarative views and the performance of direct DOM manipulation. It was built with these ideas in mind. Small: use in other mini libraries like custom elements. Simple: plain Javascript feel; template literals, standard HTML. Performance: top ranked of 80+ UI libs
Moveable
https://github.com/daybrush/moveable
Moveable is Draggable, Resizable, Scalable, Rotatable, Warpable, Pinchable, Groupable, Snappable
React Hook Form
https://react-hook-form.com/
Performant, flexible and extensible forms with easy to use for validation.
react-tippy
https://tvkhoa.github.io/testlib/
A lightweight tooltip for React.
roughViz
https://github.com/jwilber/roughViz
Reusable JavaScript library for creating sketchy/hand-drawn styled charts in the browser.
Streamlit - The fastest way to build custom ML tools
https://streamlit.io/
https://towardsdatascience.com/coding-ml-tools-like-you-code-ml-models-ddba3357eace
Streamlit is the first app framework specifically for Machine Learning and Data Science teams.
So you can stop spending time on frontend development and get back to what you do best.
N8n.io
https://n8n.io/
Open Source Alternative for Zapier/tray.io. What can be done with n8n?
- Automate daily tasks Get rid of boring daily task. For example, compose every day an email from data which gets aggregated from different tools like Google Sheets or Pipedrive.
- Sync Data Synchronise data between different apps/databases. For example sync data between Postgres and multiple Google Sheets. React to events
- Execute a task every time something happens. For example, get a Slack message every time a new deal get created in Pipedrive and additionally add it to a Google Sheets.
Collapse OS
https://collapseos.org/
Winter is coming and Collapse OS aims to soften the blow. It is a z80 kernel and a collection of programs, tools and documentation that allows you to assemble an OS that can:
- Run on minimal and improvised machines.
- Interface through improvised means (serial, keyboard, display).
- Edit text files.
- Compile assembler source files for a wide range of MCUs and CPUs.
- Read and write from a wide range of storage devices.
- Replicate itself. Additionally, the goal of this project is to be as self-contained as possible. With a copy of this project, a capable and creative person should be able to manage to build and install Collapse OS without external resources (i.e. internet) on a machine of her design, built from scavenged parts with low-tech tools.
Bel
http://paulgraham.com/bel.html
Bel is a spec for a new dialect of Lisp, written in itself. This should sound familiar to people who know about Lisp’s origins, because it’s the way Lisp began. It consists of two text files meant to be read in parallel: a guide to the Bel language, and the Bel source.
设计
Design Challenge — Rethinking Medium UI/UX design
https://medium.com/sketch-app-sources/design-challenge-rethinking-medium-ui-ux-design-e2fa8e7d4d1
I have been a user on Medium for years. I enjoy reading tons of inspiring articles and sharing my thoughts about design, art, and life with people. I have two identities on Medium, reader, and writer. As a product designer, I have seen the positive features of Medium.
The Future of UX Is Our Humanity
https://www.toptal.com/designers/ui/the-future-of-ux
The UX field has changed as new and emerging technologies dominate product development. However, the true value a UX professional brings to the design process doesn’t come from tech knowledge, but from human-centered skills, and in order for UX to continue to evolve, development of these “soft” skills is crucial.
Facebook Design: Images and Sketch Files of Popular Devices
https://facebook.design/devices
Facebook supports a diverse audience around the world and an equally diverse set of devices. To emphasize that in our design mocks, we redrew a range of devices to show the global diversity of the people using our products. Each device comes with a bitmap of the device (with and without shadows) and the original Sketch file for that device. We’ve incorporated many of these devices into Origami and worked with the Framer Team to add them to Framer as well.
写给设计师的数据可视化指南
https://www.uisdc.com/data-visualization-design
掌握数据可视化能力,是面向未来的设计师所必备的能力。然而尴尬的是,国内没有一款针对于教学数据可视化的全套解决方案,这让很多渴望学习的设计师摸不着头脑。所以这也促使我开启了这个系列――「设计师需要了解的数据可视化」,希望能够给大家带来一些不一样的内容,为大家梳理一个完整的数据可视化框架。
产品及其它
Material Design 设计奖揭晓,Google 选出了 4 款最佳应用
https://sspai.com/post/56961
Ruff:主题表达奖. Reflectly:创新交互奖. Scripts:用户体验奖. Trip.com:最佳通用性
Writing is Thinking: Learning to Write with Confidence
https://blog.stephsmith.io/learning-to-write-with-confidence/
If you told me 5 years ago that I would one day lead a 20-person Publications team or have a personal blog that’s read by hundreds of thousands, I would’ve laughed in surprise. Yet somehow, I’ve found myself in that reality. Here we are. People often ask how I approach writing, so I decided to share this piece to sway the self-conscious writer inside each one of us. I hope it encourages others to develop a practice that enables them to write with confidence, by simply sharing how I’ve designed my own.
领袖毛泽东如何从事业低谷中崛起
https://mp.weixin.qq.com/s/e10jfnjUqGBOP2JNN0FTqg
逆境和挫折谁都会遇到,要想不断进步、事业成功,就有一个不断接受挑战、不断克服逆境的过程,甚至需要在绝望处求生存、谋发展。从这个意义上讲,学习伟人毛泽东走出逆境、走向胜利的智慧,会对我们有所启发和鼓励。
对数据可视化有兴趣的可以阅读由 AntV 带来的 墨者修齐 2019-10-14·首都机场 vs 大兴机场、大国重器东风快递、衡量一个国家
– THE END –