Shell's Home

Oct 24, 2005 - 1 minute read - Comments

wonderful life, wonderful day

7:00 Get up early, goto hongkou park to practice taichi chen style. 11:00 Get back, having lunch. 12:00 Do something with computer, like reading e-book… 13:00 Go sleeping…Z..z..Z..z.. 16:00 Wake up, take awalk and try to get some food. 17:00 Having dinner. 18:00 Peek up my ClassicalGuitar, do some practice. 19:30 Watching TV, then play taichi which just lean today. 20:00 Go on Guitar. 22:00 Take a bath. 22:30Talk with someone in MSN.

Oct 24, 2005 - 1 minute read - Comments

日子

日子就是和你一起在黄昏冲到四里外的大超市买一瓶六块的果汁。省下一块,在街上直接吃掉。

Oct 23, 2005 - 1 minute read - Comments

程序解释器

贝壳在费尽N天功夫后终于得到了一个程序解释器,目前可以无结构运行。正在附加函数声明和调用结构。先存念一个Output。 int i; i=0; i=i+15*50; i=i-1; print(i); Result Output: Parse Begin [;] [] [;, ;] [] Parse End Parse Begin [;] [var(i):0] [;, =] [var(i):0] [;, =] [var(i):0, 0] [;] [0] [;, ;] [0] Parse End Parse Begin [;] [var(i):0] [;, =] [var(i):0] [;, =] [var(i):0, var(i):0] [;, =, +] [var(i):0, var(i):0] [;, =, +] [var(i):0, var(i):0, 15] [;, =, +, *] [var(i):0, var(i):0, 15] [;, =, +, *] [var(i):0, var(i):0, 15, 50] [;, =, +] [var(i):0, var(i):0, 750] [;, =] [var(i):0, 750] [;] [750] [;, ;] [750] Parse End Parse Begin [;] [var(i):750] [;, =] [var(i):750] [;, =] [var(i):750, var(i):750] [;, =, -] [var(i):750, var(i):750] [;, =, -] [var(i):750, var(i):750, 1] [;, =] [var(i):750, 749] [;] [749] [;, ;] [749] Parse End Parse Begin Begin Function Expression Paser Parse Begin [;] [var(i):749] [;, ;] [var(i):749] Parse End Function Stack[var(i):749] 749 Function Stack[] [;] [] [;, ;] [] Parse End 以上为script读取文件运行,在打开调试输出情况下的结果。

Oct 20, 2005 - 1 minute read - Comments

表达式解析算法

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

Oct 20, 2005 - 1 minute read - Comments

Windows Installer修复记录

贝壳遇到邪门事了,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……不说也罢……

Oct 19, 2005 - 1 minute read - Comments

IE内嵌对象提取方法

我发现很多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

上海深度旅游

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