Monoids and Monads

Haskell由于使用了Monad这种较费解的概念来控制副作用而遭到了一些批评意见。Wadler试图平息这些质疑,他解释说:“一个单子(Monad)说白了不过就是自函子范畴上的一个幺半群而已,这有什么难以理解的?”
A monad is just a monoid in the category of endofunctors, what’s the problem?

这一句话包含了好几个概念:单子(monad),自函子(Endo-Functor),幺半群(Monoid),范畴(category)。

Read more

Command Query Responsibility Segregation Pattern

在面向对象设计中,常常忽略了一个概念,对象是用于描述一个单一职责的,它要求我们:一个对象包含自身属性、行为、内在调用等行为。对象间通过相互调用完成一项工作。因此,我们在做面向对象设计时,应该分清一个对象应该包含多少东西,对象的属性是否 belong to它自身。如果一个对象的行为模糊不清,是否该对象设计合理?

Read more

OAuth2几种授权模式

授权码模式

授权码模式(authorization code)是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与”服务提供商“的认证服务器进行互动。

Read more