Blogs

计算模拟历史

以前闲着无聊的时候曾经做过一个《资治通鉴》的字频统计,单以频率计,中国历史不过是“王”与“人”,“义”与“忠”,“将军”与“刺史”,“长安”与“洛阳”。

既然有了频率,自然也就有了概率和条件概率。根据条件概率,当给出一个序列的字词后,预测下一个字词是什么,就变成了一个简单的最大似然估计问题。如果觉得这个序列太长,计算起来太麻烦,可以假设简化的马尔科夫结构,譬如假设下一个词的概率取决与之前的n个词而不是整个序列,这基本上就是计算语言学里的 n-gram 算法了。

所以我们可以用《资治通鉴》作为语料得出经验条件概率,然后来随机模拟出历史文本,产生原汁原味(至少是统计意义上的)史书 (技术细节见附录)。 虽然这只是文字游戏,但是仍然能从概率上看出《资治通鉴》记述的历史中,最容易重现怎样的事件。

譬如下面这则 (random seed = 2000):

撰 刘 崇 俊 以 惟 岳 又 从 入 关 , 宣 等 从 太 子 也 , 惧 履 危 亡 之 事 , 发 步 骑 二 十 骑 自 北 至 北 寺 狱 , 竟 不 使 宗 庙 社 稷 。 宗 元 为 柳 州 司 马 。 坚 大 怒 , 士 气 彫 沮 , 无 事 , 更 为 后 拒 , 倍 急 于 亡 命 聚 众 二 万 会 麻 秋 、 姚 、 宋 赤 眉 将 逢 安 为 新 都 , 剽 掠 。

我们可以这样翻译:

刘崇俊因为惟岳(人名,可能是李惟岳。刘崇俊是五代人,李惟岳是晚唐人,相差不算太远)一起入关(姑且认为是潼关,但是李惟岳在和河北,真实历史是不会入关的),而宣(人名)等人却追随太子而去,害怕这是危亡社稷的事情,于是发步骑二十骑(区区二十骑!估计是武林高手),从北面到北寺狱(这是东汉时候黄门署属下的监狱,鞫禁将相大臣的,好吧,晚唐也有宦官之祸,这里东汉的宦官乱入了,不过二十骑到北寺狱,难道是要劫狱?),最终也没有拜谒宗庙(不把皇帝放在眼中啊)。

柳宗元被任命为柳州司马(二王八司马嘛,承接上文,还是和阉祸有关)。

(某)坚大怒(不知道是孙坚?苻坚?杨坚?),士气不振,好在也没有什么大事,继续抗拒(王师?)。 因急于亡命,聚众两万人与麻秋汇合(麻秋登场,那么坚应该是苻坚了,但是麻秋很早就被苻坚的伯伯苻健杀死了)。

(与此同时)姚、宋(姚崇,宋璟?)率领赤眉军把逢安(这个地名是自动产生的,历史上似乎没有,权且当作是四川 蓬安 吧)作为新的都城,四处剽掠。

我们来梳理一下这段模拟历史的脉络:

这大概是一个王朝末年的乱象。 地方农民起义(赤眉),建立政权(所以有新都),负责讨伐的将领反而形成军阀割据,一些军阀随权臣(刘崇俊)入京,干预朝政(惟岳),一些军阀在地方反叛(坚),勾结外敌(麻秋是羯族人)。这一切的原因可能是因为朝廷宦官弄权已久(北寺狱),忠良被贬(柳宗元)。 军阀入京大概是打着清除宦官的名义(所以要发兵北寺狱),但是同时他们也不把社稷放在眼里。 京城在军阀到来前似乎已经被反贼攻克,所以皇帝和太子分道逃亡。如今皇帝似乎已经回到京城,而太子却还在外面招兵买马(宣等人追随),似乎有不臣之心。

简而言之: 中央朝政腐败,宦官专政,两宫不和。地方盗贼风起,军阀割据,外患不断。

难道这就是随机生成的中国历史最典型的场景? :-)

附录

文中使用的通鉴文本是从维普网上下载的,做了一些简单的清理,上传到了百度云(链接)。 为了避免古文分词的麻烦,在作 n-gram 的时候以字为单位,所以用 gsub 在每个字的后面加入空格。 n-gram 选择 n=2.

 library(ngram)        
 file<-"C:/Users/Zeng/Downloads/zztj.txt"     
 str=scan(file,"character",encoding="GB2312")      
 s = concat(str)      
 s = gsub("(.)", "\\1 ", s)         
 ng = ngram(s, 2)  
 o = babble(ng, 100,seed=2000)  
 Encoding(o)<-"UTF-8"  
 o  
Blog分类: 

素数·派

π 节(3月14日)已经过去了,所以现在写 π 就当是向魔幻圆周率致敬吧。其实数学的发展最需要牛人,就像祖冲之,冷不丁的从历史里给你扔出一个 355/113 (=3.1415929204) 来,等你回过神来,这个 355/113 是如何得到的已经湮没在历史的尘埃中了,所以牛人之后还需要不太牛的传承者。也是因为中国的数学研究一直缺乏传承(后来很大一部分因为科举),在元朝时数学大跃进之后,到了明朝,就大踏步的倒退到了简单算术(虽然珠算得到了很大的发展)。

相比较而言,欧洲的数学一直到十六世纪初都不过尔尔(古希腊的数学传统到那时已经断掉),但是在突然冒出了笛卡尔,莱布尼茨,牛顿,伯努利等人以后,数学的发展风驰电掣,而到了欧拉,简直是神一样的人物了。

莱布尼茨给出了一个用无穷级数求π的方法:

pi= 4*sum (-1)^n/(2n+1)

在 Q 里快速的实现一下:

 {sum raze 4%(1 -1)*/:(0N,2)#1+2*til x} 1000000
 3.1415916536

上例一共用了一百万项,精度略低于祖冲之的密率。

然后是欧拉用 p-级数的方法:

pi = sqrt( 6 * sum (1/n^2))

在Q里快速实现一下:

` {sqrt 6 * sum 1 % {x*x} 1_til x} 1000000 3.1415916987

同样一百万项,收敛速度和莱布尼茨的无穷级数差不多,但是作为大神,欧拉进一步证明了上述p-级数与素数乘积的关系:

sum 1/n^s = prd 1/(1- p^-s)   p 是所有素数

当 s = 2 时, 我们就可以得到

prd 1/(1-p^-2) = sum 1/n^2 = pi^2 /6 

这等同于

如果我们从 1 到 N 的N个自然数中随意抽取两个数,那么这两个数互质(最大公约数为一)的概率在当 N 趋近于正无穷的时候趋近于 6 / pi ^ 2

以上推论的证明很简单,如果两个数互质,那么它们没有共同的素数因子。任意一个自然数被一个素数 p整除的概率是 1/p,譬如,能被5 整除的数字每间隔5个出现一次。任意两个自然数能被 p 整除的概率是 1/p^2. 至少一个不能被整除的概率是 1-1/p^2。把这个结论扩展到任意的 p,那么这个概率就是 prd (1- 1/p^2) for all p。 简单的变形,我们知道这个概率是 6/pi^2

简单的蒙特卡洛一下:

{sqrt 6% avg 1={$[y=0;:x;:.z.s[y;x mod y]];}./:(0N;2)#(1+ x?x)} 1000000
3.1431107401

从一百万个自然数中随机选取50万对,然后算互质的概率。上述模拟中求最大公约数时用的是欧几里得算法:{$[y=0;:x;:.z.s[y;x mod y]];}

转了一圈,终于回到了古希腊:)

Blog分类: 

简书·blog

开始继续写blog,用简书作为国内的镜像,因为我的blog还在被防火墙中。现在想起来,blog被封也该有近十年了,起因是清朝,后来清宫戏大热,也挺戏剧的:)

Rplot

好吧,为了不让这个镜像再惹麻烦,决定不再评论嘉庆皇帝因为恪守着“明亡于万历”的祖训,恪守着“滋生人丁永不加赋”的旧制而无法应对由于大量白银涌入引起的通货膨胀而导致的财政枯竭,这样太让容易被误认为是在“打比方”(尽管现在最大的问题大概是通货紧缩)。

查询了一下blog的MySQL数据库,得到了上面的统计数据图。2006年写了大于300篇的blog,可见那时有多闲,那时候应该已经过了资格考试,正在准备写论文,然后07年开始准备写论文,08年开始准备写论文,09年开始准备写论文,10年论文居然神奇的写完了。写完了论文毕了业,就没有时间写 blog了,12年只写了9篇,13年1篇,14年0篇。于是上图呈现出对数正态分布:)

作为正在文盲化的资深失语症患者,觉得还是需要经常写写字,有助于防止成为痴呆的文盲:)

Free Tags: 
Blog分类: 

一二·岁暮

旧年最后一天,新年第一天。好久没写 blog,提笔写下"岁暮"二字(应该是键盘拼音敲出"岁暮"二字,语言需要与时俱进),于是 conditional probability 开始作怪,马上就想到"夜寒",确实也很冷,但是接着就是"残漏",然后一乐,家里Ikea买的挂钟因为懒得换电池都不再滴答作响,哪里能听得"滴漏",时间不过是电脑、手机、电子钟上默默跳动的数字,dead end。(说起时间,想到最近刚见到的一个单词,picosecond, 10^-12 秒,这是高频交易最新的单位,原来的nanosecond, 10^-9 秒已经不够用了,说不定下个 version 的 Kdb+,timestamp最小的时间单位就不再是 nanosecond,而是 picosecond了。想着每天用 恒河沙分之一秒作为单位的生活,突然觉得古人"滴漏"的生活是一种多么的奢侈啊!)

另外一条 thread,"岁暮"=>"西风", 查了 weather.com 今天倒真是西风(时报广场看大苹果的人们肯定很冷),然后就贝叶斯到了"故园",勉强吧,小时候住的居民小区是有几个花池,栽种着不需要怎么打理的月季,然后就是"碧纱",仔细想来,小时候家里的纱窗倒确实是绿色塑料纤维加了金属边框作成的,那时的乐趣之一就是拿刀片划纱窗玩。所以关于岁暮思乡的thread可以勉强的继续下去,只是印象里没有"一缕茶烟透碧纱",有的只是因为黄河南岸不许通暖气的政策而家户户冬天烤火炉顺着烟囱溢出的袅袅的充满着二氧化硫味道的煤烟,但是这样的煤烟味还是会让人怀念,到了年底还是会想家。

再有一周就要回趟家,一定要回去和卢舍那大佛合一张影。时间在跳,城市在变,几年不回家,熟悉的街道,常去的便利店,都不复存在,只有奉先寺的卢舍那大佛仍然是千年不变的微笑。记得初中的时候给她起了个英文名字 Valerie ,源自她的梵语名字 Vairocana 和她那神似武则天的面容。

故园三万里。(Google Maps上查的,从纽约到洛阳,三万六千里)。平时只能去趟大都会博物馆,看看从 Valerie 家里凿下来的壁画,遥想一下故乡。南朝四百八十寺,同时期的洛阳四十年修了一千三百多所寺庙,然后在接着的几十年里,又毁了这一千三百多所寺庙,那时的遗存,现在正安静的挂在大都会博物馆二楼中国展厅门厅的高墙上。

这一年,一眨眼的功夫就过去了。

想起两周前去佛罗里达度假,要找几本中文书看,翻来覆去,最后从书仓上找来一本《围城》,一本《边城》。此时再看《围城》与高中或者刚上大学的时候看《围城》感觉截然不同。 那时读《围城》,感叹的是钱钟书的学识与旁征博引,无一字无来处。现在再看《围城》,更像是一个读了一肚子有用或者无用书的留学生的无聊、无奈、怅惘与不彻底的自嘲。相比之下,倒真不如茶峒溪旁,养着一个孙女和一条黄狗,给往来客商摆渡的老汉痛快。六月大缸里有解渴的茶水,腰上扎着的有解馋的烟叶。

因为不抽烟,所以还是希望新的一年像六月大缸里的茶水一样解渴:)

Blog分类: 

脍炙《通鉴》

(这是一篇关于很枯燥的技术,很枯燥的历史文本,和不太枯燥的统计的 blog)

看过一篇关于《全宋词》词频统计文章,挺有趣的,想用类似的方法处理一下《资治通鉴》,所以就趁周末花了几个小时作了一下。

词是长短句,统计两个字组成的词频比较合适,《通鉴》是古文,文字结构不同,所以我统计了单字频,两字词词频,三字词词频,四字词词频,和五字词词频。同时也记录各个统计单位(字或词)出现的卷数。《通鉴》294卷,从三家分晋到五代结束共共1362年,所以卷数可以作为时间的度量。

《全宋词》的词频是用 R 作的。R 虽然是不错的统计软件,也是我的最爱之一,但是 R 并不适合作文本分析,更不适合来作数据库操作。所以就用了 C# 和 Kdb +3.0。 C# 用来分析文本,.Net 是懒人的福音,并且多线程运算非常简单,能够大大提升文本处理速度,Kdb+用来储存数据,它差不多是性能最好的 in-memory 数据库了,从它的网站上能下载到免费版本。这个分析里数据库是重头戏,因为需要查询数百万行的数据 row,如果用 MySQL,估计会龟速到死。另外 Kdb + 本身只有 300多K,不用安装,很方便。还有就是 Kdb+ 的 Q 语言也能满足编程需要。

Kdb+ 的网站提供了各种语言 API 的源码,C# 的 API 不支持多线程,所以需要在适当的地方加锁。Kdb 唯一的问题是不支持 UTF-8。它用的是 UTF-7,所以在注入中文文字数据的时候可能会出现乱码,为了省事,从 C# 里 publish 数据的时候,直接 publish 为三字节的 int[] 了。query kdb 时用了一个免费的 GUI QPad。QPad 似乎是用 Java 写的,它的编码默认是 UTF-8,所以在 query  Kdb 的时候直接把三字节的 int vector  cast 成 char,在 QPad 里显示的就是中文了,所以也很方便。

产生数据的 C# 代码非常简单,发布数据的时候自动生成 Kdb 的 schema。使用的《资治通鉴》的文本是网上广为流传的国学网简体版,在生成数据前,先用 C# 作了预处理,主要是用正则表达式替换掉了现代语言的“污染”(譬如:“后一页”,公元xxx年 等)

下表是各个字、词频的数据量:

类别 数据行数
单字            2,586,329
双字            2,102,023
三字            1,633,875
四字            1,221,713
五字                851,403

从上表看,《资治通鉴》应该有近两百六十万字。

单字的字频统计如下:

排名 次数 百分比 累积百分比 
1 66087 2.56% 2.56%
2 39874 1.54% 4.10%
3 35677 1.38% 5.48%
4 34376 1.33% 6.81%
5 21578 0.83% 7.64%
6 21279 0.82% 8.46%
7 20182 0.78% 9.24%
8 20100 0.78% 10.02%
9 19035 0.74% 10.76%
10 18209 0.70% 11.46%
11 18083 0.70% 12.16%
12 使 17160 0.66% 12.82%
13 16116 0.62% 13.45%
14 16031 0.62% 14.07%
15 15600 0.60% 14.67%
16 15558 0.60% 15.27%
17 15252 0.59% 15.86%
18 14746 0.57% 16.43%
19 12826 0.50% 16.93%
20 12536 0.48% 17.41%

“之”字当之无愧的排在了第一位。第一个非虚词是“王”,它包含了姓和爵位,第一个动词是“曰”。“人”的频率也很高,“将”,“军” 在双字词频中也会遇到。“帝”字排名32,“后”字排名33。但是因为是简体字,“后”并不专指皇\王后。

下面是价值观念的排名:

排名 次数 百分比
152 3507 0.14%
181 3004 0.12%
223 2475 0.10%
240 2287 0.09%
253 2190 0.08%
294 1935 0.07%
767 694 0.03%

义、忠、孝排名在前,智排名最后,倒正印证了司马温公那句话:“凡取人之术,苟不得圣人、君子而与之,与其得小人,不若得愚人。”当然这个数据里噪音很多。

另外还有很多有趣的东西,就不一一叙述了。下面看一下两个字的词频:

排名 最早卷数 次数 百分比
            1 将军 1             6,176 0.29%
            2 刺史 21             4,790 0.23%
            3 州刺 21             4,110 0.20%
            4 节度 29             3,698 0.18%
            5 以为 1             3,479 0.17%
            6 度使 203             3,202 0.15%
            7 天下 1             2,972 0.14%
            8 尚书 20             2,742 0.13%
            9 太子 1             2,584 0.12%
          10 陛下 6             2,492 0.12%
          11 不能 1             2,375 0.11%
          12 不可 1             2,351 0.11%
          13 太后 3             2,165 0.10%
          14 皇帝 6             2,050 0.10%
          15 太守 5             2,010 0.10%
          16 大将 6             1,813 0.09%
          17 遣使 4             1,501 0.07%
          18 司马 1             1,480 0.07%
          19 二月 4             1,477 0.07%
          20 馀人 2             1,463 0.07%

“将军”出现的频率最高,在第一卷里就出现了,“度史”显然是“节度使”里出现的,虽然在203卷才出现,但是它居然出现了3202次,唉,唐朝啊!“节度”一次出现的要比“节度使”早。“皇帝”一次最早在第6卷出现,其实那时还是昭襄王元年,但是因为文本中出现了“秦始皇帝上”。

两字地名出现的最多的是“长安”,排名43,最早出现在第5卷,不过那里的“长安”并不是长安城,而是赵国的长安君。“洛阳”其次,排名81,最早出现在第2卷,三家分晋不久,洛阳附近就成了三晋与秦国的战场。

三个字的词频:

排名 最早卷数 次数 百分比
1 州刺史 21 4102 0.25%
2 节度使 210 3195 0.20%
3 大将军 6 1547 0.09%
4 平章事 203 933 0.06%
5 同平章 203 901 0.06%
6 十二月 4 704 0.04%
7 之子也 13 700 0.04%
8 十一月 7 686 0.04%
9 部尚书 70 655 0.04%
10 指挥使 254 578 0.04%

比较有趣的是“之子也”,老子英雄儿好汉。

四字字频:

排名 最早卷数 次数 百分比
1 同平章事 203 900 0.07%
2 仪同三司 49 403 0.03%
3 都指挥使 254 374 0.03%
4 日有食之 1 368 0.03%
5 中书侍郎 73 325 0.03%
6 节度使李 217 312 0.03%
7 散骑常侍 69 308 0.03%
8 开府仪同 79 300 0.02%
9 府仪同三 79 283 0.02%
10 御史大夫 9 281 0.02%

鉴于“州刺史”在三字字频中频繁出现,所以频率出现比较高的各个州刺史的频率单列出来:

排名 最早卷数 次数 百分比
15 豫州刺史 58 220 0.02%
19 荆州刺史 49 195 0.02%
26 兗州刺史 37 172 0.01%
32 徐州刺史 30 167 0.01%
38 扬州刺史 24 152 0.01%
42 雍州刺史 65 147 0.01%
52 江州刺史 86 122 0.01%
64 益州刺史 39 113 0.01%
68 二州刺史 49 111 0.01%
74 秦州刺史 79 109 0.01%
101 青州刺史 21 91 0.01%
105 梁州刺史 84 90 0.01%
107 冀州刺史 27 88 0.01%
114 并州刺史 52 84 0.01%
135 凉州刺史 31 71 0.01%
165 幽州刺史 50 62 0.01%
196 广州刺史 80 55 0.00%

豫州刺史第58卷时才登场,但是雄踞第一,而豫、荆、兖、徐、扬也勾勒出了中国政治地理的热点。顺便提一句,最早登场的豫州刺史是王允,而最早登场的荆州刺史是杨震。

五字词已经没有太大的意义:

排名 最早卷数 次数 百分比
               1 府仪同三司 79 283 0.03%
               2 开府仪同三 79 283 0.03%
               3 尚书左仆射 77 167 0.02%
               4 皇帝上之下 10 140 0.02%
               5 为中书侍郎 84 118 0.01%
               6 尚书右仆射 81 115 0.01%
               7 军都指挥使 256 111 0.01%
               8 骠骑大将军 39 107 0.01%
               9 河东节度使 214 101 0.01%
            10 督中外诸军 74 97 0.01%

最后看看慕容家的英杰们谁的全名被提到的次数最多:

次数
慕容彦超 27
慕容垂 26
慕容廆 24
慕容绍宗 15
慕容恪 18
慕容评 18
慕容皝 17
慕容农 15
慕容翰 15
慕容仁 12
慕容白曜 10

似乎是慕容彦超险胜慕容垂……慢着!慕容垂最初的名字是慕容霸,而慕容霸被提及了10次,所以慕容垂以 36 次远远胜出 (慕容缺这个全名并没有出现在《通鉴》中:))。

Blog分类: 

弈棋·十年

flash-chess

西晋的傅玄说:“人之涉世,譬如弈棋。”钱钟书的《管锥篇》里,将之与西方民俗比较,援引美国社会学家萨姆纳《民俗论》(Folkways) 中的 the aleatory element in life / 人生中的掷骰子成分,认为“掷骰、弈棋,无非逢遇、幸偶之拟像而已。”

细想来,钱氏的类比并不准确。掷一颗理想的骰子是幸偶,但是弈棋并不是纯粹的逢遇,因为弈棋至少还有可以控制的选择。

大概这也是弈棋迷人之处,不同于一个决定性的动态优化问题(譬如 Cass-Koopmans Optimal Growth Model,每一步该怎么作都是可以实现计划好的),弈棋总是一系列的 contingency plan /应急计划,每一步或者取决于上帝/自然(i.e. 随机的事件),或者取决于诸多弈棋的参与者(i.e. 其他人的优化)。

今天是来美国十周年,十周年的今天来到美国,本科刚毕业,依照当时的计划是在美国念一个政治学博士学位然后回外交部工作,虽然当时也并不是特别的喜欢外交部,但是就像下棋,选择本身是路径依赖的,一旦你走上某条路径,在未来不可完全预知的情况下,只有按照这条路径优化 —— 当然对于未来的期望也是基于当时现有信息的,如果预期有偏差,那 ex ante 的优化与选择也许就是无意义的了 —— 事实也大概也是如此,因为念博士是一件很费时间的事情。

就像下棋,每一步当随机的部分realize之后,剩下的就是优化了,当然“人之涉世”是一个复杂的弈棋,里面有各种内生性问题,一层层的路径依赖,当然路径也有交错的时候,就像一个重重叠叠的二叉树,站在每个交叉点上,有时是上帝掷骰子帮你做出了下一步的选择,有时是你基于自己对于 state of the world  的 belief 做出的优化选择(如前所言,你的 belief 很可能是有很大偏差的)。

所以时间久了,回头再看走过的路径,不断的弈棋反而像一条布朗运动的轨迹,尽管你每一步都在优化,但是从起点到终点没有太强的相关性(或许会有一个不大的 drift term ,但正如不是所有的骰子都是 fair 的)—— 这样看来弈棋与掷骰之间倒也有相通之处。

所以十年后的现在,在华尔街的一家投资银行做期权量化交易,和十年前初到美国的打算大相径庭,唯一的相同之处大概就只有马克思和熊彼特从不同角度对于资本主义做出的预言了。

回到钱钟书引用的那句 the aleatory element in life。 aleatory 源自于拉丁语 alea/骰子。这个词在现代英语里几乎唯一使用的地方是一句成语: Alea iact est / The die has been cast 。 据说这是凯撒带兵渡过卢比孔河向庞贝和元老院宣战时说的。这句话倒是成了以上讨论一个不错的脚注:不管事前选择种种,骰子掷下了就掷下了。

呵呵,纪念来美国十年:)

Free Tags: 
Blog分类: 

坂道上的阿波罗

Moanin'_(Art_Blakey)

故事的初始设定挺象《挪威的森林》的,六十年代,学生运动, 爵士唱片,美国占领军, 奔跑,两男生一个女生,不过还好故事没有朝着压抑的纠结方向发展,虽然纠结,但是还算是阳光的纠结;

六、七十年代的日本其实一个很好的背景设定,从现在数回去,90年代起到现在是“丢失的二十年”,乏味毫无生机,是比较适合《大逃杀》的设定;80年代像是飞速撞向墙壁的火车,所以有《1Q84》和东京上空的两个月亮;六、七十年代相对而言要更富有生机和色彩一些,因此当千的外婆狠狠的说千是敌国人生的小孩儿的时候,或者是东京大学的黑板上写着“造反有理”的时候,再或者酒吧里的美军醉鬼说他不听 cool jazz 而要听 white jazz的时候,会发现整个复杂时代的背景恰到好处的折射进这个简单的故事。

当然重要的还是故事本身。其实是一个很简单的故事,没有复杂的人设,剧中的人物也没有抗击使徒或者是打到天顶星人的重任,主题也很简单的只是友情(音乐和爱情都成了友情的铺垫,可怜的律酱),腐女张牙舞爪的时代里,似乎友情不再存在、这个世界上只剩下基情了,所以能看到一个纯粹友情的简单故事反而觉得弥足珍贵了。

描述一个简单的故事要远比讲述未来人,外星人或者超能力者的故事困难,平淡难免平庸。《坂道》的节奏张弛很不错,最后的结局也在情理之中 —— 少爷和千归根结底还是同一类人,当事情变得复杂的时候,两个人都选择了跑开 (可怜的律酱)。

至于少爷和律子的爱情故事,在强大的友情面前反而变得黯然了(可怜的律酱),在少爷眼里,三个人关系是一个整体。借用(前)专业的术语,即是 holism —— 他们的关系 should be viewed as wholes, not as collections of parts (英语部分抄自 wiki)。还记得少爷的 My Favorite Things? 就是三个人在一起。所以当千不在了,剩下的部分也变得没有意义了(可怜的律酱)。

有些片段还是很精彩的,譬如文化祭的演奏,就不赘述了。

不懂爵士乐,但是看完了这部片子,把手机的铃声设成了 Moanin',而对于 Some Day My Prince Will Come 却丝毫没有印象了(可怜的……) 其实还是挺喜欢律酱的,感觉很像《秒速》里的花苗:)

Blog分类: 

寒食·算术

今天做计算的时候突然想到的一个问题:

  1. 传统上,寒食是冬至后105天,在 Excel 里算了一下,所以寒食应该是今天 4月5日;
  2. 传统上,寒食在清明前一天或者两天;
  3. 今年清明是 4月4 日;

所以就有了矛盾,今年的寒食在清明之后。白天没功夫儿细想,现在才想明白其中缘由:古代用平气,现在(从清代开始)用定气,所以定气导致清明节离冬至的距离缩短,以至于清明和寒食的时间错位。

中国古代的历法是阴阳历,一年的长度大约等于一个回归年。在清代以前,节气是以冬至为起点、二十四等分回归年来确定的。所以清明在冬至后 365.25/24*7 = 106.53 天,根据冬至的具体时刻,这个数字折合成天数,可以是冬至后106天或者107天,寒食在冬至后105天,所以正好是清明前1天或者2天。同时因为12个朔望月的长度短于一个回归年的长度,所以使用平气,也可以确定闰月,凡是没有中气的月份就是上个月的闰月,这样一来差不多十九年有七闰,协调了朔望月与回归年之间的矛盾。

南北朝的时候,古人发现太阳的视运动不均匀(地球的轨道是椭圆的),因此隋代的刘焯在《皇极历》里把周天二十四等分,太阳每行 360/24 = 15 度,就是一个节气,这样得到的节气是定气,两个节气之间相隔的日子是不等的。但是因为定气一般都用在历法的计算中,民间一直用等分回归年的平气,所以寒食始终在清明前一天或者两天。

清初废明代《大统历》,使用《时宪历》,在民用历法中也用定气,所以自清初起,寒食与清明的位置就颠倒了。计算了最近十几年清明和冬至的精确时间差,平均是 104.1537 天,最大104.1646天,最小 104.1458 天,所以自清初开始,寒食要么和清明同一天,要么比清明晚一天:)

Blog分类: 

茶荒

T25PmfXaRbXXXXXXXX_!!383390319

眨眼到清明,又是每年“茶荒”的日子了。(清)明前,(谷)雨前,是出新茶的日子,去年的茶喝到现在,差不多要见底儿了,从二月初到现在,就只能参杂着陈茶数日子。

纽约虽大,却着实找不到一个能买到好茶叶的地方。唐人街的茶叶铺绿茶似乎只卖龙井,并且还是陈了若干年的龙井。饮茶就是饮故乡水土,生不在江南,自然喝不惯江南茶,更别说江南陈茶了。

所以试过在网上买茶,但是却屡屡失望。网茶大多迎合美国市场。而美国人对于“茶”也许有不同的概念,虽然近些年了颇有饮茶的风气,星巴克的小黑板上也不断的写着各种加了或是不加糖、奶、香料的茶,但是那个也许只是产在相同或者相近的一种植物上的叶子而已,和真正的茶相去太远。(八卦一则:1762年现代生物学分类命名的奠基人林奈曾把茶树分为红茶种和绿茶种 –_- )

原来茶荒的时候也试过日本茶。从某种意义上说,日本的很多文化是中国文化的化石。就像一个 version control 系统下 branch 出去而又没有再 re-integrate 的一个发展分支一样。既保留了中国某个历史时期文化的残存,又被他们改的面目全非,譬如抹茶。中国明代以前是饮茶的习惯大致和日本的抹茶相似:先将茶饼碾碎成茶粉,然后烧水,水初沸的时候冲茶碗,大沸以后,加几匙冷水,然后冲茶粉,为了让茶粉和水混合均匀,需要用到“茶筅”—— 现在你要是直接搜索“茶筅”,出来的肯定是一串儿日语的结果,因为现在日本抹茶还在用,中国已经不用了。当然日本从茶叶到茶道都做了有日本特色的改进,中国古代的点茶,茶色贵白,所以黄庭坚比之为“琼蕊”。而抹茶反而崇尚浑浊的绿了。

中国人更改饮茶习惯源自朱元璋:

国初四方贡茶,以建宁阳羡为上,犹仍宋制,碾而揉之,为大小龙团。洪武二十四年九月,上以重劳民力,罢造团茶,惟采茶芽以进。其品有四:曰探春、先春、次春、紫笋。…… 按茶加香物,捣为细末,已失真味…… 今人惟取初萌之精,汲泉置鼎,一瀹便饮,遂开千古茗饮之宗,不知我太祖实首辟此法。陆羽有灵,必俯首服。蔡君谟在地下,亦咋舌退矣。—明· 沈德符 · 《野获篇补遗》

“茶加香物,捣为细末,已失真味。” 就像我们已经在运行 茶7.0 ,而日本还在继续改进 茶3.1。当然,升级也不一定都是进步。

也是因为饮茶习惯的改变,茶具也发生了变化,明以前特别是宋时因为点茶汤白,所以用黑色的建盏,明以后瀹茶汤绿,所以要用白色的宣瓷。也是因此,原来和朋友聊起过《红楼梦》里妙玉同学用的古董茶具其实并没有太大的意义。当然也可能是曹大叔别有深意,大叔的心都是复杂纤细的(出自某集《银魂》)。

瞎贫了这么多,都是茶荒闹的,就像大叔冯谖靠在柱子上弹着剑唱:“长铗归来乎!食无鱼。” :)

Blog分类: 

eDiary 3.0: 跨越八年的更新

camel-leather-diary-47 1999年,有了我的第一台笔记本电脑。在某一期《大众软件》或者类似刊物附送的光盘里,发现了 eDiary ,一个免费的写日记的软件。那个时候网络还不算发达,web 2.0 的概念还很遥远,所以开始把原来用纸笔写的日记,改在电脑上敲出。这是使用 eDiary 的开始。

因为那个时代自己建网站还不是很方便,所以也不能及时从网络上得到一款软件的更新,最多只能等待附送光盘的杂志或者去那时很有名气的“华军软件园”里看一看,所以最初的这个 1.0 的版本用了很久。

刚开始的时候,没有备份数据的习惯,那个时代没有网络云备份,一般电脑也不能刻录 CD ,更别说 DVD,流行的只有 2.5 寸软盘。所以早先的日记也零零散散丢过一些,还有一些存在软盘里,不知道搁在那里了。现在电脑上 eDiary 里可以追溯的最早一片日记是 2001年1月31日。这一日,日记的内容是空白。第一篇有文字的日记是 2001年2月7日,这一天除了琐事以外还记录了:

离考试还有36天。这36天要做的事情:完成国内题第二遍,北美题的第三遍(以复习总结为主),坚持背单词,做ETS的POWERPRE,还有LSAT的逻辑题,顺便读一读GMAT的阅读。记住要不断的总结。

考试说的是 GRE,从这里推断,原定的考试时间是 2001年3月15日。但是认真往后看去,真正的考试时间是 2001年4月20日 ——往后足足拖了一个月,看日记就像看镜子里的自己。

2003年11月29日, eDiary 发布了 v 2.53。然后这个作者就神秘的消失了,仿佛离开了地球。那时他已经有了一个在网易申请的免费空间,还有一个免费的域名自动转向服务。多亏了这个域名自动转向服务,从那里知道了作者最新的网站。作者有了自己的域名。不过还是沉寂。

意外的是,这个最初运行在 Windows 98 上的软件,在后来的岁月里,可以稳定的运行在 Windows 2000, Windows XP,Windows Vista 一直到 Windows 7。并且这个软件一开始就是“绿色”的,不需要安装。

所以尽管时间已经到了2011年底,却仍然使用着这个 2003 年发布的软件。好的软件是独立于时间的。

然后到了2011年12月底的某天,无意点开了软件作者的网页,居然发现他更新了!推出了 v3.0 beta 1,距离上次更新已经有了 8 年多!

一个 decade 差不多就这么过去了,外面的世界发生了翻天覆地的变化,萨达姆倒台了,拉登被杀了,苏丹分裂了,然后作者竟然更新软件了!:)

前不久在 Virtual Box 上装 Windows 8,做的第一件事就是确认 eDiary 是否能运行,总担心某一天它无法再适应新的操作系统,看到作者又重返地球,心里踏实了很多,至少不用再担心软件陈旧,无法使用。

又能安心的写日记了。“以铜为鉴,可正衣冠;以古为鉴,可知兴替;以人为鉴,可明得失。”日记里的自己就是“古”“人” 。

再次跳跃回1999年,新浪提供电子邮件服务,注册了 kzeng # sina.com 的邮件,但是没怎么用过,那时主要是是 263 ,然后是 hotmail,gmail。再跳回到2012年,终于开通了新浪的微博 —— 没写过一条微博,只有一个关注, eDiary

Free Tags: 
Blog分类: