FEX 技术周刊 - 2017/01/09
飞叔新作，结合一些典型场景探讨了 Web 应用数据层的可行实现方式，对做单页应用非常有帮助。
Idiomatic Redux: Thoughts on Thunks, Sagas, Abstraction, and Reusability
The redux-thunk and redux-saga libraries are the most widely-used libraries for “side effects” in Redux. There’s been a lot of recent statements arguing that thunks (and sagas) are bad and should almost never be used. As a result, I’ve seen developers confused and wondering what alternatives they have to implement a given feature. The concerns being raised are valid, but to balance the discussion, I would argue that thunks are a useful tool in Redux applications, and that developers should not be scared to use thunks in their codebase. 作者的 Idiomatic Redux 系列文章挺不错的。
The memory models that underlie programming languages
There are about six major conceptualizations of memory, which I’m calling “memory models”², that dominate today’s programming. These models shape what our programming languages can or cannot do at a much deeper layer than mere syntax or even type systems. Mysteriously, I’ve never seen a good explanation of them — you pretty much just have to absorb them by osmosis instead of having them explained to you — and so I’m going to try now. Then I’m going to explain some possible alternatives to the mainstream options and why they might be interesting.
The PRPL Pattern
PRPL is a pattern for structuring and serving Progressive Web Apps (PWAs), with an emphasis on the performance of app delivery and launch. It stands for:
- Push critical resources for the initial URL route.
- Render initial route.
- Pre-cache remaining routes.
- Lazy-load and create remaining routes on demand.
Algorithm-Driven Design: How Artificial Intelligence Is Changing Design
This is a story of a beautiful future, but we should remember the limits of algorithms — they’re built on rules defined by humans, even if the rules are being supercharged now with machine learning. The power of the designer is that they can make and break rules; so, in a year from now, we might define “beautiful” as something totally different. Our industry has both high- and low-skilled designers, and it will be easy for algorithms to replace the latter.
How Difficult Can It Be to Integrate Software Development Tools
An unintegrated software development and delivery toolchain creates bottlenecks, drains productivity, impedes collaboration and inhibits project visibility. Integration of the toolchain may seem like a straight forward undertaking, but it is much more difficult than it appears initially.
React’s Five Fingers of Death. Master these five concepts, then master React
Now don’t get me wrong, this doesn’t mean I can turn you into a React master instantly. But at least you’ll understand all the major concepts, if you do decide to jump in. The five key concepts are: Components、JSX、Props & State、The Component API、Component Types.
How I converted my React app to VanillaJS
This little exercise started as a React replacement project, but quickly turned into a React appreciation project. I’m quite sure that if I hadn’t been peeking over the shoulder of React, my efforts would have been a white hot mess. Frameworks will often be doing a bit of extra work that you could avoid if you wrote the code yourself, this is true. But on the whole, I think this is a fair tradeoff for the improved productivity that comes with using a well-written framework that encourages some great practices.
How to ask good questions
Asking good questions is a super important skill when writing software. I’ve gotten way better at it over the years (to the extent that it’s something my coworkers comment on a lot). Here are a few guidelines that have worked well for me!
13 best practices to secure your web application
Everyone agrees that web application security is very important but few take it seriously. Here’s a 13-step security checklist that you should follow before deploying your next web application.
Node.js Interview Questions and Answers (2017 Edition)
Finally and most importantly: we are all humans, so make your hiring process as welcoming as possible. These questions are not meant to be used as “Questions & Answers” but just to drive the conversation.
整理了 GPU 合成的相关资料，另外推荐看看 Chromium 的设计文档，更详细
比较业界的各个热修复方案，并提出基于 AndFix 的下一代方案。另附：腾讯开源手游热更新方案
TypedArray or DataView: Understanding byte order
使用 TypedArray 的时候需要注意这个问题
大批 MongoDB 因配置漏洞被攻击
另附：耗子哥的 从 MONGODB “赎金事件” 看安全问题、MongoDB 官方的：How to Avoid a Malicious Attack That Ransoms Your Data
Inferno is an insanely fast, 9kb React-like library for building high-performance user interfaces on both the client and server. Inferno aims to provide all the great benefits that React does, plus other great features for people already familiar with the React ecosystem, such as: lifecycle events on functional components, server side render streams, better real-world performance, lower memory consumption and faster parse/load times.
A spring that solves your animation problems.
Transitioning Firefox’s rendering engine from Gecko to Servo
For the past several years, Mozilla’s been working on a brand new, top-secret engine. Except it’s totally not top-secret. Never was. At another company it would have been a top-secret project. At Mozilla, it’s all done out in the open. The project is called Servo. It was started as an experiment. It’s coded in a new programming language called Rust. Servo is a modern, high-performance browser engine designed for both application and embedded use.
lightweight and powerful datetimepicker with no dependencies
unpkg is a fast, global content delivery network for stuff that is published to npm. Use it to quickly and easily load files using a simple URL like: https://unpkg.com/package@version/file
A simple HTTP/2 server for development
simplehttp2server serves the current directory on an HTTP/2.0 capable server. This server is for development purposes only.
Viz.js — Graphviz in your browser
Graphviz is open source graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. It has important applications in networking, bioinformatics, software engineering, database and web design, machine learning, and in visual interfaces for other technical domains. Viz.js is a hack to put Graphviz on the web.
Test how mobile-friendly your site is
来自 Google 的工具：Test how mobile-friendly your site is.
HTML5 Canvas Gauge
Anbody used Ant Framework? Looks awesome!
国外社区对 antd 的讨论，antd 在国外社区也越来受欢迎了。
What did you do after quitting the IT industry and how have things been?
围观下老外关于退出 IT 行业后干啥的讨论。
Grumpy: Go running Python
Grumpy is an experimental Python runtime for Go. It translates Python code into Go programs, and those transpiled programs run seamlessly within the Go runtime. The goal is for Grumpy to be a drop-in replacement runtime for any pure-Python project.
Font Face Observer Build Status
Font Face Observer is a small @font-face loader and monitor (3.5KB minified and 1.3KB gzipped) compatible with any web font service. It will monitor when a web font is applied to the page and notify you. It does not limit you in any way in where, when, or how you load your web fonts. Unlike the Web Font Loader Font Face Observer uses scroll events to detect font loads efficiently and with minimum overhead.
Mobile UI Components, based on Vue.js and ionic CSS.
10 Web Predictions for 2017
Each year, Craig Buckler makes 10 predictions about the year to come, and gives himself a score for the previous year. Read on to see how he performed in 2016, and what he predicts for the web in 2017!
研发浪费通常发生在三个地方：方向上的浪费、低价值需求的浪费、产品经理level高低带来的浪费。如果能得到良好控制，程序员减少几倍，沟通成本随之减少几倍，带动研发效率翻倍上升，就可以实现 APP 由小团队来完成。小团队的精髓并不是牛逼的程序员，而是对需求的冷静把控。产品发展起来，融资到位以后，真正杀死小团队的不是业务成长，而是亢奋带来的需求膨胀。Medium 近期的计划可以算是这篇文章的典型案例：Venture capital is going to murder Medium、Renewing Medium’s focus 、译文在这里：http://www.ifanr.com/771571