《趣味逻辑》:发现久违了的老故事

这是一本同事推荐我看的书,推荐语就两个字“好看”。然后过了几个月(或者一年)我想起了这件事,于是在超星上把它挖了出来。看了几张,似乎是不错,正好还可以补补“逻辑”上的谈资,于是兴起就开始了录入电子书的工作。

完成度过半的时候,个人的“逻辑性”不见得有什么长进,却意外的在这本书里发现了许多似曾相识的老故事。这些故事原本在脑子里的印象已经相当模糊,几乎是支离破碎的状态,但是一经勾引,却全浮了出来。比如某户人家挖一口井省了一个人力,却被讹传成挖出了一个人;某人不学无术,写个“万”字用了好几天;石狮子掉落河中N年,结果被河水冲到了上游;关于干净人和脏人谁会去洗澡的诡辩……

关于“逻辑”,看完这书后我反倒有些厌恶,书的后面几乎是硬挺着完成的。因为逻辑这东西在我看来确实是没什么意思的东西,虽然作者写这本书的目的就是想证明逻辑研究的重要。那些总结的逻辑规律几乎不会有什么很大的实用价值。如果脑子好的人,不总结也能运用;脑子迟钝点的,即使知道这些条条框框,也不能去灵活运用。这就好象画画、开车、打球、游泳一样,理论是一回事,实践又是另一回事情。所以这样的书,应该不会对加强逻辑性思考起到什么促进作用,反倒可能有所顾忌而受到不好的印象,毕竟我们的生活并不是那么符合逻辑。

这是一本好故事书(虽然因为“参考书”多,而使得故事风格多得有点别扭),却与我期望的效果无关。

《西游记漫话》:发现有深度的《西游记》

大概是小学三年级的时候,我有了一张西湖区图书馆的“借书证”。那是学校组织的“团办”,每个班的名额很少,大家都不知道书是怎么个借法,猜想大概是可以把图书馆的小人书借回家看吧。三年级的学生,对“图书”的理解还仅仅限于“有图的小人书”。

第一次去借书大概是三个同学一起去的。看见大人们都在翻藏书目录,抄小纸条,我们这些半大的孩子只有看着那些老高的书签柜发愣。外借部的小窗口里坐着个戴眼镜的老头,他很不屑于跟我们罗嗦什么外借办法,只指着旁边的一米来宽的玻璃橱柜,让我们把要看的书用手指头捅进去。用这个原始的办法,我开始了看“大书”的生涯。《365夜故事》似乎是我看的第一本大书,因为书架上能把书名全念出来的只有这本了。有一天,我发现了《西游记》。我看过的很多少儿读物中,都会不时有孙悟空搀和在故事里,甚至连讲数学题的书中都会有他。看着这本浅绿色的《西游记》的厚度,估计所有的孙悟空故事都在里面了吧?于是我伸出了神圣的食指,把它桶了出来。

印象里读这种书应该有种神圣感,好象学问有多大似的。现在回想起来,我应该对那些明代的白话文感到困惑才对,当年怎么能坚持看下来呢?我也记不清楚自己究竟是把书真的看完了,还是把书翻完了。反正就只得出了个和图画书大致的印象:打打杀杀加七十二变。以后知道《西游记》属于四大名著,我想那也是因为孙悟空在孩子中广有人缘。

前段时间用超星乱翻书,偶然看到了一本《西游记漫话》。才看了几段就把胃口调起来了,于是马上在当当买了一本。

这是一本解读《西游记》的书。书的作者林赓在文革中看了十年的《西游记》,对这本书的理解很有深度。书的开头首先颠覆了以往“大闹天宫是反抗封建压迫”的观点,把这本名著从阶级斗争的框架内解救了出来。然后对西游记中人物的原形做了一番探讨,其中对菩提祖师形象来源于江湖术士,孙悟空形象来源于神偷大侠,猪八戒喜剧形象来源于市民对农民的戏谑都提出了文字证据。最让人跌眼镜的是作者解读出《西游记》是一本反宗教书籍。这与以往认为的佛教感化孙悟空,救苦救难普渡众生的观点大相径庭。所引述的原文经查证,确实存在于原著中。比如书的末尾,师徒四人因为取了无字之经返回雷音寺找如来讨说法,佛祖对手下的索贿行径进行了袒护,并且说出来的话也是一副商人嘴脸,这段描述就很能说明问题:

佛祖笑道:“你且休嚷,他两个问你要人事之情,我已知矣。但只是经不可轻传,亦不可以空取,向时众比丘圣僧下山,曾将此经在舍卫国赵长者家与他诵了一遍,保他家生者安全,亡者超脱,只讨得他三斗三升米粒黄金回来,我还说他们忒卖贱了,教后代儿孙没钱使用。你如今空手来取,是以传了白本。白本者,乃无字真经,倒也是好的。因你那东土众生,愚迷不悟,只可以此传之耳。”即叫:“阿傩、伽叶,快将有字的真经,每部中各检几卷与他,来此报数。”

类似的神仙还包括文殊菩萨:

菩萨道:“你不知道;当初这乌鸡国王,好善斋僧,佛差我来度他归西,早证金身罗汉。因是不可原身相见,变做一种凡僧,问他化些斋供。被吾几句言语相难,他不识我是个好人,把我一条绳捆了,送在那御水河中,浸了我三日三夜。多亏六甲金身救我归西,奏与如来,如来将此怪令到此处推他下井,浸他三年,以报吾三日水灾之恨。一饮一啄,莫非前定。今得汝等来此,成了功绩。”行者道:“你虽报了什么一饮一啄的私仇,但那怪物不知害了多少人也。”菩萨道:“也不曾害人,自他到后,这三年间,风调雨顺,国泰民安,何害人之有?”行者道:“固然如此,但只三宫娘娘,与他同眠同起,点污了他的身体,坏了多少纲常伦理,还叫做不曾害人?”菩萨道:“点污他不得,他是个扇了的狮子。”八戒闻言,走近前,就摸了一把,笑道:“这妖精真个是糟鼻子不吃酒——枉担其名了!”

菩萨吃了乌鸡国王的亏,于是派自己的亲信狮子怪把国王推到井里。那猪八戒为了验证狮子是否是个太监,还亲手去摸一把……这些描写在小人书和少儿版《西游记》中是绝对看不到的。

这吴承恩对佛家的老大不尊重,对道家的描写也好不到哪去,其中一段孙悟空为救乌鸡国王,去向太上老君求丹药的一段,就把个小气的太上老君描写得淋漓尽致:

“我想着无处回生,特来参谒,万望道祖垂怜,把九转还魂丹借得一千丸儿,与我老孙搭救他也。”老君道:“这猴子胡说!什么一千丸,二千丸!当饭吃哩!是那里土块勘的,这等容易?咄!快去,没有!”行者笑道:“百十丸儿也罢。”老君道:“也没有。”行者道:“十来丸也罢。”老君怒道:“这泼猴却也缠帐!没有,没有!出去,出去!”行者笑道:“真个没有,我问别处去救罢。”老君喝道:“去,去,去!”这大圣拽转步,往前就走。老君忽的寻思道:“这猴子惫懒哩,说去就去,只怕溜进来就偷。”即命仙童叫回来道:“你这猴子,手脚不稳,我把这还魂丹送你一丸罢。”行者道:“老官儿,既然晓得老孙的手段,快把金丹拿出来,与我四六分分,还是你的造化哩。不然,就送你个皮笊篱,一捞个罄尽。”那老祖取过葫芦来,倒吊过底子,倾出一粒金丹,递与行者道:“止有此了,拿去,拿去!送你这一粒,医活那皇帝,只算你的功果罢。”行者接了道:“且休忙,等我尝尝看,只怕是假的,莫被他哄了。”扑的往口里一丢,慌得那老祖上前扯住,一把揪着顶瓜皮,擅着拳头骂道:“这泼猴若要咽下去,就直打杀了!”行者笑道:“嘴脸!小家子样!那个吃你的哩!能值几个钱?虚多实少的,在这里不是?”原来那猴子颏下有嗉袋儿,他把那金丹噙在嗉袋里,被老祖捻着道:“去罢,去罢!再休来此缠绕!”这大圣才谢了老祖,出离了兜率天宫。

