kzeng's blog

中国古代的大预言(一)

<

p>

LP给了一个光荣的任务:寻找可供消遣的电视剧。于是找到了 TVB 的新剧《天机算》,开头还可以,比较轻松,又融有时下流行的风水、数术等元素,是一部不错的吃饭片(i.e. 吃饭时看的片子),推荐给LP,结果没有想到结局那么糟糕,元华很快就死了,后来的故事写的也不好看,可惜了《推背图》这样一个好题材。

说起《推背图》,倒有不少有趣的故事。作为谶纬之学自魏晋以来屡次禁绝后的流变,它在民间的传播很广。世传此书乃李淳风与袁天罡合著,查了《新唐书·艺文志》,有二人合著的一本《太白会运逆兆通代记图》。袁天罡(纲)与李淳风二人也于史可考:袁天罡是成都人,善于相术,是个方士;李淳风是陕西人,精通历算,是一位数学家、天文学家兼星相学家,著述颇丰,曾经为《周髀算经》和《九章算术》写过注。《推背图》大概就是这本《太白会运逆兆通代记图》的俗称吧,至少在宋代,这部书就非常的流行了。但是就内容而言,却很难说此书成于唐太宗之时,因为它对宋以前的事情预言的太准了,譬如第十六象:

第十六象 已卯 离下坤上 明夷 

谶曰:
   天一生水 姿禀圣武

<

p align="center">   顺天应人 无今无古

颂曰:
   纳土姓钱并姓李 其馀相次朝天子

<

p align="center">   天将一统付真人 不杀人民更全嗣

<

p align="left">这一象说的是宋太祖受禅汴梁一统天下,图谶里连“钱”和“李”(也就是吴越和南唐)都预测出来实在匪夷所思,所以有人说《推背图》应该成书于宋代以后,但是似乎又没有这么简单,譬如金圣叹批注过的《推背图》,第三四象:

 

<

p align="center">第三四象 丁酉 巽下巽上 巽

谶曰:
   头有发 衣怕白

<

p align="center">   太平时 王杀王

颂曰:
   太平又见血花飞 五色章成里外衣

<

p align="center">   洪水滔天苗不秀 中原曾见梦全非

金圣叹的批注是:「证已往之事易,推未来之事难,然既证已往,似不得不推及将来。吾但愿自此以後,吾所谓平治者皆幸而中,吾所谓不平治者幸而不中,而吾可告无罪矣。此象疑遭水灾或兵戎与天灾共见,此一乱也。」此象预测的是在金圣叹之后的事情,所以金圣叹说证实已经发生的事情比较容易,但是推测将来还没有发生的事情就难了,这一象也是他批注的一个分界点,这之后都是金圣叹身后的事情。

从现在看来,这一象的含义一目了然,显然说的是太平天国起义,“头有发”是因为太平军蓄发,故也被清廷称为“长毛”“发贼”;“衣怕白”说的是太平军的衣服尚红黄之色,“太平时”,有一语双关之意,一指太平军,二指攻克天京,局面打开之时,“王杀王”是太平军内哄,诸王残杀。而颂词中亦暗指此事,并且几乎说出了“洪秀全”的名字。如何解释呢?

Blog分类: 

管理好时间:SlimTimer

虽然整日都在忙,却也难免磨洋工。简单的一点儿事情,做起来歇歇停停,停停歇歇。一眨眼,天黑要睡觉了。发现了一个不错的帮助管理时间的网站:SlimTimer。在那里,你可以创建自己的 Task List,把要做的事情写下来,每开始做一件事情的时候,只需要点击一下那个 task 就可以自动开始计时,想要暂停切换任务再次点击即可,如果完成,直接购选 checkbox。一天下来,可以自动生成报告,看看这一天的时间都用在哪里(譬如可以把玩游戏,看闲书也列出来纪录时间),方便你对自己的时间安排有个更清楚地认识(呵呵,自己的估计往往是不准的)。另外,每个task都可以方便的加上 tag (用[]即可),这样可以把不同的task 分为:工作,学习,休息等等类别,生成报告的时候也可以按照这个类别进行统计。这样一来每天的效率就一目了然了,如果哪一天效率比较低,也可以方便的找出时间消耗在了哪里。呵呵,用了一段时间,觉得挺有帮助的。

