勇气

不知“为人不做亏心事,不怕半夜鬼敲门”出自于什么年代,那时候有正气应该就有勇气,所以肯定不是现在了。

现在做个好人太难了,行事总是小心翼翼,一则怕被别人看在眼里横生误解;二则怕好事没做到位反成坏事。总之,唯有委曲求全及唯唯诺诺,哪里能谈得上勇气!

反观做坏事的,事越坏,勇气却是越大,胆量亦是愈大。逃犯逃腻了可以挺身而出,或打假、或征婚、或当演员。窃财、偷人、收脏的也是都油光满面、西装革履并大言不惭地不断叫嚷着冠冕堂皇的废话。

好在无论什么事情总有个例外,这才给人一点希望:

1,中国的农民兄弟最有勇气,庆幸我也出身于农民,咱也是种过地的,只是现在已是“五谷”不分了。我一直纳闷,为什么中国最成功最彻底的改革都是从最下层开始的,这样的改革成本太高了,因为所有的东西都要重新来过。为什么欧洲的改革却可以只发生在上层?难道即便是中国的精英层也被鲁讯笔下的国人劣根性所禁锢?

2,1921年7月23日上海法租界望志路106号里的那批人也是有勇气的。可在穿越剧充斥着屏幕的当下,又涌出有勇气的一批人:他们决定穿越到21年8月的嘉兴南湖(毕竟上海法租界不方便),要么招一批小弟自己动手;要么就直奔警署去告密。

_snwprintf_s的潜规则

在程序中为了构造文件全路径时,使用了函数_snwprintf_s。结果在释放buffer时运行时库(runtime library)报错,提示buffer已被破坏了。再次审视代码,看不出有什么毛病,只得动手调试,然后便定位问题出在了_snwprintf_s的调用上。

_snwprintf_s函数的原型定义如下:

int _snwprintf_s( wchar_t *buffer, size_t sizeOfBuffer, size_t count, const wchar_t *format [, argument] ... );

在细致地阅读了MSDN中关于它的说明后才发现问题原因:

此函数第二个参数(size_t sizeOfBuffer)是以word (双字节)为单位的,而不是byte。问题找到,更改传入参数后,buffer corruption的问题消失。

但是,还有个奇怪的问题,也许你已注意到,如果第二个参数是以word为单位的,那第三个参数呢?不应该也是以word为单位吗?

可惜,不是。第三个参数依然还是以byte为单位,否则你的程序又不能工作了,只是这次错误将会更加地隐蔽。

你只能感叹:同样都是count,咋相差这么大呢!

这里再说说_XXX_printf_X等一系列相关的函数,如果你看了MSDN中关于snprintf的说明,你这定会惊讶于它众多的兄弟姐妹,个个相像,可绝对又各不相同:如_snprintf, _snwprintf, _snwprintf_s, _snwprintf_s_l:

  • sprintf是ANSI C所定义的函数之一,应该是最古老的一个,当然也是最容易受缓存区溢出攻击的一个
  • _snprintf: 多了一个“n”表示是多了一个描述buffer长度的参数,如果输入字串过长将被截断,毫不留情。
  • _snwprintf: 多了个“w”表示是字串为双字节字串,如unicode
  • _snwprintf_s:又多了个”s”后缀,表示是“Security Enhancement”。为了应对缓存区溢出攻击,而对函数进行改进以对输入参数进行多项检查。更多信息见于:MSDN
  • _snwprintf_s_l: 更进一步,又多了个“l”后辍,表示此函数支持字符集指定,而不是默认使用当前字符集。
  • _snwprintf_s_l_? : 不久的将来又将怎样演化呢 ?我且拭目以待。

快餐式阅读

剩饭:

《Decision Points》: George W. Bush 搞定下半部,终于知晓9/11期间Bush都干了什么,当年他曾饱受批评,甚至电影《United 93》中也没有他总统什么事。

剩饭,且还是加生饭:

《禅是一枝花》纸版快速读了一遍,本以为很多公案都已明白,可再看时才发现真明白的还真没几个。即使是认为明白的几个中,也不好确定 倒底是在明白里,还是不在明白里呢?

零食- 化整为零:

《习惯性八卦:词语笔记(5)》黄集伟

《胡兰成的今生今世》杨海成

快餐,快餐,快餐:

快速的生活节奏早已压得你喘不过气来,哪还有时间正儿八经地搞个大餐出来?快餐,虽不算营养丰富,但好在能裹腹,还能让你吃得有滋有味!