这些精彩的描写,怎么我以前就没有看过?猪八戒经常念出的顺口溜,搞笑到家,还文绉绉的,拿来做签名确实不错,比如:“粗柳簸箕细柳斗,世上谁见男儿丑。”

书中对《西游记》受当时戏曲发展影响的状况也做了研究。在西游故事早期,师徒是不止四人,没有猪八戒,孙悟空这个猴子精也是个人形,并非猴子模样。后来因为戏曲表演的需要才精简为四人,并且引入了猪八戒这个丑角,他与孙悟空的关系就是相声中捧哏和逗哏的关系。细想一下还确实如此。

这本小书还对《西游记》的历史地位,反映出何种文化思潮做出了探讨。真是不看不知道,《西游记》比以前更奇妙了。看完《西游记漫话》,对网上的电子书搜了一搜,发现有不少问题,排版和用字都不是十分严谨,哪天重读一下,做个校对版本。

作者:林庚 著
出版社:北京出版社
ISBN:7200050520
印次:1
纸张:胶版纸 出版日期:2004-1-1
字数:103000
版次:1
目录:
关于“大闹天宫”的故事情节
《西游记》漫话
从菩提祖师谈起
天上人间
江湖风波
取经记与闹天宫
喜剧角色
动物王国
童话的天真世界
结语
后记

Dreamwerver 8中特殊的正则表达式写法

“正则表达式”,看这名字我就想起那个专门演傻瓜“肥猫”的郑则仕。

这两天频繁与“正则表达式”打交道,先是网站后台中的采集规则,然后是EditPlus中的回车替换,再就是今天在Dreamwerver中对特定文本的查找和替换。开始还以为就是简单如DOS命令中“*”和“?”的用法,没想到名堂还很多,比如换行要写成“\n”,还有一些保留字的避让法则。更深入的应用还需要借助联机手册、配合各种语言中的差别应用……,简单一点行不行?我只是要批量查找一些有特征的代码而已。起初,按照帮助中的解释,一切似乎还算顺利,但是碰到多行的代码就出了问题,无论我用什么标签,总是不能搜到超过一行的内容。比如:

<html>
<!– zhujie –>

我用“<–.*–>”可以搜索出第二行,“\n<–.*–>”可以把第一行的回车和第二行选中,但是在“\n”前无论加什么,这个表达式都会失效。起初还怀疑是不是“>”括号的问题,但是换了别的字符全都没用。不经意间看到了Dreamwerver关于正则表达式帮助的最后一行,尝试用“SHIFT+ENTER”替代“\n”……哈!竟然可以用这么直观省事的办法。看来这个规则是专门考虑到了网页制作实际而进行优化。

.*
<!– .* –>

表示第一行随便是什么,第二行的注释内容为随意字符。如果有多行可以为任意字符的代码,则每行必须要有一个“.*”占位置。而且碰到象“{}”这样的特殊字符,用“.*”讨巧通过也是个办法。

虽然这种摸索出来的方法很不严谨,但是能解决问题是最重要的,傻就傻点吧。

同一局域网内Serv-U序列号冲突的解决

如果在一个局域网内有两台Serv-U搭建的FTP服务器,并且注册码都相同,那就惨了。Serv-U会停止服务,并且报告有哪些机器使用了相同的用户许可。

以前闹过类似的事件,不过后来大家换了新的许可协议,不再冲突。最近一家做网上婚礼直播服务的网站又和我的机器发生了冲突。要是这样没完没了的有新网站和我冲突,不是要被烦S?一定有解决办法的。