另外,SlimTimer 还可以不打开浏览器通过 Bubbles 运行。Bubbles 是一个使用户可以在本地运行网络程序的软件,也非常的有用处, 譬如除了 SlimTimer,你还可以在 Bubbles 里运行 Gmail, Flickr, Yahoo Mail 等程序, 以 Gmail 为例,不仅可以实现web下Gmail的全部功能,同时还有"来信显示" ,不错的工具:)

Blog分类: 

国内的书真便宜

家里那边正好牡丹花会,又赶上五·一的假期,所以有不少打折的书卖。老妈打电话问我要不要买什么书,想了想,书太沉,买了也不好带过来,还是择其精要吧,原来的简装本《资治通鉴》已经翻破了,于是就让她和老爸去书市买一套硬皮的《资治通鉴》和《曾国藩全集》,这样耐磨一些,我看书和穿鞋一样,破坏力太大。

爸妈买了这两部书,厚厚的十六开大本,一共10本,又给姥姥买了一套大字的《四书五经》,有四五本的样子。姥姥今年已经 87 岁了,眼睛虽然看书没有问题,但是如果字太小,看久了还是吃不消,现在大字版本的书不好买,可巧碰上了。一共三部书,厚厚的精装十几本,尽管标价加起来4000多元钱,但是实际上一共才只花了 400 元钱,没想到会这么便宜。记得高中时买过一本盗版的《穆斯林的葬礼》,纸张的质量很差,盗印的错别字也很多,竟然还要25块钱(呵呵,记忆犹新啊),现在的精装书却这么的便宜,是一件好事儿。

买了新书是一件很兴奋的事情。记得十二岁生日的时候,老妈的一个同事送了我一套89年版的《辞海》,按照90年代初的生活水平,一部《辞海》着实价值不菲,拿在手里,激动的一夜都没睡着:)

Blog分类: 

网络暴动:HD DVD Night

 一直都在订阅了 Digg 的feed,时不时的看一看,大约从前两天开始就有人不断地贴一段代码,到了5月2日的晚上,突然 Digg 满屏的都是这段代码(参看右图,图片来源 wikipedia,不过也许很快这张图在 wikipedia 上就看不到了),看了5月3日的《纽约时报》的报道,才知道原委,有人把一段破解 HD DVD 的代码贴在blog里, 并被"挖"到了 digg , digg 很快就收到了版权保护机构的律师函,说这样侵犯了知识产权,于是 digg 就把这个帖子删除了,最初"挖"它的 id 也被封掉了,但是此举马上遭到了网站使用者的抗议,于是他们不断的张贴这段代码,不断地把它推上首页,最终全屏都是这个代码的相关帖子了。digg 开始的政策是“删&封”,但是民不畏死奈何以死惧之,不少人都在帖子中说:“Delete my account if you wish, I say again ....”,或者 “So what! Remove this, I will post another article..."

,最终 digg 的创始人 Kevin Rose 出来说话

You’d rather see Digg go down fighting than bow down to a bigger company. We hear you, and effective immediately we won’t delete stories or comments containing the code and will deal with whatever the consequences might be.

digg 开始转而支持网友,不再删除 HD DVD 的破解,摆出一副誓死一搏的姿态。这件事情也波及到了其他 web 2.0 网站,譬如 Wikipedia ,很快就有了 HD DVD Night 的词条,但是词条上却写着:This article is being considered for deletion in accordance with Wikipedia's deletion policy. 同时,wikipedia 上现在仍然继续着是否保留这个词条的争论。

呵呵,不知道这次事件的结果会是怎样,但是无数的人都说,这是 a momentous event in Internet history to be sure。看看最终到底是网络胜利,还是大公司和他们的律师们会最终胜利。

Blog分类: 

Views 模块教程(六):区块与 argument 的使用

通过利用 views 模块制作“按月归档”的页面和区块(block)来讨论一下 argument 的使用。Drupal 其实有按月归档这个模块,叫做 Monthly Archive , 是 Mars 做的,不过用 views 模块实现这样的功能也不难。我的 blog 的侧边栏就是一个实例,点击 “blog 归档” 下面的“更多”就可以进入按月归档的页面,看到所有 blog 内容的档案。

开工。 在 views 的管理界面下点击“add”标签,添加新的视图。名称是 Archive ,给所有的访客访问的权限,描述随意。然后“页面”项下选择 provide page view,提供页面视图, url 按照惯例是 archive。 viwe type 随意,我这里选择的是习惯的 teaser list,标题“按月归档”。使用 pager (分页)。其它的默认即可。

然后在“区块”项下选择 provide block,提供区块。view type 考虑到是在侧边栏现实,所以选择 List view (列表显示)。区块的标题“Blog 归档”,你想继续叫“按月归档”也行。一个区块现实的页面链接数,5 个。然后选择 [more] link。

Fields项下,只需要添加一个字段(field),Node:Title。Option 设为 As Link,不可sort。这里定义的是最基层的视图的显示,譬如这个链接下的显示:http://www.kzeng.info/archive/200704 。

过滤器项下,第一个过滤器, Node: Published 只选择发布的内容;第二个过滤器, Node: Type 只选择 Blog entry ,当然你可以按照你的需要选择显示的类型。

Sort项下选择 Node: Created Time 按照降序排列。

最后让我们来看 argument 项,这个argument实际上提供了按月归档的列表,是高一层的视图,这里选择 Node: Posted Month + Year ,然后 summary, sorted descending,标题“按月归档”。搞定。简单的说,这个 argument 帮助生成了子页面的链接,非常的方便。

按月归档的页面可以在 yoursite.com/archive 下访问,而相应的区块需要在区块管理中启用。你可以适当的更改 CSS 来美化这个列表。

下面的是导出的 views 的代码,可以直接导入 views 管理中使用和研究。

 $view = new stdClass();
  $view->name = 'Archive';
  $view->description = 'Monthly Archive';
  $view->access = array (
  0 => '1',
  1 => '2',
);
  $view->view_args_php = '';
  $view->page = TRUE;
  $view->page_title = '按月归档';
  $view->page_header = '';
  $view->page_header_format = '4';
  $view->page_footer = '';
  $view->page_footer_format = '4';
  $view->page_empty = '';
  $view->page_empty_format = '4';
  $view->page_type = 'teaser';
  $view->url = 'archive';
  $view->use_pager = TRUE;
  $view->nodes_per_page = '50';
  $view->block = TRUE;
  $view->block_title = 'Blog 归档';
  $view->block_header = '';
  $view->block_header_format = '4';
  $view->block_footer = '';
  $view->block_footer_format = '4';
  $view->block_empty = '';
  $view->block_empty_format = '4';
  $view->block_type = 'list';
  $view->nodes_per_block = '5';
  $view->block_more = TRUE;
  $view->block_use_page_header = FALSE;
  $view->block_use_page_footer = FALSE;
  $view->block_use_page_empty = FALSE;
  $view->sort = array (
    array (
      'tablename' => 'node',
      'field' => 'created',
      'sortorder' => 'DESC',
      'options' => 'normal',
    ),
  );
  $view->argument = array (
    array (
      'type' => 'monthyear',
      'argdefault' => '5',
      'title' => '按月归档',
      'options' => '',
      'wildcard' => '',
      'wildcard_substitution' => '',
    ),
  );
  $view->field = array (
    array (
      'tablename' => 'node',
      'field' => 'title',
      'label' => '',
      'handler' => 'views_handler_field_nodelink',
      'options' => 'link',
    ),
  );
  $view->filter = array (
    array (
      'tablename' => 'node',
      'field' => 'status',
      'operator' => '=',
      'options' => '',
      'value' => '1',
    ),
    array (
      'tablename' => 'node',
      'field' => 'type',
      'operator' => 'OR',
      'options' => '',
      'value' => array (
  0 => 'blog',
),
    ),
  );
  $view->exposed_filter = array (
  );
  $view->requires = array(node);
  $views[$view->name] = $view;

Blog分类: 

周王陵·凌波路·富贵花

