深阅读

V8 release v7.2
https://v8.dev/blog/v8-release-72
Embedded builtins are now supported and enabled by default on the ia32 architecture. Since v7.0 the parsing speed improved by roughly 30% on desktop. V8 v7.2 comes with a faster async/await implementation, enabled by default. V8 v7.2 adds support for public class fields.

React v16.7: No, This Is Not The One With Hooks
https://reactjs.org/blog/2018/12/19/react-v-16-7.html
Our latest release includes an important performance bugfix for React.lazy. Although there are no API changes, we’re releasing it as a minor instead of a patch.

React Developer Roadmap
https://github.com/adam-golab/react-developer-roadmap
The purpose of this roadmap is to give you an idea about the landscape. The road map will guide you if you are confused about what to learn next, rather than encouraging you to pick what is hip and trendy. You should grow some understanding of why one tool would be better suited for some cases than the other and remember hip and trendy does not always mean best suited for the job.

Stop Learning Frameworks
https://sizovs.net/2018/12/17/stop-learning-frameworks/
We are developers. We need to stay up to date with technology. Every day, we learn programming languages, frameworks, and libraries. The more modern tools we know — the better. Keeping up to date with Angular, React, Vue, Riot, Ember, Knockout is fun. But we are wasting our time. Time is the most precious resource we have. Time is limited, nonrenewable and you cannot buy more of it. Technology, like fashion, is changing at the speed of light. To catch up, we need to run very fast. This race has no winners because it has no end.
附:Which JavaScript Frameworks Are the Fastest?.

Google Tech Dev Guide
https://techdevguide.withgoogle.com/
Whether you’re a student or an educator, newer to computer science or a more experienced coder, or otherwise interested in software engineering, we hope there’s something for you here in Google’s Guide to Technical Development. We’ve carefully curated a collection of material from many sources, including Google, that you can use to supplement your classwork or direct your own learning.

Seamless Serverless Markup with HTM
https://zeit.co/blog/seamless-serverless-markup-htm
With server-side rendering in the mix, this equation often grows even more complex: we require special renderers that serialize these applications, usually described with JSX, into HTML strings or streams that browsers can then parse. The requirements of building and deploying web pages today often come with significant overhead, leading to slower Lambda (λ) boot times, larger file sizes, and ultimately, higher costs. One solution to this that we would like to highlight is HTM that aims to remedy this.

San发布3.7.0
https://baidu.github.io/san/
San是一个灵活的Javascript MVVM 组件框架,它体积小巧,兼容性好,性能卓越,广泛应用与百度各产品线,百度智能小程序Swan框架也是基于San搭建。3.7.0版本发布支持了渲染过程中加载组件,异步渲染等核心功能。

Taro 1.2:将已有微信小程序转换为多端应用
https://aotu.io/notes/2018/12/17/taro-1-2/index.html
Taro 1.2 比起 Taro 1.1 和其它的小程序开发框架,增加了许多首次在小程序框架上实现的功能,这些功能包括但不限于:微信小程序转多端应用,字节跳动(头条)小程序支持,CSS Modules 支持,MobX 支持。

WebGL 纹理详解
http://taobaofed.org/blog/2018/12/17/webgl-texture/
Buffer(数据缓冲区)与 Texture(纹理)是 WebGL 程序的两大数据来源。Buffer 可以通过 ArrayBuffer 或更语义化的 TypedArray 来构造;而 Texture 在大多数情况下,是通过 Image 对象来构造的。在构造和使用 Texture 的过程中,需要确定很多选项来以不同的方式构造 Texture;这些选项之间有着各种各样的关系,或互相依赖,或互相排斥,或互相影响。为此,我专门编写了一个 Demo,如下所示。Demo 页的右上角有一个使用 dat.GUI 生成的控件,其中列举了影响纹理的一些选项。这篇文章将逐个讨论这些选项的作用和相互关系。