先是考虑防火墙,结果IP设置中能禁止的都禁止了,HOST文件也修改了以避免访问冲突的机器地址(目前还不清楚HOST记录的修改是否对IP也同样有效)Serv-U还是能找出冲突的局域网地址。难道是另外的协议?查看网络属性,就只有“MICROSOFT网络客户端”和“TCP/IP”两个协议是有效的,狐疑地把“MICROSOFT网络客户端”关掉,奇迹出现了,Serv-U没有找到邻居,他又恢复了正常。这才想起那个错误报告上的冲突列表,上面列出来的是“机器名”而非“IP地址”,而“机器名”显然不是TCP/IP协议的身份标志。

对基于TCP/IP的网站服务器来说,关闭“MICROSOFT网络客户端”并不会对IP服务的运做产生什么影响,甚至由于与局域网内其他计算机分离,安全性变得更高了。

《网站重构》读书笔记11(完结):视野开阔

终于把这本书看完了。在第11章之后我有点失望,并没有什么新的实用的内容出现。

“第11章 使用浏览器 第一部分DOCTYPE转换和标准模式中”中谈到了浏览器触发标准模式的几个相关问题,以及个别浏览器向IE看齐的“近乎标准”是怎么回事。反正就是要手工写出完整URL的DTD,以免软件的问题导致发生错误。

“第12章 使用浏览器 第二部分:盒模型、BUG和工作区”中提到“W3C组织建议网页上的所有对象都放在一个盒中”,设计师通过控制盒的属性来进行设计。这本来是一个好的想法,但是不幸的是对“盒”的理解,浏览器们存在误差,导致了盒模型在很多情况下是失效的,除非边距、边界等空间参数都为“0”。文章中提到了“盒模型黑客程序”,“Hack”的定义很广泛,在这里是指利用IE5.X对CSS的解析程序的BUG完成兼容CSS的编写。另外IE还存在“空格BUG”,解决的方法是把HTML标记删减成无回车无空格的一堆代码。这个我是在过去的工作中自行解决了的问题。这样处理后的代码很难看,但是谁叫IE他老人家品味特殊呢。

“第13章 使用浏览器 第三部分:排版”主要讲的是字体问题。按照作者的观点,PX的尺寸设定在浏览器没有放缩功能的前提下是死板而且可能会造成使用问题的。而EM、磅值、字号关键字等方法都存在问题,那不是废话,干脆还是PX好了。然后用DOM解决字号放缩问题。

“第14章 可访问性基础”介绍了可访问性问题的相关背景和法律条款,以及一些对可访问性的错误理解。最耸人听闻的观点是作者认为闪烁的网页会引发癫痫发作,危害生命,所以这些问题在设计的时候也需要考虑到。我的天,外国佬真……真发达,可以去关注这样的小概率事件。但是这个问题确实存在,因为我在初中的时候曾经有一个患有癫痫的同学,不只一次在课堂上发作,样子实在太恐怖了。如果医学上闪烁的页面会导致癫痫发作,那么作为一个有良知的设计者就应该避免去做可能造成访问者伤害的事情。其实我认为提高可访问性最大的优点还是在于“可以加深你对‘设计’的理解”、“能提高你的开发技术、开阔视野”、“提高你作为专业网络设计师的价值,使你更具竞争力”。

“第15章 使用基于DOM的脚本语言”给我描绘了一个很美好的画卷。在不刷新页面的前提下,基于DOM的脚本可以制造类似应用程序的使用体验,比如切换CSS样式表,排序表格数据等等。但是除了这些,没有更进一步的消息是我可以看明白的。

“第16章 CSS重新设计”是对后面所接触信息的一个总结,并把他应用在了作者为完成的示例中。在这一段里我惊奇的发现CSS竟然还有“p+p”、“img+h3”这样的选择器,真是学无止境啊。最后几页的代码,我是带着瞌睡扫描完的。

结尾,作者把所知的浏览器全都拿出来晒了晒,评点了一番,基本上没什么让人感兴趣的东西,因为没有一个浏览器是完美的,即使接近完美,但是如果用的人少,非主流也是个问题。

至此,《网站重构》全部看完。

这不是一本告诉你如何做出符合WEB标准网页的教材,他是一本推广概念的书。除了说服之外,其中包含了很多花边消息,让读者对WEB设计的局面有了个相对深入的了解。如果需要更详尽的指导信息,就要借助于我桌上正放着的《CSS权威指南》和《HTML与XHTML权威指南》了。

概念已经形成,不管我是否有意去彻底执行它,WEB标准一定会影响我今后看待WEB设计的角度和高度。有两句话是我看这本书的最大收获,他的意义不仅仅限于WEB标准本身:

“不要停滞不前,不要拒绝接受全部观点。”“如果不是现在,那会是什么时候呢?如果不是你,那会是谁呢?”

《网站重构》读书笔记10:新知识密集出现

“第8章 XHTML的示例:混合布局”、“第9章 CSS入门”、“第10章 CSS应用:混合布局”,三个章节联合起来就是一个标准入门级网页设计过程的示范。在这个示范的进程中,没有一般教学书籍的那种“先点击XX,然后点XX项目”的傻瓜填鸭式教学,而是一种把握大思路,舍弃小操作的介绍方式。初学者到第8章估计就要昏头了,所以这本书不是写给初学者的启蒙书,而是一本面向老式有多年经验的网页制作者,鼓动他们向标准化前进的宣传手册。

全书到了这里开始闪耀亮点,跟随例子的展开,一个个模糊的概念逐渐被清晰,我也开始接触到一些以前没想过的领域。

首先是用样式表代替JavaScript实现翻转效果。我以前曾见过用CSS编写的很漂亮的翻转菜单,那时候觉得这个利用CSS特点的思路简直太绝了,非常钦佩作者的创意,没想到2-3年前的书中就已经介绍了这种方法,只是因为我老土不知道而已。

本以为即使是制作过渡模式的XHTML,以往那种用TABLE规划版面的方式也是错误的,没想到这个例子的一开始就谈“分割表格”,所不同的是同样是分割,符合标准的做法是放弃表现层标记,加入ID和注释。

然后就是“忽略导航”,这个问题我从来没有思考过。谁在设计规划站点的时候会考虑到盲人怎么通过辅助手段阅读这个网页呢?就以街道两旁上新铺设的彩色道板为例子,那条特殊的盲道,谁又曾真正的在乎他呢?“无障碍方式”,这种对特殊人群的关怀在总体发展程度不高的社会大背景下显得那么的尴尬。作者利用不同浏览器对CSS的理解差别,设计了这个“忽略导航”的功能,目的就是为了方便那些行动障碍或者特殊应用的状态下,为使用者提供更多的方便。其中“ACCESSKEY”的存在是我从来没有关注过的,这确实是一个很炫的使用方式。书上说IE里有一个开启“ACCESSKEY”显示的设置,我找遍了也没有找到,天晓得是怎么一回事,难道SP2的升级把这个功能扼杀了?

标准化中一个最大的麻烦就是适度适量的使用标记,前面提到了DIV和CLASS被滥用的情况,现在我们知道了还存在ID被滥用的问题。作者的意见是,在服务器端包含的情况下,由于基础代码修改容易,所以就没必要“深谋远虑”地写上一大堆暂时用不上的ID。但如果是全靠手工维护的页面集,为了今后维护的考虑还是前瞻性的加入一些可能会用到的标记(其实我觉得借助Dreamweaver的“批量替换”,改代码也比较容易)。至于是不是因为设计思路问题导致ID使用过渡?那就全看设计水平如何了。

作者作为标准组织的发起人之一,在多个段落使用了宽松、甚至是为标准追随者所不齿的“低级写法”。作者对此多次强调:“WEB标准”并非一成不变的法律条款,而是充满选择和判断的道路。一顿饭吃不出一个胖子,所有将标准引入工作的努力,即使是妥协折中的方法都是值得尝试的。

