【最简单的图形与最复杂的信息】笔记

最简单的图形与最复杂的信息(The Wall Street Journal Guide to Information Graphics)

最简单的图形与最复杂的信息

折线图用于连续数据,条形图用于离散数据。但当两个数据列都是条形图时(双 Y 轴的场景),可考虑把其中一个变为折线。

折线图 Lines

  • 折线高度约占图标区域 2/3。
  • 折线应比网格线粗,但不能过粗而导致掩盖了折点变化;如果有零基线,零基线应比网格线稍粗。
  • Y 轴增量常用 1、2、5、10、15、20、25 等。
  • 线条应在四条以下;使用实线,通过粗细、颜色比形状区分更好(使用颜色时需要考虑色盲的情况);如果数据系列比较多,可考虑由一个个的单折线图组成图表组。
  • 空间紧凑且交叉点多时,可使用图例,且顺序尽量和重点顺序一致。否则可直接在折线上标注,标注应简短。
  • 双 Y 轴应用于表示两组数据有关联的场景。
    继续阅读

c君不在

2018/10/07

React 的行内条件渲染(inline conditional rendering)能够在无 else 分支的情况下简化条件渲染,这是由子元素定义及渲染决定的。

const ele = (
  <div>
    <p>{true}</p>
    <p>{true && 1}</p>

    <p>{false}</p>
    <p>{false && 2}</p>
  </div>
);

对应的 JavaScript 代码是

const ele = React.createElement(
  "div",
  null,
  React.createElement("p", null, true),
  React.createElement("p", null, true && 1),
  React.createElement("p", null, false),
  React.createElement("p", null, false && 2)
);

true && 1 等的表达式结果作为子元素去渲染时,使用  ChildReconciler#createChild ,其中仅当子元素类型(typeof)是 stringnumberobject 且不为 null 时才渲染,所以 true / false 则不会渲染。

继续阅读

【牛津通识读本:数学】读书笔记

牛津通识读本:数学

牛津通识读本:数学

序言

他的一个基本的观点:对于数学,不要问它是什么,而只要问它能做什么。

这一抽象化的思考方法,将重点放在数学内部体系的相容性,强调新的数学概念、方法与内容和已有的数学体系应自然地融为一体,强调要将有关的数学内容脱离其物理上的实在、变为符合一些特定规则的记号,就会更利于应用,更利于正确地理解高等的数学。

继续阅读

也谈 LOL

看了 LOL 一段时间了,最近英雄越来越平衡,功能也越来越平衡,天赋、物品以及游戏机制也越来越平衡,作为一款游戏,一个人 carry 的可能性越来越小,团队协作越来越重要了。

特别是职业赛事,选手间的差距有,但一般不会非常大,特别是顶尖队伍间。强调团队协作,要求尽量不要把筹码压在一名成员身上,必须在某一路受到重点关注和压制的时候,别的路能站出来缓解队伍压力乃至反压制。不然,依赖的一路被压制的时候可能容易一蹦千里无力回天。

而有效团队协作的前提是沟通,不断的流畅沟通,并对队友有信心,对自己也要有信心。

这款游戏到底不是一个人的游戏,SKT 的问题必定不是 faker 一个人的问题,也不是上路或打野一个人的问题,是整个团队的问题。

但目前看来,打野位是很重要的一个位置。因为,大多数情况下,别的三路都在明面对线,只有打野大多数时候隐藏在暗中,和对方进行斗智斗勇。而这个过程,则需要整个团队根据对线情况以及合作提供的视野来一起协作完成。

虽然最近几个版本角色比较特殊,但还是得平衡考虑坦克、控制、物理输出和法系输出。不过,对选手的英雄池还是提出了更高的要求,对 BP 战术以及游戏内的战术也提出了更高的要求。

【高性能网站建设进阶指南】读书笔记

高性能网站建设进阶指南

无阻塞加载脚本