老妈又买了一处房子,在市郊的一处森林公园,离洛河不远,当然,这个“郊”恐怕也只是个时间概念了,按照现在城市发展的速度,两三年的光景,估计又成了市区。那里不仅是一处很大森林,还有四座高大的土山,据说是东周的四座王陵,风水好得很(呵呵,周天子还要阴阳家们看风水?),查了《水经注》,有这么一段:

洛水又东,枝渎左出焉。东出关,绝惠水,又径清女冢南,冢在北山上。《耆旧传》云:斯女清贞秀古,迹表来今矣。枝渎又东径周山,上有周灵王冢。《皇览》曰:周灵王葬于河南城西南周山上,盖以王生而神,效谥曰灵。其冢,人祠之不绝。又东北径柏亭南,《皇览》曰周山在柏亭西北,谓斯亭也。又东北径三王陵东北出,三王,或言周景王、悼王、定王也。魏司徒公崔浩注《西征赋》云:定当为敬,子朝作难,西周政弱人荒,悼、敬二王,与景王俱葬于此,故世以三王名陵。《帝王世纪》曰:景王葬于翟泉,今洛阳太仓中大冢是也。而复传言在此,所未详矣。又悼、敬二王,稽诸史传,复无葬处。今陵东有石碑,录赧王以上世王名号,考之碑记,周墓明矣

《水经注》说的应该就是这里,不过时间久了,成了一笔糊涂帐,到底是不是周灵王、周景王、周悼王和周敬王的陵墓也已经不可考。以前看过一个考古报道,说这四座土山,并非自然形成,而是人力所为,其下确有东周贵族墓葬,但是没有挖掘所以不知是否是王陵。不管怎样,这一切到了售楼小姐的嘴里,都变成了天花乱坠,她一口咬定这四座土山下埋了姜子牙、周武王、哪吒和托塔李天王:)呵呵,我倒是希望下面埋得是妲己。

对这片地方不是很熟悉,虽然从一生下来就在这座城市直到上大学,但是活动的范围仅限于自行车可以达到的区域,至多加上101路电车。Google 现在提供了中文地图,于是刚才去查询,找到了周山森林公园,离洛河也不远,旁边有一条路,叫做凌波路,肯定是和曹子建的洛神有关了,再不远处有一条芳泽路,怪怪的,一直看下去,然后是一条合欢路,呵呵,这些名字是怎么起的?:)

现在正是牡丹花开的时节,小时候写作文,没少写牡丹,刘禹锡等人的几句不知名的诗也被背得烂熟。想起了很早以前的一处房子,算是工厂里分配的房子,那时才刚有商品房的概念,大家一起评分排队,排名靠前的有优先购买的权限。房子后面是一座土山,没有什么传说,也没有什么故事,名字也很土,叫做南山,山上开满了牡丹。(现在写到这里,倒是想起了一首强加给河南的民歌《编花篮》:“编,编,编花篮,编个花篮上南山,南山开满红牡丹”,不过和这座南山应该没有关系,鬼知道《编花篮》是哪个地方的民歌^_^)。那处房子现在还留着,前几天老妈和小外甥女女到那里玩,拍了一些照片,牡丹还是一样的国色天香。呵呵,好久没有看过牡丹了,去年一记,今年又是一记。

Free Tags: 
Blog分类: 

Views 模块教程(五):标签实例

继续我们解剖 tracker 视图的教程。我们知道 Tracker 模块提供的 trakcer 视图,除了能显示所有的最新文章外,还能显示已登录用户的所有文章,这两项内容在 tracker 页面下的两个标签(Tab)中显示。 其实,views 模块可以方便帮助我们制作标签。首先我们创建“所有最新文章”标签下的视图。这个与我们在上两个教程中讨论的 trakcer 视图的设置基本相同,但是需要做一个小的更改,首先把 url 改为 tracker/all ;同时,按照习惯,把这个 views 的名称命名为 tracker_all。然后在 menu 项下勾选: provide menu; provide menu as tab; make default menu tab。这是在告诉 views 模块,这个视图提供菜单,菜单输出为标签,把这个标签当作默认显示的标签。