《The Shallows: What the Internet Is Doing to Our Brains》,Nicholas Carr。这本书看起来还是挺有感觉的。IT技术革命,互联网的发展,知识的数据化,是可以让我们知道得更多,可是正因为资源或知识之捶手可行,我们所记住的多是索引或一个存储箱的序号,所以我们所知所学所得却是变得更少了。正因为有了google或baidu,人更倾向于选择忘记而不是记住,岂不知,记忆也是思考的一部分。如John Culkin所说:We shape our tools, and thereafter they shape us.

然后就连续看了几本James Patterson的书,这些书可以说是快餐中的快餐,即便说中垃圾食品系列也不算为过,可是口感不错,容易上瘾:

《Tick Tock》《1st to Die》《2nd Chance》《3rd Degree》《4th of July》

Michael Bennett系列全看完了,然后女强人Lindsay Boxer出场了……

《侦探研究》:詹宏志。繁体中文还可以忍受,但竖板的实在是看不习惯,可对于得之不易的好书,除了忍还能有什么办法?

詹宏志幽默而又不失犀利的笔锋之下是: 或瘦削高大、或矮小敦实,或犀利、或颓废的侦探们,还有他们背后所在的不同城市的街街巷巷、熙熙攘攘、黑暗角落等等等等。其背后更有不同风格、不同时代的作家们,然后就是个长长的、长长的、长长的、长长的书目单。

《The Kite Runner》,Khaled Hosseini:战乱出生死离别,战乱出人性,战乱出故事,战乱出真情,其它不做多评了。里出有个Nasruddin的小笑话,让我想起了高一时的英语课,可以说是笑声最多的阅读课:当时老师给我们订了一本全是Nasruddin笑话的阅读理解书,好像是100篇,书中所配插图也是个外形怪诞的糟老头了,英语老师说话像机关枪,讲至兴致所处还会探头探脑 ……

Windbg指令体系

Windbg,作为Windows御用的调试工具,功能异常强大,其指令亦是相当繁杂。我是从01年开始使用,至今为止所掌握的指令还是最常用的一些,如果做点稍复杂的工作,必须求助于Windbg帮助手册,查手册寻找指令或确认指令语法格式已是经常之事。

倒是被Windbg所替代的一代神器Softice,以其界面和指令的简洁、易用,曾给几代程序人留下深刻印象。我大约是从96年开始使用Softice,至01年完全转移到Windbg上来,但很多Softice的指令还是犹如历历在目,看来“先入者为王”对习惯的养成来说同样是条不二准则。

言归正传,Windbg的指令分为三种:

  • 1)Debugger commands,或 regular commands

    如 u: 反汇编指令;db: 以16进制及字节方式打印数据;t: 单步执行 …

    regular commands 一般是面向于被调试程序或目标系统的,即可以显示被调试程序相关的信息或控制目标程序的的执行等。

  • 2)Meta commands

    如 .reload: 加载符号表;.cls: 清除command窗口所显示的信息;.thread: 挂接并显示指定线线程的上下文(context) …

    meta commands 一般指控制windbg本身的一些指令,所有指令以”.”为开始,如符号表管理相关的指令。

    其实有一些指令功能上与regular command相混淆,如:

    .restart: 重启被调试机器或程序,呵呵,没有比这个对被调试对象更大的控制操作了;
    .writemem: 将指定内存区域写入文件;
    ……

    此外,还有些莫名的指令也归入这一类,如.dbgdbg指令,它会启动调试器来调试当前的调试器,够绕吧!

  • 3)Debugger extension commands

    如 !process:显示当前进程信息;!analyze: 著名的BSOD分析命令…

    这类指令属于windbg的扩展指令,所有指令均以”!”为前缀,指令的实现不在debugger程序体中,而是相关的DLL文件。windbg的扩展组件,有标准的格式,开发者可以根据需要为协助自己程序的调试定制自己的扩展组件。windbg程序包已为不同的应用环境提供了不同的扩展组件:如应用程,内核层,NDIS驱动,GDI图形类驱动……

除了Windbg的帮助手册之外,还有几本书对Windbg的使用很有帮助:

1, Dmitry Vostokov, Memory Dump Analysis Anthology, Volume 1 & 2
    结合实例介绍Windbg的使用技巧,共两本