无阻塞加载外链脚本的方法有:

  • XHR Eval,xhr 加载后 eval。
  • XHR 注入,xhr 加载后,创建 script 元素 scriptEle,然后把加载到的内容写进 scriptEle 的 text 属性来运行。
  • Script in Iframe,通过 frames/contentWindow 以及 parent/top 等来在父子窗口间相互调用。
  • Script DOM Element,动态创建 script 元素,然后设置 src 属性来加载外部脚本。
  • Script Defer,延迟执行,但执行顺序和声明 defer 的顺序一致,阻塞 DOMContentLoaded 事件。
  • document.write Script Tag,多个脚本并行下载,但依然阻塞其它类型资源,document.write("<script src='a.js'><\/script>")

继续阅读

肖像权

肖像权、名誉权这类权利实践上是如何的呢?“艺术家”或媒体可以出于艺术或新闻的需要而任意“侵入”吗?

比如特朗普的伦敦气球、街头雕塑等,冠以了言论自由民主自由创作自由的大义,所以就能任意丑化、侮辱对方?如果不是“美国总统”这个身份,极端一点,假设是普通黑人,那么还能如此甚至高歌民主自由自信平等吗?

公众人物是否就无法被纳入相关隐私保护法律的范畴呢?

参考

单 Store 单页应用的状态重置

如果是基于 Redux 等单 Store 形式来构建单页应用,那么需要注意,大多数时候,切换页面时(如前进、后退或直接访问),需要注意状态的重置。

如果用的是 react-router-redux,那么需要在切换后做 reset 的页面的 reducer 中,在 actionLOCATION_CHANGE1 时,返回该 reducer 的 initState。如:

// reducers/page1.js
import { LOCATION_CHANGE } from 'react-router-redux';
import * as actions from '../../actions/page1';

const initialState = {
  list: ['默认文本'],
};

export default function index(state = initialState, action) {
  switch (action.type) {
    case LOCATION_CHANGE:
      return initialState;

    case actions.ADD_TEXT:

      return Object.assign({}, state, {
        list: [action.data, ...state.list],
      });

    default:
      return state;
  }
}

如果用的是 connected-react-router,也类似。

// reducers/counter.js
import { LOCATION_CHANGE } from 'connected-react-router';

const counterReducer = (state = 0, action) => {
  switch (action.type) {
    case LOCATION_CHANGE:
      return 0;
    case 'INCREMENT':
      return state + 1
    case 'DECREMENT':
      return state - 1
    default:
      return state
  }
}

export default counterReducer

继续阅读

Mac LaTeX 基础环境搭建

可以直接安装完整的 MacTeX,但这个会比较大,这里记录的是安装最小 TeX 环境。

# 这里用 Homebrew 安装,也可去 MacTeX 官网下载 BasicTeX
brew tap phinze/cask
brew install brew-cask
brew cask install basictex

添加 PATH

# Fish shell
set -x PATH /Library/TeX/texbin/ $PATH
# bash/zsh 等
export PATH=/Library/TeX/texbin/:$PATH

安装中文 CTeX 宏集

sudo tlmgr update --self --all
sudo tlmgr install ctex environ trimspaces zhnumber

如果编译(参考下方命令)时报类似下面的错误,考虑用 tlmgr 来安装对应的包。

! LaTeX Error: File `environ.sty' not found.

继续阅读

反馈的反馈

在使用 Kindle 阅读时,再次发现图片太小了不方便查看细节,于是在 App 里提交了一个反馈。

大概一个小时后,收到亚马逊客服来电说,在 App 里可以双指操作的方式来放大,验证了一下果然可以。(后来随手点了下更新后发现可以双击来打开图片弹层,因为是更新后才发现,所以不确定是和双指缩放那样之前就有而我没发现还是最近新加的。)另外,尝试了下,发现,原来 Kindle 设备(Paperwhite)可以长按图片后点击出来的放大镜来放大图片。

在现在使用 AI 来替代客服的趋势下,提交产品反馈后,能短时间内收到回访电话,这令我感受到其诚意和认真。虽然不确定在后面用户多了后是否还能维持此服务质量。

现在的产品大多都有接受用户反馈的渠道,但在接收到反馈后会答复用户的,可能没那么多,特别实在用户量上来后。

题外话,虽然 Kindle 最近在排版上有一些努力,但有可能是书籍太多,程序自动转换,导致没能进行精校,所以,实际排版上和多看、豆瓣等还是存在差距。

下面分别是 Kindle 和 豆瓣中的表现:

Kindle App

豆瓣 App