然后我们需要创建 “我的文章”这个标签,首先 url 设定为 tracker/mine (这个其实随意,你把它设定为 tracker/mypost 也可以),名称命名为 tracker_mine ,同样勾选 provide menu; provide menu as tab,但是不要勾选 make default tab,因为只能有一个默认的显示。此外,如果想控制两个标签的先后顺序,可以通过 tab weight 来设定。Tab title 填写为 “My Posts”。因为这个视图是只显示现在登入的这个用户的,所以我们要过滤掉其它的作者的文章,这就需要设定 filter 了,在 filter 那里新添加一个 Node: Author is Current User 把它设定为  "Is Equal to " "currently logged in user" 即可。然后保存。工作完成。

现在通过 yoursite.com/tracker 来访问你的视图,你就可以看到两个标签页面了,呵呵,很方便吧!

Blog分类: 

蛋花的靓照

<

p>

好久没有贴蛋花的 pp,蛋花又俊了不少。 去了加州以后,蛋花跟着我过着饥一顿饱一顿的日子,不过这显然为她瘦身提供了很大的帮助,看现在多俊俏的瓜子脸啊:)

还有这张躲在玩具里的 ,飞入芦花都不见:)

Free Tags: 
Blog分类: 

Views 模块教程 (四):解剖 (2)

Field 项是 views 模块的最终要部分,直接控制着输出视图的显示方式。一个典型的 tracker 页面由以下部分组成:

页面类型 标题 作者 回复数目 最新回复时间

可以参看 Drupal China 的 tracker 范例。所以,在 field 项里,我们需要做的就是按照需求选取字段 (field)。第一个要选取的就是 页面类型。在 Add Field 菜单中找到 Node:Type 点击添加,Node:Type 就出现在 field 项下了,然后我们要做一些设置, Label 就是这一项在列表中的显示名称,填入“页面类型”(英文版的 views 默认的是 Type)即可。Sortable 是设定是否按照这个字段排序,这里选择 no,如果选择 yes ,那么在 Default Sort 那里要选择默认的排序方式。

同样的,我们可以确定第二个 “标题”字段,添加 Node: Title 即可,在 Handler 设定下,我们选择 with updated mark,这样如果内容更新,标题上就会显示 “new”或者“”的标示。Option 设置为 “as link”,这样就可以生成链接了,注意,不是每个字段(field)都会有这样的 option,譬如 CCK 有一个辅助模块 Image Field,在views中并没有 as link 的选项,非常不方便,必须通过 patch 才能达到目的。

添加完所有的 field,工程就完成了大半了,每个字段的最右边都有操作的图标,你可以方便的上移或者下移以及删除这个字段。另外要注意的是,这里所有的 sortable 选项全部都是 No,这点对于网站的优化很重要,如果某个字段允许排序,那么访客在点击它的时候,事实上是对整个网站的内容进行排序,这样不仅慢而且浪费网站资源,但是如果不让字段排序,如何能做到显示“最新”文章呢?这个马上就要说到。

Field 项下是 Argument 项,在这里,不需要什么设置。

再向下是 Filter 项,它的作用是过滤掉你不想显示的内容,譬如这里,我们只希望发布的内容显示,所以我们添加 Node:Published 在 Operator 中选择 euqals (等于),value 中选择 yes。在你设计的任何试图中,通常都要添加这个 filter ,不然没有发表的内容也会被显示出来。注意,在filter 的右端还有一个 expose 选项,如果选择这个,那么这个 filter 就会变成 exposed filter ,也就是这个 filter 是“暴露”给访客的,访客可以使用这个filter 来过滤内容。

Filters 项下面就是 exposed filters 项,这里,你可以定义任何你向让访客使用的过滤器。

最后一项是 Sort Criteria,也就是排序标准,在这里我们可以设置默认的排序方式(这里设置排序的好处就是可以不把某个字段的属性设置为可排序,正如上文所述)。添加 “Comment: Last Comment Date”,order 设置为降序,option设置为 normal 即可,其他的option规定了时间选择的最小单位。

