FEX 技术周刊 - 2018/09/17
深阅读
Next Generation Package Management
https://blog.npmjs.org/post/178027064160/next-generation-package-management
What if installs were so fast they could happen in the background, just by using Node? What if every file in your dependencies could be guaranteed to be bit-by-bit identical to what’s on the registry? What if working on a new project was as simple as clone and run? What if your build tools got out of your way? Introducing tink, a proof of concept implementation of an install-less installer. 另附:Yarn Plug’n’Play: Getting rid of node_modules
Introducing the React Profiler
https://reactjs.org/blog/2018/09/10/introducing-the-react-profiler.html
React 16.5 adds support for a new DevTools profiler plugin. This plugin uses React’s experimental Profiler API to collect timing information about each component that’s rendered in order to identify performance bottlenecks in React applications. It will be fully compatible with our upcoming time slicing and suspense features. 另附:The Rise of Immer in React
Celebrating 10 years of V8
https://v8project.blogspot.com/2018/09/10-years.html
This month marks the 10-year anniversary of shipping not just Google Chrome, but also the V8 project. This post gives an overview of major milestones for the V8 project in the past 10 years as well as the years before, when the project was still secret. 另附:10 years of Speed in Chrome、How we designed Chrome 10 years ago
Breaking the Deadlock Between User Experience and Developer Experience
https://alistapart.com/article/breaking-the-deadlock-between-user-experience-and-developer-experience
It’s tempting to frame UX and DX as opposing forces in a zero-sum game: for one to get better, the other needs to get worse. And in many apps, that certainly appears to be the case. DX at the expense of UX is a design problem. If software is designed to make developers’ lives easier without considering the user, it’s no wonder that problems arise later on.
ARKit:增强现实技术在美团到餐业务的实践
https://tech.meituan.com/def_ar.html
本文将结合美团到餐业务场景,介绍一种基于位置服务(LBS)的 AR 应用。使用 AR 的方式展现商家相对用户的位置,这会给用户带来身临其境的沉浸式体验。
面向体验的重构优化
https://zhuanlan.zhihu.com/p/44203056
前端重构程序员是一个关注代码同时还要留意体验的异类。代码的优化虽然难,但是有比较多的性能测试工具去证明优化的成果。然而体验这种东西,我们又要如何去证明它的好与坏呢?今天我着重会基于「webnovel」PC站点从以上两点给大家介绍,如何从体验的角度去做重构的优化,并如何用数据去证明你的优化是有效果的。
如何降低软件的复杂性
http://www.ruanyifeng.com/blog/2018/09/complexity.html
John Ousterhout 是斯坦福大学计算机系教授,也是 Tcl 语言的创造者。Ousterhout 教授认为,软件设计的最大目标,就是降低复杂性(complexity)。 所谓复杂性,就是任何使得软件难于理解和修改的因素。复杂性的来源主要有两个:代码的含义模糊和互相依赖。
What I Learnt Creating Guitar Dashboard: SVG, TypeScript and Music Theory
http://mikehadlow.blogspot.com/2018/09/what-i-learned-creating-guitar.html
Guitar Dashboard is a side project I’ve been working on occasionally over the past two years. It’s an open source web application. It’s intended as an interactive music theory explorer for guitarists that graphically links theoretical concepts, such as scales, modes and chords to the guitar fretboard. This post outlines what I’ve learnt, technically and musically while building Guitar Dashboard. There are probably things here that are only interesting to software developers, and others only of interest to musicians, but I expect there’s a sizable group of people, like me, who fit in the intersection of that Venn diagram and who will find it interesting. 另附:Hacklily – sheet music editor
You-Dont-Need-Momentjs
https://github.com/you-dont-need/You-Dont-Need-Momentjs
List of date-fns or native functions which you can use to replace moment.js + ESLint Plugin.
The 12 Things You Need to Consider When Evaluating Any New JavaScript Library
https://medium.freecodecamp.org/the-12-things-you-need-to-consider-when-evaluating-any-new-javascript-library-3908c4ed3f49
How do you know if a new technology is worth investing time into? For this year’s State of JavaScript survey I wanted to dig a little bit deeper, and not only know which tools and libraries people were using, but also why they were using them. Which means I had to find a way to translate personal preferences into cold, hard data. After some research, I came up with a 12-point scale that covers the main aspects of picking and working with any technology.
Evolving mobile architecture at Reddit
https://redditblog.com/2018/09/12/evolving-mobile-architecture-at-reddit/
This is the first in a series on the architectural work we’ve been doing on the Reddit iOS app. This first part will discuss the work we’ve done closer to the UI. In particular, we’ll discuss how our move to a Model-View-Presenter (MVP) architecture.
What makes ReasonML so great?
https://blog.logrocket.com/what-makes-reasonml-so-great-c2c2fc215ccb
ReasonML is a syntax extension for the OCaml language created by Facebook. Rather than creating an entirely new language, the creators of Reason chose to build on top of OCaml, a battle-tested functional systems programming language that’s been around since the late 1990s. 另附:Reason vs JavaScript.
Speedy Introduction to Web Workers
https://auth0.com/blog/speedy-introduction-to-web-workers/
Learn how to use web workers in JavaScript to create parallel programming and perform multiple operations simultaneously rather than interleaving them. 另附 auth0 实践:Our Engineering Experience with React and Storybook.
How Discord Handles Two and Half Million Concurrent Voice Users using WebRTC
https://blog.discordapp.com/how-discord-handles-two-and-half-million-concurrent-voice-users-using-webrtc-ce01c3187429
From the very start, we made very conscious engineering and product decisions to keep Discord well suited for voice chat while playing your favorite game with your friends. These decisions enabled us to massively scale our operation with a small team and limited resources. This post gives a brief overview of the different technologies Discord uses to make audio/video communications a seamless reality.
Debugging Node.js Application Using ndb
https://nitayneeman.com/posts/debugging-nodejs-application-in-chrome-devtools-using-ndb/
Google Chrome Labs have improved our debugging experience by releasing a new debugger for Node.js. In this post, we’ll cover the capabilities of ndb as a debugging tool.
Defining Roles-based Security ACLs and Supporting Multitenancy in the Node.js Strongloop Loopback framework
https://druckit.wordpress.com/2018/09/12/defining-roles-based-security-acls-and-supporting-multitenancy-in-the-node-js-strongloop-loopback-framework/
Strongloop Loopback (https://loopback.io) is a Node.js framework that extends Express.js and makes it easy for developers to create REST-based CRUD APIs in minutes. In my experience, their proclamations about RAD API development generally holds true, however, their documentation and, in particular, their tutorials, really need a lot of work in terms of organization. While there’s a lot of information that’s presented, it doesn’t really flow to tell the complete story of how you would solve real-world problems and how all of the pieces really fit together. Hopefully you’ll find that this post helps bridge that gap.
Why we used GraphQL for our API
https://blog.marvelapp.com/why-marvel-uses-graphql/
Recently at Marvel we launched our Platform API. Here I’ll write about some of the thought processes we went through when we set out to build it, explain some of the problems with other APIs and their potential solutions, and cover why we made the choice to use GraphQL over REST despite the team being vastly less experienced with GraphQL.
MongoDB Performance Tuning: Everything You Need to Know
https://stackify.com/mongodb-performance-tuning/
In this article, we’ll look at a few key metrics and what they mean for MongoDB performance. Specifically, we’ll look at the following areas: Performance of locking in transactions; Memory usage; Connection handling; Issues with replica sets.
Open-sourcing LogDevice, a distributed data store for sequential data
https://logdevice.io/blog/
We are excited to announce that today we are open-sourcing LogDevice! The code is now available on GitHub under the permissive 3-clause BSD license. LogDevice is a distributed data store for sequential data originally developed within Facebook.
Ending PHP Support, and The Future Of Hack
https://hhvm.com/blog/2018/09/12/end-of-php-support-future-of-hack.html
HHVM v3.30 will be the last release series where HHVM aims to support PHP. Ultimately, we recommend that projects either migrate entirely to the Hack language, or entirely to PHP7 and the PHP runtime.
Lessons from Building and Scaling Reddit’s Ad Serving Platform with Go
https://about.sourcegraph.com/go/gophercon-2018-from-prototype-to-production-lessons-from-building-and/
The Reddit engineering team recently introduced Go into their stack to write a new ad-serving system to replace a third party system. Deval Shah talks us through the architecture of the new service, the Reddit team’s experience using Go for the first time, and all the lessons they’ve learned from using Go to build this ad server.
Keystone Real-time Stream Processing Platform
https://medium.com/netflix-techblog/keystone-real-time-stream-processing-platform-a3ee651812a
Keystone Stream Processing Platform is Netflix’s data backbone and an essential piece of infrastructure that enables engineering data-driven culture. While Keystone focuses on data analytics, it is worth mentioning there is another Netflix homegrown reactive stream processing platform called Mantis that targets operational use cases. We’ll discuss Mantis and its important role in the Netflix ecosystem in a future post.
Open Sourcing TonY: Native Support of TensorFlow on Hadoop
https://engineering.linkedin.com/blog/2018/09/open-sourcing-tony–native-support-of-tensorflow-on-hadoop
To meet our needs, and because we know there are many others interested in running distributed machine learning who are also running large Hadoop deployments, we have built TensorFlow on YARN (TonY), which we are open sourcing today. Please check out the TonY project on GitHub for details on how to use it. Contributions and suggestions from the community are welcome! In the rest of this blog post, we will cover the internal details of TonY, the features we have implemented and leveraged to scale distributed TensorFlow on Hadoop, and experimental results.
Machine intelligence at Dropbox
https://blogs.dropbox.com/tech/2018/09/machine-intelligence-at-dropbox-an-update-from-our-dbxi-team/
When we talk about machine intelligence at Dropbox, we mean the whole range of applied machine learning, from simple linear classifiers to advanced deep learning networks. For many years we’ve been building a world-class machine learning team, improving our platform behind the scenes. We started with a lot of foundational work on image recognition to improve our users’ experience of organizing the massive amount of photos they keep on our platform.
新鲜货
Highlights from Git 2.19
https://blog.github.com/2018-09-10-highlights-from-git-2-19/
The open source Git project just released Git 2.19, with features and bug-fixes from over 60 contributors. Here’s a look at some of the most interesting features introduced in the latest versions of Git. 另附:GitHub Pull Requests in Visual Studio Code.
IBM and Stack Overflow Partner to Support AI Developers
https://stackoverflow.blog/2018/09/13/ibm-and-stack-overflow-partner-to-support-ai-developers/
IBM and Stack Overflow are partnering to bring learning and development to the AI community. As of today, the Artificial Intelligence site on the Stack Exchange network is sponsored by IBM. The site, featuring “questions about life and challenges in a world where ‘cognitive’ functions can be mimicked in purely digital environment”, is home to over 2,200 questions and 3,200 answers.
New API to Bring Augmented Reality to the Web
https://hacks.mozilla.org/2018/09/webxr/
We’re entering a new phase of work on JavaScript APIs here at Mozilla, that will help everyone create and share virtual reality (VR) and augmented reality (AR) projects on the open web.
Latest Chrome Stripping ‘www’ from Hostnames in Location Bar https://bugs.chromium.org/p/chromium/issues/detail?id=881410 Chrome is hiding ‘trivial’ subdomains (such as www. and m.) in the location bar, but a lot of people aren’t happy about the change, and it kicked off one of Hacker News’s biggest discussions.
Announcing TypeScript 3.1 RC
https://blogs.msdn.microsoft.com/typescript/2018/09/13/announcing-typescript-3-1-rc/
We’re happy to announce the availability of the release candidate (RC) of TypeScript 3.1. Our intent with the RC is to gather any and all feedback so that we can ensure our final release is as pleasant as possible.
Introducing Azure DevOps
https://azure.microsoft.com/en-us/blog/introducing-azure-devops/
Azure DevOps captures over 15 years of investment and learnings in providing tools to support software development teams. In the last month, over 80,000 internal Microsoft users and thousands of our customers, in teams both small and large, used these services to ship products to you.
A Sneak Peek of NativeScript-Vue 2.0!
https://dev.to/vuevixens/a-sneak-peek-of-nativescript-vue-20-k7j
NativeScript-Vue 2.0 is right around the corner! In the meantime, you can create an app TODAY using our vue-cli template. Watch the NativeScript blog for a write-up on how to upgrade your app, if you have already been working in this space. If not, now’s the time to jump in! Create your next blockbuster mobile app with NativeScript-Vue 2.0!
NLP.js
https://github.com/axa-group/nlp.js
An NLP library built in node over Natural, with entity extraction, sentiment analysis, automatic language identify, and so more
low.js, the port of Node.JS for embedded devices
http://www.lowjs.org/
low.js is a port of Node.JS with far lower system requirements. With low.js, you can program JavaScript applications utilizing the full Node.JS API and run them not only on normal PCs, but also on embedded devices, such as ones based on the $ 3 ESP32 microcontroller with Wifi on-board.
Drome
https://medium.com/drome/hello-drome-699b6e991dcb
Powerful and easy task runner.
d3-dag
https://github.com/erikbrinkman/d3-dag
Often data sets are hierarchical, but are not in a tree structure, such as genetic data. In these instances d3-hierarchy may not suit your needs, which is why d3-dag (Directed Acyclic Graph) exists. This module implements a data structures for manipulating DAGs that mimics the API of d3-hierarchy as much as possible.
luma.gl
https://github.com/uber/luma.gl
luma.gl is a set of WebGL2 components for high-performance GPU-based rendering and computation in the browser. It is the engine that powers applications and frameworks like: kepler.gl WebGL based visualization overlays. deck.gl WebGL based visualization overlays
tao.js
https://tao.js.org/advanced/inline-handlers.html
Literally at the core, @tao.js/core is a simple package to use in any App we build to create Reactive Apps that espouse the principles outlined in the Reactive Manifesto by implementing what’s called the TAO in JavaScript. The whole thing is designed around generating 3-Dimensional Events in the form of a tuple with a specific shape that follows the acronym from its namesake (T.A.O.): Term - the thing in the context - conceptually usually a domain entity; Action - the operation being performed on the thing in the context; Orient(ation) - the perspective of the interaction with the system at the moment of this operation on this thing.
React Color
https://github.com/casesandberg/react-color
Color Pickers from Sketch, Photoshop, Chrome, Github, Twitter & more
react-copy-write
https://github.com/aweary/react-copy-write
An immutable React state management library with a simple mutable API, memoized selectors, and structural sharing. Powered by Immer.
React Calendar Heatmap
https://github.com/patientslikeme/react-calendar-heatmap
A calendar heatmap component built on SVG, inspired by github’s commit calendar graph. The component expands to size of container and is super configurable.
Pigeon Maps
https://github.com/mariusandra/pigeon-maps
ReactJS maps without external dependencies
Awesome React Native UI Components
https://github.com/madhavanmalolan/awesome-reactnative-ui
Houdini Spellbook
http://houdini.glitch.me/
A Straightforward Introduction to Houdini.
Puppeteer - V1.8.0
https://github.com/GoogleChrome/puppeteer/releases/tag/v1.8.0
另附:Taiko - A node.js library to automate chrome/chromium browser
SageMath
https://www.sagemath.org/
SageMath is a free open-source mathematics software system licensed under the GPL. It builds on top of many existing open-source packages: NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R and many more. Access their combined power through a common, Python-based language or directly via interfaces or wrappers.
the xonsh shell
https://xon.sh/
Xonsh is a Python-powered, cross-platform, Unix-gazing shell language and command prompt. The language is a superset of Python 3.4+ with additional shell primitives that you are used to from Bash and IPython. It works on all major systems including Linux, Mac OSX, and Windows. Xonsh is meant for the daily use of experts and novices alike.
Zero
https://github.com/KonstantinSchubert/zero
Fuse filesystem backed by backblaze cloud storage and transparent local persistent hard-drive cache. Ideally, it feels like an infinite local file system because it keeps those files local that are used while moving those files to the remote storage that haven’t been accessed in a long time.
设计
The UX is dying
https://uxplanet.org/the-ux-is-dying-94d5ef6b7256
We will never be able to stop things from happening. Life and every other material and nonmaterial things have to go through its course. The wise things are that we have to adapt to the new technologies. It has been our nature to do so. It has become really easy to find a person with a title called “UX designer” in the job market. Most of them lack the knowledge in conversational UI, AR and VR technologies and how to understand their business domain. They have to address and prioritize the domain features of a product and give their input to the growth of the business. The management of the organizations has to take UX into their head and understand the value of a UX designer as a job role and as valuable resource. Sharing the knowledge and making the people aware more about the UX industry would help newcomers to be comfortable with the word UX.
How Desktop Dashboards Really Work
https://blog.prototypr.io/how-desktop-dashboards-really-work-a1aa57b925e1
This article shares the unique experience we’ve stockpiled while developing and testing various dashboards for cryptocurrency exchange platforms.
Rethinking the date picker UI
https://uxdesign.cc/rethinking-the-date-picker-ui-99b9dcb303ad
We’re trying to design the most usable sign up flow in the world. Putting your date of birth into websites is inconsistent and annoying. When a friend asks you your birthday you never say the 11th of the 11th 1987 — it’s unnatural. Instead of accepting the norm, we decided to re-do the UI of our date of birth component.
Generative Art Finds Its Prodigy
https://www.artnome.com/news/2018/8/8/generative-art-finds-its-prodigy
In our last article “Why Love Generative Art?” we had a blast putting the genre into the context of modern art history. In this article we interview contemporary generative art prodigy (my words, not his) Manolo Gamboa Naon from Argentina.
Smashing Book 6 Is Here: New Frontiers In Web Design
https://www.smashingmagazine.com/2018/09/smashing-book-6-release/
Smashing Book 6 is now shipping worldwide. With everything from design systems to accessible single-page apps, CSS Custom Properties, CSS Grid, service workers, performance patterns, AR/VR/XR, conversational UIs and responsive art direction.
产品及其它
20年,发展了120家公司,如此靠谱的“全员创业”模式是怎样开创出来的?
https://mp.weixin.qq.com/s?__biz=MzUyMDQ5NzI5Mg==&mid=2247498961&idx=1&sn=2e549512f5b9026471bc88decbd06194
全员创业,终生雇佣,鼓励内部员工结婚……很多重要的细节性的管理理念跟国内当下流行的做法很不一样,这些背后究竟有何深意?曾在 CyberAgent 有过5年工作经历的吴文蔚,近日在创投营内部做了详尽的解读。
Today, Europe Lost The Internet. Now, We Fight Back
https://www.eff.org/deeplinks/2018/09/today-europe-lost-internet-now-we-fight-back
In a vote that split almost every major EU party, Members of the European Parliament adopted every terrible proposal in the new Copyright Directive and rejected every good one, setting the stage for mass, automated surveillance and arbitrary censorship of the internet: text messages like tweets and Facebook updates; photos; videos; audio; software code – any and all media that can be copyrighted.
Hacker culture and the politics of process defense
http://esr.ibiblio.org/?p=8120
I propose to replace the question “What kind of politics should the hacker culture be engaged in?” with two that are sharper and more responsive to our duty. These questions are: 1. What exertions of power and influence do we need to resist in order to protect our processes, prevent our social machine from breaking down, and achieve our telos? 2. Should we, as a culture or as projects within that culture, engage in “politics” (however that is defined) beyond the issues selected by the previous question?
–THE END –