All Stories

再一次无奈的叹息

  我的自负掩盖不了内心深处的自卑,灿烂的阳光抵挡不住浑身的寒冷。  难道我真的错了?我不知道,我更不愿意承认。  我要继续坚持自己的信念,即使满身伤痕,也要蹒跚着勇往直前!

挨批评了

  唉!!!

原来我的id没有了

  今天用Foxmail收邮件的时候,才稍微留意了一下出错信息,原来我在学校bbs上的id已经没了,消失了,生命值减到0了!  上去试了一下小丫头的id,也没有了,离开学校的日子,终于超过1年没有记得要登录bbs。  用guest登录上去看了看,以前经常驻留的几个版面也找不到了,像People,留下回忆都没有!  翻出Foxmail中保存的一些bbs上的聊天记录,还有邮件,想起在学校或开心或悲伤或迷茫或骄傲的时光。  一站的终结,逼近着新的开始。

内嵌wxLua

  之前因为使用wxLua,发现如果宿主exe使用的wxWidgets动态链接库如果和wxLua使用的一样,则不能在Lua中正常加载wxLua。虽然可以通过使用不同的wxWidgets动态链接库文件来规避这个问题,但实在是很丑陋的一件事情。  今天想起来,能不能把wxLua内嵌到宿主exe中呢,这样就都使用同一份wxWidgets了。于是看了一下wxLua的代码,代码文件组织是很清晰的,很快就明白了各个文件夹下的文件是什么作用的。使用wxLua的一种方案是,它最后需要编译生成一个叫wx.dll的文件,Lua中可以直接require这个wx模块来使用。打开它的VC工程来看,也就是那么几个文件编译出来的,直接照它的样子把这些需要的文件添加我的工程中,然后编译,看情况需要修改的有几处:因为我的工程用了WXUSINGDLL宏,但这个宏会让wxLua中的一些类变成dll linkage的,所以要把这几处编译开关修改一下;有一个for wxLua的wxApp派生类,删掉;还有一处最主要的,luaopen_wx函数,有一个wxLuaState的对象,要改成直接在创建对象时把lua_State指针传过去,其他有些分析命令行参数之类的代码也是多余的可以删掉。另外还有个问题,在VC9里cell控件的代码中有一个GetRef方法,链接时报错,很诡异,搞不明白,暂时屏蔽掉那行代码。  经过这么一番折腾,终于可以直接在exe中用内嵌的Lua解释器使用wxLua了!

超级牛掰的升级程序即将现世

  发现在有很多事可以做,发现自己一件都不想做,哈哈!  今天老大跟我说,是不是忘了件事,那个gem升级也得做进升级程序中去。我说那不是说另外还要用wxRuby做个程序的嘛。老大说,这种建功立业的好机会,怎么可以让。我狂晕!  找原来开发这个功能的同事咨询了一下基本原理,发现简单得令人发指,当然这种实现方案在我看来也是丑陋得一塌糊涂。看了一下他的代码,发现原来真的是那么一回事,基本的代码结构和思路都是很清晰的,除了有一些废旧的注释和代码。  我开始头痛界面的问题。原来的实现使用了XTP的ReportControl,我想这么一个原本应该尽量精简轻巧的升级程序现在已经被我弄得渐渐肥大起来了,再加个XTP就太恶心啦!而且另外一个问题也已经浮现,越来越多的命令行参数,已经让眼下那种依次比较字符串的方式不再继续适用,引入boost::program_options也势在必行,天哪!

又见离职

  今天一个同事发来告别邮件,没多少意外,因为上个月就已经听其他同事提到过。这同事是个比较有趣的人,告别还要写个中英文对照的双语版,而且内容严肃,很像领导讲话。除此之外,他爱好摄影,关注电子产品,这是我比较钦佩和羡慕的一点,我一直希望自己也能拥有一项比较健康的业余爱好,不过直到现在,尝试了不少活动,最终还是没找到。  同事邮件中说到一句话,我很是有点感触:“事业上所有的成功都弥补不了家庭的失败。”他说这是一句台词,我觉得在我的内心深处也许我是很赞同这种观点的,但这些年来,我却时常认为,男人在30岁之前应该能作出一番事业来,至少能让事业走上正规,而这之前,感情的事应该让路。但是我有时候对感情的渴望也是强烈得一塌糊涂。  同事还说,在这个月要去四川进行一场心灵之旅。真是一个煽情而风骚的男人啊!曾经我有一段时间也是对自己对生活失去了信心,小思宇问我想干活,我说想去旅游,小思宇说总不可能旅游一辈子吧,于是让我打消了这个念头。现在回想起来,小思宇真是个感觉敏锐的人,还是说很多女人真的有这种被人称之为“女人的第六感”的能力。  同事要走了,引发我一些思考,最近甚至想到我这半年或一年中要做哪些事,可是我往往最终只留下一个美好臆想。  祝同事以后的工作生活都一帆风顺吧!

让人恶寒的囧问题

  今天发现一个很囧的问题,在保存文件的时候出现堆破坏。跟踪了一下,看到的代码才让人一阵恶寒。先到文档类中的保存代码,该函数会在之后向主窗口Post一个消息,主要是把保存的文件路径发送过去,这个文件路径保存的空间是在堆里动态分配的,到了主窗口中处理该消息的代码直接把该消息Send到另一个视图,而这个视图中处理该消息的函数会取出这个路径,最后销毁这块内存。问题就出在这块内存上,原先发送方把这字符串以ANSI形式表示,后来整个工程从ANSI转换到UNICODE后,只修改了处理消息的那边,而没有跟着修改发送消息的这边,于是两边认为的内存块大小就不一样了,于是就堆破坏了。而让我恶寒的是另外一个原因,为什么要向主窗口Post个消息,再由主窗口转发一遍。一方面运行效率低下,另一方面就是接口变动后不容易找到受影响方,这次就是活生生的例子。我想,用个observer就可以缓解这些问题吧!

听《白狐》

  在Kugoo上随便按排行榜搜索的歌曲列表,几乎是重装一次才会更新一次的列表。这次偶然发现列表中一首很抒情的歌曲《白狐》。虽然听了也好些日子,而且都是一个人在静谧的夜里听,但直到今天,我才实在忍不住心中的好奇,上网搜索了一把。  搜索了才知道,原来还有一个合唱版本的,于是马上开Kugoo来听,男声稍微有点让我失望,也许是从小看电视《聊斋》而被先入为主的思想主导,我特别希望男声是像电视中的那种书生腔调。不过总的说来词、曲,以及女声,都很打动人,在百度百科中,也有不少相关的信息,原来蒲松龄不是第一个写书生和狐独的故事的,只不过是他把如此凄美而又有新意的情爱带到了大众面前。  不知怎的,尽管让人觉得悲伤,我却有点神往。

烦躁

  真的。  现在一个Lua解释器的封装类,一个插件注册表类,这样的结构是不够用的。至少需要有一个管理插件运行的模块,它可以屏蔽掉解释器的底层差异,使得使用这个模块的用户不用知道他们到底是在运行Lua脚本还是其他Ruby或是Python之类的东西。另外一点是这模块需要向不单是C++代码提供接口。也就是说,用脚本写成的插件需要使用这个接口。这个需求很合理,也很必要,不然的话,很明显的一大限制是不能再对插件进行扩展了。