M.

Realme X 刷入 LineageOS

November 02, 2019

之前自己换 iPhone 屏幕和电池。但是换好之后 Home 键不定时失灵,应该是屏幕的排线给弄坏了。正好当天刚好看到 Realme X 发售,于是就下单买了一个避免 iPhone 彻底坏了没手机用了。

当时选择买 Realme 的主要原因也就两个。一是前置隐藏式摄像头,对于我这种几乎用不到前置摄像头的人来说实在太好了。第二呢是便宜,最近两年可以看到经济的增速明显放缓,为了能够适应未来十年经济的增长停滞甚至倒退,所以最近消费比较贵的东西都很克制,也算是对自我的一种修行了。

Boléro

June 01, 2019

Beléro 的整体音乐结构就是一段旋律不停重复,在速度上没有任何变化。只是不停变换乐器,从一开始的军鼓到管乐、弦乐和打击乐,一层一层叠加让乐曲逐渐丰富(Loop 音乐的鼻祖?)。

在演奏的时候,很多指挥都觉得乐曲过于缓慢,演奏过 15 分钟、14 分钟甚至 12 分钟的版本。作者 Ravel 对此表示强烈的不满(吵过很多次架),并在乐谱上标注要以非常慢非常慢的速度演奏,并表示:我创作的是一首 17 分钟的乐曲。

乐曲在创作的时候也是一波三折,1928 年舞蹈家 Ida Rubinstein 邀请 Ravel 将钢琴组曲 Iberia 改编为管弦乐,作为之后的美洲巡演使用。但是当 Ravel 开始改编工作时,得知管弦乐的改编权已经授权给了西班牙的指挥家 Arbós,于是准备改编一首自己的作品。当 Arbós 得知此事后,表示愿意授权给 Ravel 进行改编。但是 Ravel 听到这个消息的时候倔脾气一下子就上来了,表示要创作一首全新的乐曲,这也就是后来的 Boléro。

基于浏览器缓存的旁路攻击

May 31, 2019

通过记录页面或页面独有的静态资源的加载时间,判断用户访问过的页面、搜索过的关键字等等。

Sec Fetch

April 03, 2019

从浏览器发起的请求在请求头里, 会带上从哪里发起的,例如 <picture> 标签就会带上 Sec-Fetch-Dest: image。这样就能在服务端判断出是不是由于 XSS 导致一些恶意的请求了

CloudABI

March 29, 2019

轻量级的沙盒环境。拦截 System Call 调用,检查请求的资源是否符合配置文件中对应的配置,从而避免恶意的操作。例如常见的恶意文件包含 ../../../etc/passwd

KV Storage

March 07, 2019

IndexedDB 使用过于麻烦,同步的 API 操作也会阻塞主线程的渲染,于是在顶层实现了一个类似 localStorage 的接口。同时这也是浏览器 标准库 实现的第一个方法

Instant Page

February 12, 2019

通过监听 mouseover / touchstart 停留超过 65ms 的链接,就发起请求预加载链接的内容,让用户产生页面加载变快的幻觉

Array.prototype.sort 有了稳定的排序算法实现

December 17, 2018

Chrome 70 / V8 v7.0 之后 Array.prototype.sort 将 长度大于 10 数组 的排序算法由 QuickSort 改为稳定的排序算法 TimSort

IIB Awards 2018

December 06, 2018

可视化奖项 Information is Beautiful Awards 2018 年的获奖名单

MILLENNIALS ARE SCREWED

October 13, 2018

霍芬顿邮报关于 千禧一代 财务危机的专题报道

Site Isolation

October 01, 2018

Chrome 67 以后浏览器会默认启用名为 Site Isolation 的安全功能于避免之前的 Meltdown 和 Spectre 等旁路攻击