2, Mario Hewardt & Daniel Pravat, Advanced Windows Debugging
    此书有中译本。主要还是面向Windows内核调试的。
3, 熊力,Windows用户态程序高效排错
    主要面向于用户态及.NET程序的调试。

错买、错看、错感

等书送到,才发现竟是买错了。《胡兰成的今生今世》并非胡兰成的《今生今世》,却是杨海成所写胡兰成传记。

既然买错,那就将错就错,闲时开始翻阅了起来,直至昨晚才得以翻完。总觉得,传记嘛,当以写实叙事为主,评论与感慨不必多,但作者在后者上做得太多了些。

纵使胡兰成于国于民于女人都可以叛,也不至段段落落字里行间都充斥着对他的批判,好似如果不批不判则无以证明我之道德高尚之立场与行事正派之形象。

再退一步,感慨也就感慨了,但感慨中却杂揉着女人之气:玉凤的苦,爱玲的怨,小周的恨 …… 难道是太了解,所以才如此之怨?

也许其人可废,也许其人当废,唯由历史去评说了。如果再一百年后,当小日本成为我版图中一省之地时,历史又该是怎么个写法?

从佛学院到亚青寺

五明佛学院:

佛学院可谓是我此行中最梦幻和最浪漫的一站,无论从自我状态,身心感受,当地人文,所闻所见哪方面来说,都充满着新鲜和震撼,因为你所到之处,所遇之人及所做之事都沐浴在一种祥和、平实的喜悦之中。

不同人的出现,每件事情的发生,都如冥冥中自有天意般,或给你些提示,或引导你进入下一个场景。与《The Celestine Prophecy》所描述的故事如出一辙,每件事或每个人都是带着能量和信息而来,你唯一要做的便是敞开心菲,坦然接受一切并与它们坦诚交流。当这种能量流的交换不自觉发生时,你就会处于一种饱满、自足,而又平和的状态,因为你与周围的一切都是联系着的,你的能量场与周围和谐地共处着并相互做着交换,所以你无论做什么都会有如神助般畅行无阻。

其实,你就是你所处的世界,你已经没有了边界,与周围的一切都交融在了一起。

深圳小凌和成都小陈是在成都往色达的班车上结识的,小凌此行是为了寻找姐姐而来,他查询了姐姐电脑的上网记录及手机通话后确定姐姐来了佛学院。但于几万人众中找出一个来谈何容易。可事情偏偏就是这般容易,就是这样的巧妙:二人误打误撞,进了觉姆食堂,恰好碰到了在食堂帮忙的姐姐。

第二天,纵然是在觉姆圆布小师父的带领之下,我们还是被拦在了觉姆食堂门外,被告知:觉姆食堂不让男众入内。但后面又跟来了一批人,管理食堂的觉姆只得发了慈悲心将我们一众人等全部放行。打饭期间,阿文和同行的一位藏族小觉姆开玩笑,等后来我告诉阿文说她是个小觉姆时,阿文才觉刚才的玩笑有些不妥。可是,对小觉姆来说,依她的年纪和她所在的世界,男与女,喇嘛和觉姆又会有什么分别?我在她眼里也可能只是个俗物罢了。

佛学院是年轻人的聚集地,到处都是阳光的笑脸和善意的眼神。所以,就连我这个自认没有什么佛缘的人,在这里还是感受到了佛教对众生的召唤。

我想像着约1400年前的那烂陀寺,当时佛教的绝对中心,也是集上万僧众的佛学院,应该也同样有着类似的能量场和同样上进、平和的氛围。我只是无法体会当年玄奘经过三年的长途跋涉,过秦岭,走沙漠,翻越雪山后终于到达那烂陀寺时的欣悦。但“到达”对他来说只是起点,因为学法修法取经之路依然漫长;但佛学院对我来说算是我此行的终点,到达便是结束。但即便是这个短暂的停留,也让我体会到了一种游离于世俗之外的生活体验。

经阿文指点,晚上在汉经堂听了一场索达吉上师(音)的大课,印象中讲的是曼荼罗,曾劝修行的学生每天都要念诵经文几十遍,并坚持三个月等等。其实,如果花同样的精力做其它的事情,哪有不能做成的?

学佛法念经文可以吃得这般苦,可以费这般的精力,为什么生活工作中就不行呢?佛教于科技、文化如此发展的今天为什么仍有着这般勃勃生命力呢?

当我说起一行中碰到众多居士和修法的人都来自发展相对较好的广州时,同行的小姚说的一句话相当直白却又明理:“都是钱闹的”。

为什么文化、信仰及物资间的冲突非要以宗教方式解决呢?难道除了宗教,就没有其它和谐的相处之道了吗?

日子好了,拣择多了,却又无从拣择了?或许,没有选择的选择才是唯一的天作之福。若真的要“饥不择食,寒不择衣,贫不择妻,慌不择路”时,或许同面对太多拣择时所过的日子又一样地匆忙、空洞。

太多的疑问,在佛学院里,并不需要答案。一张张笑脸,整齐的颂经声,课堂上专注的神情,便胜却了所有的答案。

开心、自在、自得,便是佛!

亚青寺:

这是个注定越走越冷清的旅程,但我还是选择向下走,一直走下去,直到我想停下来为止。在甘孜时,虽然找了多次但一直没能找到同行的人或车,可是此次前来并不容易,再来地话就不一定是什么时候了,便决定继续向下走。富有戏剧性的是,就在我下定决心之后,就意外地碰到了去白玉的车。和司机互留电话后,我便称心地去四处游逛了。

但第二天到达亚青后,虽然降低了预期,但还是觉得失望。

11点多到的亚青,安顿好住宿后我就沿着转经道转经,路上有不少藏民,但语言基本不通,只能做个简单交流。路两旁全是垃圾,野狗甚多,而且每个垃圾桶处差不多都会有条死狗,河道里横满了发出臭味的垃圾及各色各样的塑料瓶子。

找了块干净些的草地,面对河水,我盘腿而坐,吃了些点心,喝了喝热水,然后闭上眼睛休息。对岸突然传来唱经的歌声,河水对面零零散散地坐了不少读经的觉姆,我只是没想到还会有人大声唱出来,当声音传入我耳畔时,我先是一惊,然后又陷入一阵愕然:分明世间儿女语,到此都作天人声。这声音真得像是破空而来,犹如从远古某个朝代穿越了时空,直直地敲响了我的耳鼓……

休息作罢,继续转经,然后回宾馆吃了午饭,感觉有点乏,便坐在床上看起了书,不一会竟睡着了,然后又被一阵劈劈啪啪的声音惊醒,外面竟然下起冰雹来了,下了好一阵,然后便是雨过天晴。高原上的天气真是个娃娃脸,说变就变,晴雨不定。

之后又出去走了一圈,同从西藏来的一行数人一起见活佛,但语言上不通,交流相当有限。路上倒是遇到不少觉姆、喇嘛,人都很热情,但都碍于语言问题,交流甚少。又到各大殿堂上走了走,后来又误入阿松活佛(音)的殿堂,既如此就不妨一见吧,阿松活佛算是整个亚青寺的大管家了,整个房间里全挤满了信众,还有很多觉姆,每个人手上都有个条子,因为觉姆和喇嘛是不能随便见活佛的,只有求解时方可,不像外人,只要准备好哈达或者干脆一份诚心就行了。我坐在人群之中,看着觉姆和信众们个个诚惶诚恐的样子,心中却是一阵难受,不知神经搭错到了哪根筋上,只剩下一个想法:愚昧!

我在人群中如坐针毡,越呆越难受。就在此时听到外面有人谈论什么打印机问题,不能双面打印云云,我乘机出去看看能不能帮个忙,两个喇嘛在谈,我插话进去,提了提建议,然后便找机会从人群中溜了出去。

走在清冷的街道上,呼吸着自由的空气,一身的自在,径直向着远方挂满经幡的小山走去。想起老子说的:天地不仁。老天从来都是给强者机会,从来都不怜悯弱者。在这个世界,求人不如求己,靠天不如靠自己,路还得要自己走。而我现在所能依靠的,便是我的双腿和些许急促的呼吸。

等走到山头之上,远跳西边的天空,金灿灿的落日的余辉从地平线和黑压压的乌云间的缝隙中迸射出来,构勒出远处连绵山峦的凹凸平缓。造型现代的觉姆经堂四周全是紧触着的成群的小房子,不少房子上面正飘散着袅袅的炊烟。当幕色掩去了所有的细节与不堪之后,剩下的便是亚青所独有的自然与人文的和诣之美。

只要将你的心胸放得足够宽,只要把你的目光放得足够远,当你的视野足够大的时候,就只有一个字可以描述你眼中的一切,那就是:美。