Yaodan's Blog

函数式编程的基石 - Y Combinator

| Comments

本文主要目的是给大家介绍函数式编程中一个非常重要的知识:Y Combinator。包括它是什么,干什么用的,它为什么能够work,它的数学含义以及如何用重构的方式“推倒”他。

Lisp中cons/car/cdr的几种实现方式

| Comments

基本概念

在Lisp中,conscarcdr是三个原始操作符,Lisp在它们(和另外几个原始操作符)的基础上,定义了一个干净、完整的编程语言。关于Lisp的基本概念,有一篇博客写的非常好,强烈推荐大家去读一读:《Lisp之根源

Gradle学习笔记-1:基础知识

| Comments

Hello World

在Gradle中,每一个build都由一个或多个project组成,而每一个project都由一个或多个task组成。

这是一个task的Hello World:

build.gradle
1
2
3
4
5
task hello {
    doLast {
        println 'Hello World'
    }
}

在线系统数据&服务的迁移策略

| Comments

当需要在正在运行的在线系统中进行数据或服务的迁移时,有很多问题需要考虑,如何设计迁移策略以保证数据正确迁移,如何处理系统间的依赖,如何保证服务持续可用等等。本文将从一个服务提供者的角度,讨论如何进行数据迁移才能保证对外提供的服务接口前后一致且持续可用,实现对于客户端的无缝迁移。

考虑一个简单的场景,有一个web应用,存有一定数量的用户信息,以前用户的密码都是用明文存在数据库里面的,作为一个有理想有道德的程序员,我现在想升级系统,对这些密码信息进行加密,我已经准备好了加密算法和相关的实现代码,现在问题来了,我要如何加密现有用户的密码呢?

六个人的毕业旅行

| Comments

旅行结束了快两个月了,一直想写点什么,却一直下不了笔,大概这就是传说中的拖延病把。这次在公司里做Pecha Kucha,我想讲讲自己的这次旅行,也正好借这个机会,给自己的毕业旅行做个总结。

----------------- 我是分割线 ------------------

这是一个我期待了近两年的旅行。

去年10月份找到工作后,我和@meikidd就开始了筹划。无奈大家总有各种事情,凑不齐时间,这样一拖,就到过年了。过完年,要是再定不下来,就再没时间去了,以前一届又一届的毕业旅行就是这样胎死腹中的。于是我和@meikidd决定不等了,他带上@up-up-努力向上的S,就我和他们小两口三个人去。定好行程和机票酒店后,又拉来了去年毕业的师姐@irene和他老公@kim1219,临出发前又拉上了学妹@只是很无趣,6个人的小团体就这样成型了。