假装自己是人类
评: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 语言中最精髓的创造,我们就来学习学习它们究竟是什么,为什么要引入这些概念。

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

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

再谈闭包

在 Algol/Fortran 世界生活的人们总是不相信在未来的编程中,函数闭包对编程的效率能有多大的帮助。之后就发生了“面向对象编程”的革命,现在几乎人人都用函数闭包进行编程,只是他们依旧不把它叫作“函数闭包”。

之前的文章里,我们试图说服大家:闭包与面向对象在本质上是一样的。这篇文章中,我们要仔细看看什么是闭包;闭包与 lambda 的区别;将函数作为数据的优缺点;以及其它一些你可能想了解的概念。

JSONP 简介

JSONP 不是 JSON,它是跨域访问的一种机制。那么什么是跨域访问?什么是 JSONP?如果你不清楚的话,不妨点开看看吧。

CSS 垂直居中

简单一句 margin: 0 auto 我们便能搞定水平居中,而正当我们开心地写出 margin: auto 0 时,浏览器却没却无情地拒绝了我们,那我们来看看如何用 CSS 实现垂直居中吧。

Let's Build a C Compiler (1) -- Design

This is the second chapter of series “Let’s Build a C Compiler”, In this chapter we will have an overview of the structures of our compiler.

Let's Build a C Compiler(0) -- Preface

EDIT: Note that I’ve include the full tutorial in the project write-a-C-interpreter. Please check that instead.

结构的悖论

The paradox of structure is that, whatever its nature, any structure is both enabling and limiting at the same time.

每一种结构既会赋予能力,同时又会限制能力。最近在网易公开课看了这节 结构的悖论,是宾夕法尼亚大学的公开课《创造、创新和改变》中的一节。这里的结构可以代指任何事物,例如法律,例如公司的制度,我们应该如何对待生活中的结构呢?

写一个 Mustache 模板引擎

前几天在伯乐在线上看到 介绍 mustache.js 的文章Mustache 是一种模板语言,语法简单,功能强大,已经有各个语言下的实现。那么我们今天就用 python 来一步步实现它吧!

Hexo 自动部署到 Github

使用 Hexo 写博客是十分惬意的事。唯一有点不爽的,就是每次修改后都要重新生成并部署到 Github 上,这也是所有静态博客生成工具的通病。那么本文我们就利用 Travis CI 来完成自动部署,解决心中最后一处搔痒。