得墨忒耳定律

得墨忒耳定律(Law of Demeter,缩写LoD) 亦被称作“最少知识原则(Principle of Least Knowledge)”,是一种软件开发的设计指导原则,特别是面向对象的程序设计。得墨忒耳定律是松耦合的一种具体案例。该原则是美国东北大学在1987年末在发明的,可以简单地以下面任一种方式总结:

  1. 每个单元对于其他的单元只能拥有有限的知识:只是与当前单元紧密联系的单元;
  2. 每个单元只能和它的朋友交谈:不能和陌生单元交谈;
  3. 只和自己直接的朋友交谈。 这个原理的名称来源于希腊神话中的农业女神,孤独的得墨忒耳。 很多面向对象程序设计语言用".“表示对象的域的解析算符,因此得墨忒耳定律可以简单地陈述为“只使用一个.算符”。因此,a.b.Method()违反了此定律,而a.Method()不违反此定律。一个简单例子是,人可以命令一条狗行走(walk),但是不应该直接指挥狗的腿行走,应该由狗去指挥控制它的腿如何行。

优点 得墨忒耳定律使得软件更好的可维护性与适应性。因为对象较少依赖其它对象的内部结构,可以改变对象容器(container)而不用改变它的调用者(caller)。

欧阳询八诀书法理论

“欧阳询八诀”书法理论,具有独到见解。对明代人李淳的八十四法,清代人黄自元结构92法的著述,均有启示。其“八决”为:

(点)如高峰坠石;

(横戈)如长空之新月;

(横)如千里之阵云;

(竖)如万岁之枯藤;

(坚戈)如劲松倒折,落挂石崖;

(折)如万钧之弩发;

(撇)如利剑断犀象之角牙;

(捺)一波常三过笔。

Python List 的两种排序

# import a groupby() method # from itertools module from itertools import groupby # dictionary INFO = [ {'employee': 'XYZ_1', 'company': 'ABC_1'}, {'employee': 'XYZ_2', 'company': 'ABC_2'}, {'employee': 'XYZ_3', 'company': 'ABC_3'}, {'employee': 'XYZ_4', 'company': 'ABC_3'}, {'employee': 'XYZ_5', 'company': 'ABC_2'}, {'employee': 'XYZ_6', 'company': 'ABC_3'}, {'employee': 'XYZ_7', 'company': 'ABC_1'}, {'employee': 'XYZ_8', 'company': 'ABC_2'}, {'employee': 'XYZ_9', 'company': 'ABC_1'} ] # define a fuction for key def key_func(k): return k['company'] # sort INFO data by 'company' key. [Read More]

芝麻与蝉

Cicadas and sesame seed 

全世界芝麻供应商的三大国其中两个国家都有很大数量的蝉。

缅甸的蝉灾每 13 年出现一次,而巴西的蝉灾每 17 年出现一次。

明年他们则会同时孵化 221 年才会出现的现象,这两国的农作物会被大幅度毁坏。 

不像缅甸和巴西,印尼则没有蝉灾。

我惊奇的看到印尼的芝麻期货价格如此之低,我买入了一批期货。

那么如果短缺使得全球价格上涨即使只有 10 个百分点,我们将获利 6800 美元。

美剧 Silicon Valley 一个投资策略

蝉对芝麻产量的影响未做印证

博物馆

维基艺术

Art Institvte Chicago

New York Public Library

国立故宫博物院 台北故宫博物馆

RIJKSMUSEUM 荷兰国立博物馆

Smithsonian 史密森协会

The Met

沃尔特斯艺术博物馆

盖蒂博物馆

世界名画档案馆

巴黎博物馆协会

美国国家艺术馆

美国国会图书馆

荷兰梵高博物馆

大英博物馆

USEUM

维也纳艺术史博物馆

在线博物馆

The Morgan Library Museum

清华大学艺术博物馆

纽约现代艺术博物馆

谷歌艺术与文化

Python3 中的四舍五入

最近在项目中遇到前后端计算数值不一样的情况,发现是由于 Python3 数学运算处理方式和 PHP BC Math 不一样 PHP 的 round 函数 round ( float $val , int $precision = 0 , int $mode = PHP_ROUND_HALF_UP ) : float Constants Description PHP_ROUND_HALF_UP Rounds num away from zero when it is half way there, making 1.5 into 2 and -1.5 into -2. PHP_ROUND_HALF_DOWN Rounds num towards zero when it is half way there,making 1. [Read More]

算法比较

计算 1+2+3+……+100 结果的程序

int i, sum = 0, n = 100;
for (i = 1; i <= n; i++) {
    sum = sum + i;
}
printf("%d", sum);

高斯

int sum = 0, n = 100;
sum = (1 + n) * n/2;
printf("%d", sum);

Go vs PHP Syntax Comparison

Data types PHP types: bool string int //Integer float array object NULL resource Go types: string bool int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr byte //uint8 rune //int32 float32 float64 complex64 complex128 array slices map struct Variables Variable declarations Go PHP var i int $i = 0 // integer var f float64 $f = 0.0 // float var b bool $b = false // boolean var s string $s = "" // string var a [2]string $a = [] // array Short variable declarations [Read More]

一个故事

一个员外请了个掌柜,这掌柜的很会理财,帮员外赚了很多钱,所以很受员外的宠信和尊重。可是这掌柜的脾气也越来越大,饮食住宿特别挑剔,稍不如意就发脾气。 

有一回,他睡不着觉,总说被褥不舒服,有东西硌着,把伙计和员外都吵起来了,可被窝里什么都没有啊,大家伙儿打着灯笼仔细找了半天,才在被窝里找了三根头发,老掌柜的这才睡得踏实。员外很生气,嫌老掌柜的太矫情,不久就找个借口把他辞了。 可是换了个掌柜却没原来那个掌柜的会赚钱,员外无奈,就去乡下,到那老掌柜的老家去找他。员外到了乡下,发现村头树下放着个陶罐,里边盛着半罐粗劣的食物。旁边还睡着一个老汉,头枕着一块土坷垃,睡得特别香。

员外仔细一看,才认出这老汉就是老掌柜的,员外把他唤醒,恳请他跟自己回去,两个人就和好如初了,后来员外喝多了酒,跟这老掌柜的交心,便说起了当初辞退他的原因,问他为何被褥中有三根柔软的头发都睡不着,到了乡下躺在泥土地里,枕着块土坷垃反倒睡得香。

那老掌柜说:“在城里的时候,每日打理生意,清算帐目,我是殚精竭虑啊,所以深思焦虑,脾胃不好,饮食稍差一些就没有食欲,睡的稍不舒服就无法入眠,可我到了乡下,什么都不用想、什么都不用操心,自然吃得香、睡得着。”