未分类
2010.10-2011.9的书单
《重构:改善既有代码的设计》 书不薄,但是感觉东西并不怎么多。
《嘿色幽品•贫僧是去往西天拜佛求亲的》扯淡书,垃圾玩意
《卓有成效的程序员》现在只记得几个快捷操作了。
《卯个人》基本上都是博客上的
《怪诞行为学》未看
› Continue reading
关于网马中的unescape
各家反网马的产品似乎都对unescape照顾有加。我最近在mdecoder中也打起了unescape的注意。
但是今天突然想起来了,unescape这玩意不知道谁用起来的,导致现在溢出类的网马都把shellcode escape一下放进去,再unescape。有次跟WZ同学聊天的时候,他就说,还有不用unescape的方法的么?哈哈,今天想到了,其实要把shellcode搞到内存中,不一定非得要unescape的。unescape不过是将%uxxxx编码的字符串替换为\uxxxx对应的字符。单纯的用\uxxxx编码就可以的。
(译)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
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.这个问题就是这么设计的。
我靠,这么设计的???!!!
我只不过我要把字母都转成小写的而已,你抛个异常干毛啊?把能转成小写的转成小写的得了。汗,猜不透微软咋想的。可有大牛路过的给个指点?或许我可以用别的方法解决转换为小写的问题,可是指不定别的地方又冒出这种异常来,这不搞死我么。
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:还蛮多的,比如试听不支持,歌词下载不支持,还有界面太丑等….哦,现在关闭主窗口,后台的下载进程还不会自动关掉的…以后慢慢完善吧.
再来个截图:

近期评论
- mtian 发表在《JScript.Encode的解密》
- Demon 发表在《JScript.Encode的解密》
- mtian 发表在《base62的解码分析》
- Charles 发表在《base62的解码分析》
- 南瓜 发表在《迅雷客户端漏洞三个》