All Posts

一个 Python 实现的 Lisp 解释器

January 13, 2023

SICP 第四章里详细讲解了自循环解释器(meta-circular evaluator),也就是使用 Lisp 语言实现一个解释器来运行 Lisp 程序。该解释器只有几百行 Scheme 代码,却展示了一些重要的概念,例如 eval-apply 循环,静态绑定(static binding),闭包函数(clos... Read More

JavaSchools 的危害

December 30, 2022

这是软件行业“思想家” Joel 的另一篇文章,该文章写于2005年,关于 JavaSchool(所有课程使用 Java 来教授的学校)给整个行业带来的危害,内容有些争议,但不妨一读。 Read More

你永远不应该做的事,第一部分

December 29, 2022

Stackoverflow 的联合创始人 Joel 的这篇文章,虽然已经过去了20多年,读起来依旧能让人起共鸣。软件开发行业有别与其他行业,在这里每天都有新技术出现,旧技术被淘汰,但有些东西却会一直存在,有些错误20年前的人会犯,20年后的人也依旧会犯,因为人性亘古不变。 Read More

Lisp 表达式解析

October 31, 2022

Lisp 表达式也叫符号表达式(S-expression),是一种前缀表达式。在 Lisp 里,(quote) 函数或者'可以方便地把符号表达式解析成内部的列表数据结构,而在其他语言里,如果需要做类似的转换,则需要花一些功夫。 Read More

Django Migration 源码分析

January 27, 2021

Django Migration 主要用来自动化地变更数据库的 schema(新增表,新增字段等等),有点类似版本控制系统(git),只是控制的是数据库的 schema,而不是代码。 Read More

GitOps 实践

April 01, 2020

在看了 CERN 的 GitOps 视频介绍后,决定实践一下,使用 git 仓库作为 K8S 集群唯一事实来源(single source of truth), 集群的所有改动需要通过 git 来同步。工作流如下图: Read More

SICP 第一章读书笔记 - 递归与迭代

March 08, 2020

花了三周左右时间读完了 “Structure and Interpretation of Computer Programs” 第一章,完成了大部分的习题,在这里记录下书中的一些精华段落,供以后参考。 Read More

记一次 Kubernetes 服务解析问题排查

December 31, 2019

最近把项目部署从 docker-compose 迁移到 Kubernetes 集群后,遇到了域名解析失败的问题。这个问题不大常见,google 能找到的资料不多,所以在这里记录下排障的思路和方法,供他人参考。 Read More

Git 使用和工作流

December 19, 2019

这是前阵子在组里做的一次分享,主要关于 Git 的日常使用和工作流程,目的是希望提高大家对 Git 的了解程度,从而提高工作效率。 Read More

Helm command cheatsheet

December 03, 2019

This post is a cheatsheet of the helm commands. Helm is a package manager for Kubernetes, like apt/yum/homebrew for Kubernetes. Read More

RESTful API 分页问题

November 10, 2019

传统的 REST API 分页方式?page=1&size=10主要应用于静态的或者不经常改变的数据。但面对动态的或者实时数据,就会造成数据重复显示或丢失,尤其在移动端上表现更为明显。因为几乎每个移动应用都会有上拉加载更多数据的交互。 Read More