“CSS入门”是让我最感到高兴的章节,在“CSS权威指南”中没有解决的“选择器”概念问题,终于在本书中明确了方向。当年第一次从“动网新闻”中接触到含有选择器标记的CSS文件时,我感觉到一阵头晕:太复杂了,看都看不懂,作用机制都摸不着边……。现在好了,对一些概念明确后,心里塌实了很多。这些全拜书中的例子和作者的描述所赐。

在书的175页倒数第7行提到了0值后要跟百分比符号的问题。看到这的时候我产生了一个疑问:RGB数值中的数字和百分比是否可以混用呢?比如p {color:rgb(255,80%,0);}。我将这段代码放进了Dreamweaver中,在编辑环境下,Draemwerver忽略了80%这个数值,在IE中,数值和百分比可以共存,产生预料中的效果。我不明白究竟是标准错了,还是IE在容错。无论如何,“0值后加百分比符号”不是金科玉律,p {color:rgb(100%,0%,0%);}与p {color:rgb(100%,0,0);}实际应用效果是一样的。即使必须加百分比符号,也就是为了区分数值类型而已,并没有作者说的那么不可理解。

CSS的书写规范中忽略空格,并且不区分大小写,但是类别和名称是有可能区分大小写的。这与XHTML的规则形成了反差,XHTML是全文区分大小写的,但是属性值有可能不区分。为了可再编辑性考虑,所有的属性和属性值都应该以分号结尾。

老外对字体情有独衷,总是在书中不厌其烦地讲述字体选择的规则。对于中文用户来说,除了宋体,没有谁可以在12 PX的极限下保持良好表现,所以字体选择大概是CSS中使用最少的方法了。没有选择会是最好的选择。

选择器我认为是CSS最重要也最难的部分。“#”号、“.”号、HTML元素、嵌套的HTML元素简直可以代替木棒将人搞晕。其实明白过来以后似乎规则很简单:“#”代表ID名称、“.”代表类别名称。选择器的书写遵循嵌套原则。比如“li strong”表示li标签包裹下的strong;“#name p”表示ID名为name中的p元素;“.red p”表示类别red包裹下的p元素,“p.red”则表示p元素下的名字为red的类别。如果一此要声明多个选择器,可以用“,”号分开。当年我曾觉得CSS太天真,实际应用中缺乏可操作性,但是自从知道了选择器有这么多种玩法后,那些顾虑全都消失了。
样式表的使用可以有外联(LINK)、嵌入(@IMPORT)和内联(STYLE)三种方式。由于嵌入式不被许多非主流浏览器所兼容,所以被用来解决样式表兼容性问题。

在CSS文件中使用相对连接是可能出问题的,因为老浏览器会混淆CSS文件里的相对链接。所以最好使用绝对路径。

在CSS的描述中涉及到“四周”的问题可以使用缩写。缩写的规则是:当上下和左右的值相等时,只写代表上下和代表左右的两个数值;如果四个数值分开写,就按照上、右、下、左的顺时针顺序。

声明元素是“块”还是“内联”是很重要的,至少在做菜单的时候。“块”有自己固定的领地,他更象一个按钮;而“内联”通常会发生一些动态变化的问题。

伪类属性是使用非常广泛的属性。以往我认为只要定义四个伪类就可以了,没想到为了照顾某些有怪癖的浏览器,伪类的排序还要按照“LVHA”规则,即连接、已访问的连接、鼠标悬停、激活来排序。否则就可能被忽略一部分样式。

在已知的情况下,IE6会把所有的元素默认为居中对齐(当然,是在有过渡的DTD声明的情况下)。为了解决这个问题,需要特别地声明居左对齐。

在CSS中,使用“/*”和“*/”来框选出注释区。参考网站经验来看,注释区是可以使用中文的。

最后,作者例举了一个他也想不通为什么的菜单做法。让人觉得有些泄气:在技术的领域里,永远有未知的东西。有时候需要换换思路,或者妥协,而这是实际工作中最难做到的。