OK,到这里,整个 tracker 部分就讲完了,点击 mysite.com/tracker 是不是出现了最新文章的列表?呵呵,不过仔细一看,发现和tracker模块提供的tracker界面相比还了少些什么,对了,就是“所有最新文章”和“我的最新文章”这两个标签。我们现在用 views 做出的 tracker 只有所有的最新文章。如何在同一个页面添加不同的标签呢?下次再说:)

Blog分类: 

族谱的八卦

<

p>

看到族谱讨论的这么热烈,贫两句族谱。前两天有人在民族版说李自成是党项人,虽没有具体说理由,但是证据不外乎《明史·李自成传》上李自成把李继迁认为祖宗,其实,这就好比南北朝时的候景把自己的祖先认到东汉三公候霸那里去一样,攀附名人而已。不仅做了皇帝的如此,自家修族谱的也是如此,所以龚自珍说,明朝的文士修家谱,动辄就平白的追溯八十代,并且一定要称汉郡,姓李的一定要追溯到陇西(呵呵,代隋而立的李唐还要攀附陇西,一般人家自然是趋之若鹜了),姓陈一定要追溯到颖川等等。各个姓氏都或多或少的有这个问题,比较小的姓氏噪音要小些,但是像“张、王、李、赵”这样的姓氏,由于来源复杂,人丁兴旺,追祖溯源,难免会有附会牵强。

<

p>譬如,宋代的三槐王氏,其先祖很难追溯到琅琊王氏去。《宋史·王祜传》只记载他是大名莘人(现在的山东莘县,另外他的名字应该为“祜”而非“祐”),范仲淹给王祜的后人王质撰写墓志铭,也只是说“其先太原人”,追溯不到琅琊去,如果要强认,也只能认到太原王氏。后来虽然有“三槐王氏”出自“琅琊王氏”的谱系,所著人名也于史有载,但是他们之间是否有关系就不可知了,并且参照宋朝当时人纪录,也多有不合,所以很难说三槐王氏就是王羲之的后人,更何况三槐王氏本身也没有去攀附名族呢?

<

p>这个倒是让人想起来宋人《梦溪笔谈》里的一则故事:

狄青為樞密使,有狄梁公之後,持梁公畫像及告身十余通,詣青獻之,以謂青之遠祖。青謝之日:「上時遭際,安敢自比梁公?」厚有所贈而還。比之郭崇韜哭子儀之墓,青所得多矣。

<

p>呵呵,宋人还是比较有风节的,再比如宋朝的“临川王氏”,王安石追溯先人时,也不过称:“王氏,其先出太原,今为抚州临川人,不知其所以徙。”也没有去攀附名族。而他的朋友姻亲曾巩在为临川王氏写的一则墓志铭中,也只是仅仅提到,王氏出自太原而已,不像魏晋南北朝时的墓志铭,非要向汉代的三公以及魏晋的世家大族上靠。当然这个可能是门阀政治衰落的结果吧。

<

p>到了明代,向上追溯名族的风气大盛,王世贞把自己的家世追溯到东晋王导,王阳明的家世也到王导,呵呵,真真假假就不可知了。

不过有趣的是没有人把自己的家世往王莽那里攀。王莽自称出自妫姓(而非太子晋的姬姓),是齐国王族的后代,并且直接追溯到了黄帝,参见《汉书·元后传》,其实王莽一支也有忠烈的后人,在东汉仍被封侯,但是后世好像很少有人自称祖上是王莽的。

呵呵,随便八卦一下,并没有不敬别人祖先的意思。其实看俺们自己家的族谱,也有生疑的地方,第一次读家谱,从黄帝起,到夏帝禹,再到夏帝少康,到少康封次子烈曲于鄫,这一段不管真假,《史记》上有记载,但是自先祖烈曲封于鄫之后,到申侯、鄫伯联合犬戎灭西周这之间的千年历史居然都也都写得滴水不漏,不禁让人疑窦丛生了。从这以后又很自然的接上《春秋》的信史了,虽然很衰,某个先人因为开会迟到,被宋襄公杀了当人牲祭神,但是一直都还算于史可考,纳闷的是从夏代到西周这么长的谱系是哪个祖宗写的:)

Blog分类: