假装自己是人类
Underscor.js 源码阅读

(这是两年前的笔记,现在把它搬到博客上,Underscore 版本:1.8.3)

这篇文章 的启发,萌生阅读 underscore.js 源 码的念头,其中有许多不理解的地方,也是读了上述文章后才明白的.为了保持本文的完整 性,也尽量按自己的理解进行注释. 不再提及上述引用文章.

CSS position:sticky

大约两年看在看 ECMA 2015 的时候,发现在滚动时每个章节的标题都会固定在页面的顶端,好奇的我看了下它的 CSS,发现只有简单的一行 position: sticky。当时只有 Firefox 实现了这个特性,不免心生遗憾,今天恰巧注意到 Chrome 从 56 也支持这个特性了!这里我们就来介绍下这个神奇的特性吧。

理解 Python asyncio

协程 (coroutine) 几乎是 Python 里最为复杂的特性之一了,这篇文章我们来说一说 asyncio 的内部实现机制,借此来理解一门语言要支持协程需要做的工作。

评:30 多年的编码经验浓缩成的 10 条最佳实践

文章 30 多年的编码经验浓缩成的 10 条最佳实践 原文出自 10 Tips for Writting Better Code。我认为这 10 条原则挺有帮助,所以本文想对这些原则做一些评价,说说我的看法,可以的话顺便给一些例子。建议看这篇文章之前先阅读原文。

Python Generator

Python 中的生成器 (generator) 是一个十分有用的工具,它让我们能方便地生成迭代器 (iterator)。这篇文章里,我们就来说说什么是生成器,生成器有什么作用以及如何使用。

This is a slide I made explaining the ugly internal detail of git.

在面向对象语言中写纯函数!

通常我们说函数式编程时,提到的都是 lambda 表达式,也即函数式编程中的“函数是头等公民”的特点,然而函数式的另一个重要特点: 无副作用 ,在我看来更为重要。它可以在任何语言中实际应用。今天,我们来谈一谈面向对象中的“副作用”。

简谈 Rust 中的错误处理

在学习 Rust 的过程中,错误处理是一个必需要迈过的坎。主要原因是所有的标准库都以统一的方式处理错误,我们就来谈一谈 Rust 中是如何处理错误的吧。

理解 Rust 中的生命周期

Ownership, Borrowing 与 Lifetime 共同成就了 rust 中的内存安全,也是 rust 语言中最精髓的创造,我们就来学习学习它们究竟是什么,为什么要引入这些概念。

《慢思考》大脑超载时代的思考学

会有这样的感觉吗?忙碌了一整天,却不知道忙了些什么。《慢思考》这本书正是以科学的角度告诉了我们原因:我们无法一心二用,却分明又想一心多用!