美团开源Graver框架:用“雕刻”诠释iOS端UI界面的高效渲染
https://tech.meituan.com/waimai_graver.html
Graver 是一款高效的 UI 渲染框架,它以更低的资源消耗来构建十分流畅的 UI 界面。Graver 独创性的采用了基于绘制的视觉元素分解方式来构建界面,得益于此,该框架能让 UI 渲染过程变得更加简单、灵活。目前,该框架已经在美团 App 的外卖频道、独立外卖 App 核心业务场景的大多数业务中进行了应用,同时也得到美团外卖内部技术团队的认可和肯定。App 渲染性能优化是一个普遍存在的问题,为了惠及更多的前端开发同学,美团外卖 iOS 开发团队将其进行开源,Github 项目地址与使用文档详见:https://github.com/Meituan-Dianping/Graver 。我们希望该框架能够应用到更广阔的业务场景。

快手万亿级实时OLAP平台的建设与实践
https://mp.weixin.qq.com/s/bKDtv892f4TJVV-JjW0vfQ
快手 App 目前日活 1.5 亿,每天会产生数万亿规模的用户行为数据,对这些数据的高效探索是一件很有挑战同时也很有价值的工作。今天重点分享快手建设万亿级数据规模 OLAP 平台的设计方案以及主要改进过程。

ECMAScript modules in Node.js: the new plan
http://2ality.com/2018/12/nodejs-esm-phases.html
In October, the Modules Team published the document “Plan for New Modules Implementation”. This blog post explains what it contains.

Taming Data with JavaScript
https://alistapart.com/article/taming-data-with-javascript
I love data. I also love JavaScript. Yet, data and client-side JavaScript are often considered mutually exclusive. The industry typically sees data processing and aggregation as a back-end function, while JavaScript is just for displaying the pre-aggregated data. Bandwidth and processing time are seen as huge bottlenecks for dealing with data on the client side. And, for the most part, I agree. But there are situations where processing data in the browser makes perfect sense. In those use cases, how can we be successful?

JavaScript Getter-Setter Pyramid
https://staltz.com/javascript-getter-setter-pyramid.html
The cornerstone of JavaScript is the function. It is a flexible abstraction that works as the basis for other abstractions, such as Promises, Iterables, Observables, and others. I have been teaching these concepts in conferences and workshops, and over time I have found an elegant summary of these abstractions, layed out in a pyramid. In this blog post I’ll provide a tour through these layers in the pyramid.

Handling broken images with the service worker
https://bitsofco.de/handling-broken-images-with-service-worker/
A few years ago, I wrote about how we can use css to style broken images. The technique leveraged on the fact that any styling to the ::before or ::after pseudo-elements on the <img> element will only be applied if the image doesn’t load. So, we could style those elements and they would only display if the image was broken.

The Fragmented, But Evolving State of CSS-in-JS
https://css-tricks.com/the-fragmented-but-evolving-state-of-css-in-js/
The CSS-in-JS community has converged on a consistent API.

New CSS Logical Properties!
https://medium.com/@elad/new-css-logical-properties-bc6945311ce7
Until recently, the best way to support multiple direction websites like RTL/LTR Websites was with SASS and SASS variables. These new logical properties give us a lot more power to control our websites, no matter what type of language we use (English, Arabic, Japanese, etc.), with minimal style changes.
另附:Researching a Property in the CSS Specifications

Here’s how NPM plans to improve security and reliability in 2019
https://www.techrepublic.com/article/heres-how-npm-plans-to-improve-security-and-reliability-in-2019/
NPM is working to course-correct after 2018 brought a handful of major incidents that caused usability and security headaches for system administrators.
另附:npm package permissions — an idea

Introducing Pipelines to Airbnb’s Deployment Process
https://medium.com/airbnb-engineering/introducing-deploy-pipelines-to-airbnb-fc804ac2a157
Joining the last line of defense against “bad code”, via developing a method of enforcing our deployment procedures, and lessons learned about how theory and practice differ in real-world software development.

Envoy Proxy at Reddit
https://redditblog.com/2018/12/18/envoy-proxy-at-reddit/
Reddit’s engineering team and product complexity has seen significant growth over the last three years. Facilitating that growth has taken a lot of behind-the-scenes evolution of Reddit’s backend infrastructure. One major component has been adopting a service-oriented architecture, and a significant facet of that has been evolving service-to-service discovery and communication.
另附:Reddit’s Serverless & Compute Infrastructure at Scale.

