Shell's Home

表达式解析算法

Oct 20, 2005 - 1 minute read - Comments

表达式解析的本质是什么?是树的构造和消解。其他算法本质上都是树算法。 首先,我们使用Token算法来获得一个Token和Object混合的列表。然后我们将列表展开成为一颗树。这个树符合以下条件。 树的所有叶子都是Object,无论是数据还是变量。 树的节点上都是算符或函数,其分支数目和算符目或函数参数相等。 单根,无()。 那么我提出一种构造方法。我们假定一种算符passby,然后用Token算法切分表达式并且转换成合适的对象,放置在passby上面。然后我们根据(,,)的规则将整个列表递归表达成同级树。树的每层都是同级的。而后每层都根据优先级从高到低的顺序来计算结果,反馈到上层。由此我们可以得到有效的结果。 但是我没有按照上述方法写解析器。原因是太麻烦,运算时间长,不容易看懂。代码大,维护困难。我问一个同学,你是喜欢精致小巧但是有瑕疵的东西呢?还是庞大严谨没有错误的东西。结果回答说是精致小巧的。好,这就是解析器算法来源。我用了数据结构中的堆栈算法。这种算法在解析正确的式子的时候没有问题,但是精心构造的“看起来”不正确“的式子也可以解析。而且不容易检查堆栈问题。但是谁管呢?喜欢就好。

Windows Installer修复记录

Oct 20, 2005 - 1 minute read - Comments

贝壳遇到邪门事了,msiexec的服务死活起不来。这个东西服务态啊,又不好做跟踪的。贝壳无奈只好求助于google。结果找到一个解决办法,适用于windowsXPWindows Installer服务启动即关闭症状的解决。 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSevicesMS IServer] "ImagePath"=- "ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f, 00,6f,00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32, 00,5c00,6d,73,00,69,00,65,00,78,00,65,00,63,00,2e,00,65,00,78,00,65,00, 20,00,2f,00,56,00,00,00 注意最后是两个回车。 特存留念,方便自己和大家以后使用。

语言和人

Oct 19, 2005 - 1 minute read - Comments

GiGi和Nancy先表激动,偶语言暴差,不是你们脑子里面想的那种语言啦。 今天用java,忽然想到以前有趣的比喻,自己也来写一个。 C/C++:黑客的语言。外人根本看不懂。 JAVA:大学教授的语言。逻辑性超强,但是太过理想化太空洞。 ASM:文学家的语言。每个人说出来另外一个人都有另外的理解。 BASIC:傻瓜的语言。拣最简单的说。 DELPHI:神的语言。快要绝迹了…… SQL:我们的语言。就是英语吧…… UML:哑巴的语言。…… XML:全世界的语言。

火灾

Oct 19, 2005 - 1 minute read - Comments

贝壳前两天在上班的时候看到火灾了,别人家的。表说我幸灾乐祸,这种事情不多见嘛。而且烧了个水塔而已。独乐乐不如众乐乐,贝壳今天上传火灾照片。其实还有录像的,但是msnspace……不说也罢……

IE内嵌对象提取方法

Oct 19, 2005 - 1 minute read - Comments

我发现很多MM喜欢在blog里面嵌入各种对象,例如flash或者music。例如光MM的光良的歌,功MM的如果的事。一般来说要将这些内嵌对象保存下来是比较麻烦的。因为内嵌对象直接播放,没有引用和连接,那么用连接跟踪器就分析不出结果。 通常来说URL是通过阅读代码来获得的,但是有的时候网页是通过javascript来引用的。这个时候代码分析和代码分析器(例如Mozilla内嵌的那个)就无效了。一般来说是用sniffer来解决问题的,贝壳以前用的是iris。后来出现了种种的特种sniffer分析器(其实分析cap抓包文件就好了),所以这个问题看似就解决了。但是恶搞是没有境界的,还有别的解决方法吗? 贝壳首先想到的是COM分析和跟踪,跟踪COM的dll载入过程和接口参数。这样当然可以获得对象,问题是成本太高了。然后贝壳又设想了文件钩子,在向缓存区域写入特定文件的时候hook到。然后导出这个文件。但是文件确定的问题太困难了,假如同时有1000个内嵌的mid,这个方法等于没用。这个还不是最严重的问题,最严重的问题是这个解决方案可不比特种sniffer简单。 后来贝壳在用ProcExp(www.sysinternal.com出品)的时候发现这个软件可以跟踪进程的句柄。这样的话IE内嵌对象必定在缓存区缓存,COM在打开的时候肯定使用了句柄。我们只要跟踪所有文件句柄,其中不会有很多的。(其实这个方法和前面的方法一样,要确定文件名是个困难的事情。)然后将文件的路径复制到console里面,运行下copy指令,文件就出来了。这个是我想的到的最简单的IE内嵌对象提取方法了。

错车记

Oct 19, 2005 - 1 minute read - Comments

今天贝壳粗心的毛病又犯了。回家应该乘的车叫787,开来一个叫788的车,在最后的8上面8清楚。所以贝壳不假思索的上去了…… 车开到崮山路,转弯了。贝壳发现了,不对了。赶快问,结果吓到了。怎么办? 贝壳感觉今天处理事情和以前的却不一样了。以前的处理模式比较傻瓜。赶快下车,倒乘或者找最近的车站重新乘对的车。今天贝壳先看了788的路线,然后推测了788的行经位置。得到的结论是,继续坐。 坐到峨山路,果然和我想的一样。在峨山路和杨高路的交界口附近停了。然后贝壳啥车都不倒,直接走了回来。不多花钱,不多花时间。多走的路和换车差不多。嘿嘿,赚到了。 鉴于这次错车的经历,贝壳决定了。下次来车的时候一定看清楚了……

上海深度旅游

Oct 17, 2005 - 1 minute read - Comments

前几天净在外面跑,先是北京后张家港。计划了明年出去玩,可是回头才发现,我,还没有看过全部的上海。 都说别人的月亮圆,去看看没啥不好。不过去见识别人的月亮前,先别浪费,看看自己眼前的月亮吧。

抑制-释放(restrain-release)模型和转换(transition)模型

Oct 17, 2005 - 1 minute read - Comments

一个同学和我讨论关于某电影的剧情,大致来说就是一种含蓄的无奈。但是我脑子里面却想到的是台湾言情和侦探片的剧情,简单来说可以用日本小孩描述超人片的句子来表达。大约一半时间的时候反派登场,20分钟左右超人给打个半死。然后到最后五分钟超人暴走,搞定反派。最后三分钟交待下,end。 台湾的言情小说和侦探片的剧情也大致符合某个规律。简单来说,就是在一半左右的时候,出现某种反面的因素,所以让人觉得非常压抑。用某人的话说就是“人都是自虐的”。下面就是喜剧(comedy)和悲剧(cothurnus)的区别,喜剧一般在后面扭转了这种因素,而悲剧则一直没有扭转。 一般来说,经典的悲剧会比较完美些。按照余秋雨的说法,就是一种双重悖论。简单来说,就是左也不行,右也不行。具体说的话,剧中的反面因素不是因为某个具体的人或者某些具体的人造成的。拿红楼梦来说,我们都希望贾宝玉和林黛玉在一起。可是因为整个家族利益需要,社会风气效应,所以他们不能在一起。退一步说,即使可以,但是一个如此小心眼,如此敏感。另外一个如此的……风流吧……即使在一起,能不能在一起还是个问题。这里可以看到,没有任何一个人是蓄意要他们分离的,应该是整个的构架造成的这个悲剧。 从另外一个层面上看,红楼梦和titanic有相似之处。在整体的宏观构架下交织了个人的无奈的爱情。一个是沉船,一个是家族兴亡。最终一个是一个死一个出家,一个是一个死一个嫁人。 如果是喜剧,那么是否可以取消这种悲剧模式的前奏呢?应该说可以,但是出现一个问题。一般来说,持续的写喜会造成观众的审美疲劳。所以通用的模式是两种。抑制-释放(restrain-release)模型和转换(transition)模型。 抑制-释放模型的核心很简单,前半部分是悲剧。但是大家别担心,后面都会矫正回来的。主角前面怎么悲惨了,后面反派会更悲惨的。最特征的恐怕就是日本的超人剧了…… 转换模型是我在看古灵的小说的时候发现的特征模型。先说明,这个应该算言情小说。可是书里面很少出现经典的反派或者误会,有的话一般也是很小。主要的特征在于通过主角的各种行为充分转换观众的各种心情,以此避免审美疲劳。简单来说前面是哭,后面就是敬佩,再后面是甜蜜,等等等等。而且构架也是符合双重悖论的。所以看古灵的小说的时候一般都是整体的甜蜜温馨,不是琼遥小说的自虐状…… 转换模型的另外经典作品就是金庸大侠的作品,尤其是天龙八部。 严格来说抑制-释放模型也是一种转换模型。但是其转换的方向是从特定的悲转向特定的喜而已。准备写悲剧的可以试试从特定的喜转向特定的悲,或者悲-喜-悲的三段转换模型。但是小心给骂死哦。

回到原始

Oct 16, 2005 - 1 minute read - Comments

回到这里就像回到童年,回到最原始的地方,回到心最柔软的地方,回到过去的快乐。于是遇到过去最熟悉的人,记忆最深的人,看她最甜美的笑,心就向不可及的深渊沦陷了。明知不可为而为之,是勇敢还是无奈。

语言的魅力

Oct 14, 2005 - 1 minute read - Comments

从古而今,自中而外。优美的语言无不符合一个规律,即节奏。人的语言可以区分为三个要素,音,高,声。音即发音方法,一般决定了音素听起来是什么样子。高指语言的音高,器乐声学角度讲就是声音的频率。声指讲话的音量。 其中声是自由控制的,只要在允许范围内,音量的大小是可以自由控制并且可控的。而高不是完全自由的,许多语言中的升降调由此产生。最典型的就是汉语的四声音调,古称为平仄。而音是行程语言最重要的因素,失去音即失去了语言的基础。 三者在时间上的展开行程语言,优美的语言自然会具备规律的特性。如声的变化形成抑扬,高的变化形成平仄,音的变化形成押韵。从文字的角度来讲,优美的文学总要通过语言层面去形成。这种意义上的优美更倾向于骈文,并没有实际的意境在里面。