未分类

2010.10-2011.9的书单

《重构:改善既有代码的设计》 书不薄,但是感觉东西并不怎么多。

《嘿色幽品•贫僧是去往西天拜佛求亲的》扯淡书,垃圾玩意

《卓有成效的程序员》现在只记得几个快捷操作了。

《卯个人》基本上都是博客上的

《怪诞行为学》未看
› Continue reading

星期二, 九月 20th, 2011 未分类 2 条评论

关于网马中的unescape

各家反网马的产品似乎都对unescape照顾有加。我最近在mdecoder中也打起了unescape的注意。

但是今天突然想起来了,unescape这玩意不知道谁用起来的,导致现在溢出类的网马都把shellcode escape一下放进去,再unescape。有次跟WZ同学聊天的时候,他就说,还有不用unescape的方法的么?哈哈,今天想到了,其实要把shellcode搞到内存中,不一定非得要unescape的。unescape不过是将%uxxxx编码的字符串替换为\uxxxx对应的字符。单纯的用\uxxxx编码就可以的。

Tags: , ,

星期三, 六月 16th, 2010 未分类 2 条评论

(译)V8 JavaScript 引擎 – 嵌入者指南

译自:http://code.google.com/apis/v8/embed.html

如果你已经读过入门指导,你会已经熟悉把v8作为一个独立的虚拟机来使用,并且有了一些关于v8的概念,比如 handles, scopes, 和 contexts。这个文档将进一步的讨论这些概念,并介绍其他一些在嵌入v8到你的C++程序时需要了解的概念。

V8 的API提供了编译并执行脚本、访问 C++ 方法和数据结构、错误处理和安全检查。你的程序可以像使用其他库一样使用V8。你的C++代码可以在包含include/v8.h后通过使用 V8 API 来访问 V8。

V8 设计元素这个文档提供了一些你为 V8 而优化自己程序时有用的背景概念。

读者

本文档适用于想要将 V8 JavaScript 引擎嵌入到 C++ 程序中的 C++ 程序员。这将有助于你使用 JavaScript 调用你自己程序中的 C++ 对象和方法,并且可以让你的 C++ 程序调用 JavaScript 对象和函数。
› Continue reading

Tags: ,

星期六, 四月 24th, 2010 未分类 5 条评论

CString::MakeLower(),微软想的啥?

         最近打算把MDecoder迁移到VS2005上,修改了greta的几个地方后终于编译过去了。运行的时候还是有些莫名的错误,比如:“An invalid argument was encountered”,发现是在CString::MakeLower()这个函数里抛的异常,一路跟下去,在

errno_t __cdecl _mbslwr_s_l(
        unsigned char *string,
        size_t sizeInBytes,
        _locale_t plocinfo
        )

有这么一段:

        for (cp = string, dst = string; *cp != NULL; ++cp)
        {
            if (_ismbblead_l(*cp, _loc_update.GetLocaleT()))
            {
 
                int retval;
                unsigned char ret[4];
                if ((retval = __crtLCMapStringA(
                                _loc_update.GetLocaleT(),
                                _loc_update.GetLocaleT()->mbcinfo->mblcid,
                                LCMAP_LOWERCASE,
                                (const char *)cp,
                                2,
                                (char *)ret,
                                2,
                                _loc_update.GetLocaleT()->mbcinfo->mbcodepage,
                                TRUE )) == 0 )
                {
                    errno = EILSEQ;
                    _RESET_STRING(string, sizeInBytes);
                    return errno;
                }

,当碰到字符0×247时就会返回errno = EILSEQ,然后在ATLMFC_CRT_ERRORCHECK(::_mbslwr_s(_Str, _SizeInChars));里面就抛了个异常出来。OMG,我只是个菜鸟,微软何必这么折磨我呢?我看不懂上面的啥__crtLCMapStringA,我也不想看。

         拿关键字:MakeLower() EILSEQ 去google,在这个链接里微软的人这么说:This issue is actually by design.这个问题就是这么设计的。

         我靠,这么设计的???!!!

         我只不过我要把字母都转成小写的而已,你抛个异常干毛啊?把能转成小写的转成小写的得了。汗,猜不透微软咋想的。可有大牛路过的给个指点?或许我可以用别的方法解决转换为小写的问题,可是指不定别的地方又冒出这种异常来,这不搞死我么。

Tags: , , ,

星期一, 九月 28th, 2009 未分类 没有评论

gmbox发布0.1版本

呃,这是我参与的一个开源项目,不过很羞愧的说,只提交过一次代码。
算上后来提交的一个安装脚本,两次吧。
windows下安装包的下载地址:http://gmbox.googlecode.com/files/gmbox_setup_0.1.exe

以下内容转自骨头的博客

好吧~ 今天发布gmbox V0.1版本了.
看看之前的日志,发现离我发第一篇博文的都已经过了近4个月了.
其实,离之前预想的发布日期不知道迟了多少,好在也没对外公布过发布计划,看来我对自己的”懒”还是有自知之明的,哈哈..
呃..还是说说gmbox吧,基本特性是:

  • 支持谷歌音乐的”榜单下载”和”搜索下载”,而且,这两者都包含歌曲和专辑.
  • 简单的可配置性
  • linux系统可以调用mid3iconv自动修改歌曲的ID3信息编码
  • 跨平台性,使用python做为核心,可以运行于大部分linux和windows操作系统,理论上mac也可以,没条件测试
  • 界面和核心分离,默认有一个使用pygtk的界面,也可以使用命令行方式操作

安装方法:

  • linux版本安装法:下载源码包后,解压,可以 sudo ./install -i 安装至系统目录,就可以在菜单选择”应用程序”-”影音”-”google music box”打开GUI界面,或者运行gmbox打开CLI界面. (-u可以卸载干净的.)
  • linux版本不安装法: 下载源码包后,解压,直接运行 gmbox/src/mainwin.py 打开GUI界面; 直接运行 gmbox/src/cli.py 打开CLI界面.
  • windows版本: 下载自解压包后,解压至任意目录,运行 mainwin.exe 打开GUI界面,运行 cli.exe 打开CLI界面.

使用方法:超简单,谁用谁知道…
已知bug:还蛮多的,比如试听不支持,歌词下载不支持,还有界面太丑等….哦,现在关闭主窗口,后台的下载进程还不会自动关掉的…以后慢慢完善吧.
再来个截图:

Tags:

星期二, 八月 4th, 2009 未分类 没有评论