Cape Technical Deep Dive
https://blogs.dropbox.com/tech/2018/12/cape-technical-deep-dive/
In this post, we’ll take a deep dive into the design of the Cape framework. First, we’ll discuss Cape’s architecture. Then we’ll look at the core scheduling component of the system. Throughout, we’ll focus the discussion on a few key design decisions.

How Dashboards are Changing Human Behavior in DevOps
https://thenewstack.io/how-dashboards-are-changing-human-behavior-in-devops/
What is a dashboard? Something readily visible to everyone that needs it that shows how something is functioning or progressing. When used right — whether on a car, aircraft or DevOps team — a dashboard is simple to read at a glance and a very powerful way to know you’re heading in the right direction.

SQL is Dead, Hail to Flux
https://medium.com/schkn/sql-is-dead-hail-to-flux-8e8498756049
Flux : a lightweight, blazing fast scripting language that makes it super easy to work with data.

The 9 Most Common Database Design Errors
https://www.vertabelo.com/blog/technical-articles/the-9-most-common-database-design-errors
Reading this article might save you many hours spent fixing design and code problems, so let’s dive in. I’ve split the list of errors into two main groups: those that are non-technical in nature and those that are strictly technical. Both these groups are an important part of database design.
另附:How the SQLite Database WorksBye bye Mongo, Hello Postgres.

FP vs. OO List Processing
http://blog.cleancoder.com/uncle-bob/2018/12/17/FPvsOO-List-processing.html
While writing spacewar over the last few months, I came across an interesting difference between functional programming, and OO programming. Let’s imagine that we’ve got two lists. A list of klingons, and a list of shots traveling through space. The shots might be phaser beams, or photon torpedos, or balls of iron called “kinetics”. In all cases they have a position and a velocity. So do each of the klingons.
另附:Model View Controller isn’t.

Write your Own Virtual Machine
https://justinmeiners.github.io/lc3-vm/
In this tutorial, I will teach you how to write your own virtual machine (VM) that can run assembly language programs, such as my friend’s 2048 or my Roguelike. If you know how to program, but would like to gain a deeper understanding of what is going on inside a computer and better understand how programming languages work, then this project is for you. Writing your own VM may sound a little scary, but I promise that you will find it to be surprisingly simple and enlightening.

新鲜货

quicklink
https://github.com/GoogleChromeLabs/quicklink
This project aims to be a drop-in solution for sites to prefetch links based on what is in the user’s viewport. It also aims to be small (< 1KB minified/gzipped).

Electron 4.0.0
https://electronjs.org/blog/electron-4-0
Electron v4.0.0 includes Chromium 69.0.3497.106, Node 10.11.0, and V8 6.9.427.24.

Bootstrap 4.2.1
https://blog.getbootstrap.com/2018/12/21/bootstrap-4-2-1/
Look out world, we’re shipping Bootstrap v4.2.1 with a slew of new features, bug fixes, and docs updates. On the new features side, we have spinners, toasts, switches, and (finally!) touch support in the carousel. That’s just the tip of the iceberg though.

Highlights for Game Off 2018
https://blog.github.com/2018-12-22-game-off-2018-highlights/
Game Off just wrapped up with over 300 games submitted making it our largest event yet! This year’s theme–HYBRID–proved to be both fun and challenging. Here are the winners as voted on by the game developers themselves.

Rallax.js
https://chriscavs.github.io/
Dead-simple parallax scrolling.

Announcing Gluegun 2.0 — A delightful way to build command line apps in Node
https://shift.infinite.red/announcing-gluegun-2-0-a-delightful-way-to-build-command-line-apps-in-node-936f9ab9916d
Gluegun is a delightful toolkit for building beautiful command line interfaces (CLIs) in Node.js. It supports commands, extensions, template generation, and has a very simple and intuitive plugin interface. I’m the primary maintainer on Gluegun, and many others at my company (Infinite Red) and the community work on it too.
另附:Arg - yet another command line option parser

AVA 1.0
https://blog.sindresorhus.com/ava-1-0-861d780b2d81
Back in January we started work on the 1.0 release, taking the opportunity to upgrade to Babel 7 and follow its beta releases. It’s been a year where we made massive improvements to AVA. It’s also been a year with many exciting events in our personal lives. Be it honeymoons & weddings, work & friends, naturalizations and international relocations.

IBM Uses Gatsby to Manage Enterprise-Level Content
https://www.gatsbyjs.org/blog/2018-12-17-ibm-case-study/?no-cache=1
IBM is the original tech company. Reaching for Gatsby shows they are still on the leading edge of technology and finding the newest and best routes for their people and clients.

Everyone can now run JavaScript on Cloudflare with Workers
https://blog.cloudflare.com/cloudflare-workers-unleashed/
Exactly one year ago today, Cloudflare gave me a mission: Make it so people can run code on Cloudflare’s edge. At the time, we didn’t yet know what that would mean. Would it be container-based? A new Turing-incomplete domain-specific language? Lua? “Functions”? There were lots of ideas. Eventually, we settled on what now seems the obvious choice: JavaScript, using the standard Service Workers API, running in a new environment built on V8. Five months ago, we gave you a preview of what we were building, and started the beta. Today, with thousands of scripts deployed and many billions of requests served, Cloudflare Workers is now ready for everyone.

Go Modules in 2019
https://blog.golang.org/modules2019
2018 was a great year for the Go ecosystem, with package management as one of our major focuses. The module system will in turn help us deliver better authentication and build speeds to the Go ecosystem. This post is a preview of what the Go team is planning relating to modules in 2019.
另附:Go and Apache Arrow: building blocks for data scienceApache Beam and Google Dataflow in GoGoReplay - an open-source tool for capturing and replaying live HTTP traffic into a test environment.

Rust and WebAssembly in 2019
http://fitzgeraldnick.com/2018/12/14/rust-and-webassembly-in-2019.html
Compiling Rust to WebAssembly should be the best choice for fast, reliable code for the Web. In 2018, we made it possible to surgically replace performance-sensitive JavaScript with Rust-generated WebAssembly. I propose that we make larger-scale adoption of Rust and WebAssembly practical in 2019.
另附:Sandspiel – A falling sand game built in Rust and WebGL

Introducing Project Mu
https://blogs.windows.com/buildingapps/2018/12/19/%e2%80%afintroducing-project-mu/
The Microsoft Devices Team is excited to announce Project Mu, the open-source release of the Unified Extensible Firmware Interface (UEFI) core leveraged by Microsoft products including both Surface and the latest releases of Hyper-V.

Open sourcing wav2letter++, the fastest state-of-the-art speech system, and flashlight, an ML library going native
https://code.fb.com/ai-research/wav2letter/
The Facebook AI Research (FAIR) Speech team is sharing the first fully convolutional speech recognition system. From the waveform to the final word transcription, the learnable parts of the system are composed only of convolutional layers. This yields performance that’s competitive with that of recurrent architectures.
另附:Nevergrad: An open source tool for derivative-free optimization

Minikanren – An embedded DSL for logic programming
http://minikanren.org/
miniKanren is an embedded Domain Specific Language for logic programming. miniKanren is designed to be easily modified and extended; extensions include Constraint Logic Programming, probabilistic logic programming, nominal logic programming, and tabling.

MIPS Goes Open Source
https://www.eetimes.com/document.asp?doc_id=1334087
Wave Computing (Campbell, Calif.) announced Monday (Dec. 17) that it is putting MIPS on open source, with MIPS Instruction Set Architecture (ISA) and MIPS’ latest core R6 available in the first quarter of 2019.

年度回顾系列

设计

了解这十个差异,出海产品设计不再慌
https://mp.weixin.qq.com/s/AAx8Q_Qg_x6cJQFH5fNVcw
时至今日,随着中国互联网产品的飞速发展壮大,越来越多国内产品计划着向海外扩展,远的有早就在布局海外市场的微信,近的也有超人气产品抖音。而阅文集团在最近两年也持续在海外业务上发力,Webnovel 正将中国优秀的小说作品展现给全世界的读者们。那么,当我们在设计服务于海外用户的产品的时候,有没有发现一些国外产品设计和中国不太一样的地方呢?今天我们不妨从品牌视觉、字体、特性功能以及产品细节等多个角度看分析下这些可能存在的区别。

Design is Art After All
https://medium.com/google-design/design-is-art-after-all-dd79bf6628ac
A meditation on the dance between design and intuition.

Product Design: Expectations vs Reality
https://uxplanet.org/product-design-expectations-vs-reality-fc73e2ca8198
hen it comes to designing products in the 21st century, we tend to believe that there are new rules that must be learned. Fortunately, that’s not true. Why? Because humans are the same and our behaviour changes slowly. Only the environment we live in is different. And with that, some basic design principles will never change. Here are 7 more product design expectations vs reality cases we can see or be part of on a daily basis. This article is a continuation of my previous one — Product Design: Expectations vs Reality.

Top 5 Curated Articles of 2018 from Microsoft Design
https://medium.com/microsoft-design/top-5-curated-articles-of-2018-from-microsoft-design-47f1819e5390
另附:Design leaders share their resolutions for 201910 Best Sketch Plugins for UX/UI Designers in 2018Sketch tools and plugins for 2019The Year In Review: Your Ultimate UX Roundup For 2018Web design trends for 2019.

New to Microsoft 365 in December—AI-powered tools to help you create your best work
https://www.microsoft.com/en-us/microsoft-365/blog/2018/12/17/new-to-microsoft-365-in-december-ai-powered-tools-to-help-you-create-your-best-work/
This month, we released new features in Microsoft 365 that enable you to reach broader audiences, increase your efficiency, and focus on your most important tasks.

产品及其它

Half the world is online. Now we must make the web work for everyone, everywhere.
https://webfoundation.org/2018/12/half-the-world-is-online-now-we-must-make-the-web-work-for-everyone-everywhere/
Just over one month ago, the Web Foundation made headlines when we revealed that less than half of the global population was online. The shocking statistic was a rallying point for the launch of the Contract for the Web — a new collaborative project that brings together governments, companies, civil society organisations and citizens around the world to collectively define our responsibilities towards ensuring a free, open and fair web that works for everyone, everywhere.
另附:Browsers

Educational Games – The future of programming!
https://cheesecakelabs.com/blog/educational-games-future-programming/
With increased interest and easy access to technology, it’s possible to encourage children in elementary school to learn through digital educational games. The game implies for the child much more than a simple act of playing. Through the game, they are communicating with the world and also expressing themselves. For adults, the game constitutes a “mirror”, a source of data for better understanding how children development occurs, as Friedmann already said in 1996.

深度解密微信7.0核心改版 – 对决与破局刚刚开始
https://mp.weixin.qq.com/s?__biz=Mzg5ODA1NDY5NA==&mid=2247483774&idx=1&sn=9d58eaa8ec3bf86130bd7d0f77a89012
超越于机器算法,人与人的社交关系产生的推荐能力,无疑是另外一种“信息精准”能力。期待“好看”的数据表现。如果说“时刻视频”在对决抖音等短视频,无疑,微信的“好看”也找到了自己内生的动力引擎,去抢占Feed流。“你朋友关系的,也是头条”。微信7.0试错才刚刚开始,对决刚刚开始!
另附:非共识与小趋势——复盘罗辑思维7年演化之路

王兴:20年to C,20年to B
https://mp.weixin.qq.com/s?__biz=MzIxNTAzNzU0Ng==&mid=2654615671&idx=1&sn=b8d8819ad02ce10d579a4cd33ec40c16
“下半场”这个词是去年上半年提出来的,而且这个词提出来之后,在整个行业,包括国家产生了比较大的反响。下半场到底是什么意思,为什么会有下半场这个说法?这个下半场是几个层面:一个是我们美团点评这家公司要进入下半场;一个是互联网和移动互联网这个行业我们认为要进入下半场;一个是中国的产业、中国的经济要进入下半场;全球的经济和政治,我们认为也要进入下半场。

– THE END –

- 百度数据可视化
- 百度智能建站