`
zhangyafei_kimi
  • 浏览: 261507 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论
文章列表
1.准备MozillaBuild 在下面地址下载最新的MozillaBuild http://ftp.mozilla.org/pub/mozilla/libraries/win32/ 目前最新的是 http://ftp.mozilla.org/pub/mozilla/libraries/win32/MozillaBuildSetup-1.4.exe 推荐安装到c:\mozilla-build,我安装到了其他目录,也成功了 运行下面的命令,得到一个MinGW shell,下面的编译都要在这个shell中运行 start-msvc6.bat start-msvc71.bat (VS 2003) st ...
把代码写清楚,别耍小聪明。 想干什么,讲的简单点、直接点。 只要有可能,使用库函数。 避免使用太多的临时变量。 “效率”不是牺牲清晰性的理由。 让机器去干那些脏活。 重复的表达式应该换成函数调用。 加上括号、避免歧义。 不要使用含糊不清的变量名。 把不必要的分支去掉。 使用语言的好特性,不要使用那些糟糕的特性。 该用逻辑表达式的时候,不要使用过多的条件分支。 如果逻辑表达式不好理解,就试着做下变形。 选择让程序更简洁的数据表达形式。 先用伪代码写,再翻译成你使用的语言。 模块化。使用过程和函数。 只要你能保证程序的可读性,能不用 goto 就别用 。 不要给糟糕的代码打补丁 - 重写就是了。 ...
可重入就是异步信号安全。可重入的要求比多线程安全更严格。 crt的io函数和malloc、free函数都不是可重入的。但是有的字符串处理函数可重入。 满足下列条件的函数是不可重入的:     1) 函数体内使用了静态的数据结构;     2) 函数体内调用了malloc() 或者free() 函数;     3) 函数体内调用了标准I/O 函数。 如何编写可重入的函数:     1) 不要使用全局变量。因为别的代码很可能覆盖这些变量值。     2) 不能调用其它任何不可重入的函数。     3) 在和硬件发生交互的时候,切记执行类似disinterrupt() 之类的操作,就是关闭硬件 ...
有了dll文件需要导出def文件: pexports zlib1.dll > zlib1.def 有了dll和def文件,需要导出MinGW的.a文件: dlltool --dllname zlib1.dll --def zlib1.def --output-lib libz.dll.a 有了dll和def文件,需要导出一个VC的lib文件: lib /machine:i386 /def:zlib1.def 注意: C++的dll不具有2进制级别的共享性,也就是说VC的MinGW的C++ dll不能混用。 而C的可以。 pexports和dlltool的MinGW的工具,lib是VC ...
mock测试:就是在测试过程中,对于某些不容易构造或者 不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。 mock对象:这个虚拟的对象就是mock对象。mock对象就是真实对象在调试期间的代替品。 mock对象使用范畴: 真实对象具有不可确定的行为,产生不可预测的效果,(如:股票行情,天气预报) 真实对象很难被创建的 真实对象的某些行为很难被触发 真实对象实际上还不存在的(和其他开发小组或者和新的硬件打交道) 等等... 使用mock对象测试的关键步骤: 使用一个接口来描述这个对象 在产品代码中实现这个接口 在测试代码中实现这个接口 在被测试代码中只是通过接口来引用对象,所以 ...
--user-agent="xxxxxxxx" 修改HTTP请求头部的Agent字符串,可以通过about:version页面查看修改效果 --user-data-dir="dir" 修改临时文件存放的位置 在这里下载windows的nightly build,直接解压到一个目录就可以用了 http://build.chromium.org/buildbot/snapshots/chromium-rel-xp 临时文件夹的位置可以用--User-data-dir=xxx命令行参数修改。比如建一个chrome.exe的快捷方式,在后面加上“ --Us ...
名字:        valgrind是一个调试和剖析的程序工具集。 概要用法:        valgrind [[valgrind] [options]] [your-program] [[your-program-options]] 概述:        Valgrind是一个Linux下灵活的调试和剖析可执行工具。它由在软件层提供综合的        CPU内核,和一系列调试、剖析的工具组成。架构是模块化的,所以可以在不破坏现        有的结构的基础上很容易的创建出新的工具来。        这本手册包括了基本的用法和选项。更多帮助理解的信息,请查看您系统的HTML       ...
wget下载整个网站 可以使用下面的命令 wget -r -p -k -np http://hi.baidu.com/phps , -r 表示递归下载,会下载所有的链接,不过要注意的是,不要单独使用这个参数,因为如果你要下载的网站也有别的网站的链接,wget也会把别的网站的东西下载 下来,由于互联网的特性,很有可能你会把整个互联网给下载下来 --,所以要加上 -np这个参数,表示不下载别的站点的链接. -k表示将下载的网页里的链接修改为本地链接.-p获得所以显示网页所需的元素,比如图片什么的. 另外还有其他的一些参数可以使用: -c表示断点续传 -t 100表示重试100次,-t 0表示无穷 ...
使用google breakpad生成dump文件 breakpad的主要功能就是生成dump文件,还可以将dump文件发送的远程http服务器。 breakpad的SVN在这里http://google-breakpad.googlecode.com/svn/trunk linux,mac,solaris,windows下面产生dump文件的例子文件在这几个文件里面, ...
Rational Purify 使用及分析实例可以见这里http://www.ibm.com/developerworks/cn/rational/r-cail 但是如果使用VC7,8,9的默认编译和链接设置,那是肯定找不到准确的错误位置的。 为此,需要在VC8(VC7和VC9类似)中一些编译和链接参数要修改如下: Debug Information Format - Program Database Whole Program Optimization - No Code Generation, the Basic Runtime Checks - Default Enable Inc ...
都要有管理员权限才行   修改 /proc/sys/fs/file-max 文件中的那个数字,改的大一点无所谓   然后ulimit -n 60000
一个项目需要,特地写了这些功能的函数。 process_stat.h的内容如下: /** @file * @brief 进程统计信息函数的声明 * @author 张亚霏 * @date 2009/05/03 * @version 0.1 * */ #ifndef PROCESS_STAT_H #define PROCESS_STAT_H #ifdef __cplusplus extern "C" { #endif typedef long long int64_t; typedef unsigned lo ...
之所以这么喜欢chrome,就是因为它开放。与firefox不同,ff使用了mozilla的一些技术:xul、xpcom,而且编译过程非常复杂,不适合研究学习。chrome使用了最普通的lib:WTL、zlib、libpng、sqlite、webkit,连v8也不是专门为chrome开发的,它甚 ...
#include <Windows.h> PVOID HookAPI(PBYTE pbModule, PCSTR pszName, PVOID pvOrg, PVOID pvNew) { PIMAGE_THUNK_DATA r; PIMAGE_NT_HEADERS p; PIMAGE_IMPORT_DESCRIPTOR q; p = (PIMAGE_NT_HEADERS) (pbModule + ((PIMAGE_DOS_HEADER) pbModule)->e_lfanew); q = (PIMAGE_IMPORT_DESCRIPTOR) ...
原地址已经找不到了,而且里面的几个小bug和编译不过去的地方我已经修改了. Sample目录下是个例子. 注意:请遵守GPL协议.
Global site tag (gtag.js) - Google Analytics