初试 windbg. 强大的调试工具. windbg学习笔记 最近项目老大要求我在windows登录过程中嵌入智能卡登录验证,需要对gina.dll动手术。花了3天学习消化几个巨人的代码,站在他们的肩膀上,到现在能够显示自己的登录对话框,能够验证用户名密码并登录成功。但在其后调用WlxStartApplication()时失败, GetLastError()返回0。这下没辙了,仅凭简单的MessageBox无法有效的
linux下建立tcp连接(connect)非常慢的问题的排查 先说结论:执行了如下的命令后,问题解决。 之前nf_conntrack_max的值是65536sysctl -w net.netfilter.nf_conntrack_max=358576===================================问题描述: 当php的请求量稍微变大的时候(nginx+php-fpm的架构),php对外建立连接的时间 conn
websocket协议转tcp协议的代理 背景: 原先有个页游的项目,需要移植到手机上,做手机页游,也就是到html5(h5)版本,面临一个问题:原先服务器和客户端(flash)通信用的是tcp协议,而h5用的是websocket,虽然也也是用来传输二进制的,但毕竟原先的服务器不认识websocket的握手协议以及中间传输的帧协议,又不想改动服务器的c++代码来做这个恶心的适配,怎么办? 解决: 组内最近
ctags 支持 typescript 语言 最近用到egret引擎,代码使用typescirpt缩写,根据typescript的语法写了可以生成对应的tags支持 module class member funtion ctags --langdef=MYTS --langmap=MYTS:.ts \--regex-MYTS="/^\s*(\w+)\s*:.*;.*$/\1/m,member/" \--regex-MYTS="/
egret 开发阶段 显示屏幕像素坐标 private showMousePos() { var canvas = document.getElementsByTagName('canvas')[0]; var ctx = canvas.getContext('2d'); var tips:egret.TextField = new egret.TextField();
两篇文章 注重实效的程序员(The Pragmatic Programmer) 注重实效的程序员(The Pragmatic Programmer)http://www.cnblogs.com/guoadou/archive/2005/03/14/the_pragmatic_programmer.htmlhttp://netlab.cse.yzu.edu.tw/engineer.htm
用ThinkPHP框架遇到的狗血bug:包含common.php时报函数重复声明的错误。 Error type: PHP Fatal errorFatal error: Cannot redeclare (a) (previously declared in (b)) in (c) on line (d)一旦 include_once ('../../Common/common.php'), 就会报上面的函数重复声明。解决办法:3) common.php的文件名
MYSQL BLOB 字段大小以及个数的限制测试。 测试结论mysql版本 5.1 表类型: innodb, row_format=compact (这是默认的行格式) 插入超过10个blob, blob的数据量很小( 插入超过10个blob, blob的数据量很大(>768字节), 插入失败:报 Got error 139 from storage engine。 注意,如果mysql服
用Fiddler查看google快照 总所周知,在国内访问google经常很不稳定,并且有诸多限制。下面送上破解之道。1)使用https://www.google.com.hkhttps是加密的,搜索的关键字不会被GFW抓到。2)查看google快照时,即使对google主站使用了https,但默认快照还是走的是http协议,并没有加密,导致仍被GFW截获虽然可以每次手动把快照的url前面加上https来正确访
内存对齐性能测试 内存对齐的重要性大家都知道, 那么内存不对齐, 对性能有多大的影响? 本文做个小实验:#include #include #include "ctimer.h"int main(){ char buf[512]; printf("buf's addr [%x][%d]", (int)(char*)&buf[0],(int)(char*)&buf[0]);
增强ctags对lua的支持 ctags对lua支持不友好, 表现在 1) ctags默认对lua的支持仅限于识别function, 不支持识别常量定义. 2) 如果通过CLASS:MEMBER_FUN(...)方式以及CLASS.MEMBER_FUN()方式定义的function, 所生成的tags是如下形式: CLASS:MEMBER_FUN ...省略 CLASS.MEMBER_FUN ...省略
GCC/LD编译链接潜规则 (第五弹) : 为什么会有undified symbol? GCC/LD编译链接潜规则 (第五弹) : 为什么会有undified symbol?nemozhang2012-07-17 15:1104d0ugKnyvJtx1snIGoTteO5TVfXOayBPxCk5BMqr94zlCu6xFw问题一:你是否遇到过: 经常遇到加载一些so时, 提示undified symbol,导致加载失败, 可是make
GCC/LD编译链接潜规则 (第四弹) : ld 会把所有通过-l指定的动态库全部链接进最终的目标程序中, 无论是否真的用到(导致生产环境加载失败) GCC/LD编译链接潜规则 (第四弹) : ld 会把所有通过-l指定的动态库全部链接进最终的目标程序中, 无论是否真的用到(导致生产环境加载失败) nemozhang 2012-06-25 16:28961ci+6E0x90ErtT+mK9dwOv7CFr4pCKDoaRbj8j3Ib/KOBXIHo潜规则: ld 会把所有通过-l指定的动态库全部链接进最终的目标程序
GCC/LD编译链接潜规则 (第三弹) : 当项目库中包含多个同名的头文件时. gcc在寻找头文件时, 会按照一定的顺序在很多个目录挨个寻找, 一旦找到一个即停止寻找. 如果项目中存在多个同名的头文件, 则以第一个为准, 后面的直接忽略. 这个特性会导致很多编译不通过的问题!GCC的寻找依赖的头文件顺序为: (这里已a.h为例)1) 优先在使用了#include ”a.h” 的文件所在的目录寻找a.h2) 在GCC通过 –I 指定的包含路径中从左到右找.
GCC/LD编译链接潜规则 (第二弹) : 为什么总链接失败? --LD对依赖库的输入顺序敏感 GCC/LD编译链接潜规则 (第二弹) : 为什么总链接失败? --LD对依赖库的输入顺序敏感. nemozhang 2012-05-16 18:077a92l3PJGnvaDHxidQbLNa+HgZlPfW4n/AsNVwuPzj8RAjoyZZE为什么明明指定了依赖的库,却还总是链接失败???潜规则: LD对依赖库的输入顺序敏感.LD在链接生成目标文件
GCC/LD编译链接潜规则 (第一弹) : 当一个符号被多重定义时 gcc/ld的编译链接的有很多潜规则, 如果不幸遇到了, 并且没有意识到这是个潜规则, 那么会浪费很久很久的调试时间而不得其解. 下面总结我所遇到的一些潜规则.本文先出第一弹, 其他的潜规则将陆续放出.潜规则:当一个符号在多个目标文件(.o)里同时出现时, LD报错. 提示符号多重定义.当一个符号在多个静态库(.a)里同时出现时, LD不报错, 以第一个遇到的为准. 并
快速的统计HTTP请求的分布 快速的统计HTTP请求的分布nemozhang2012-09-22 09:56BhmvdGYe3KCAw+BUS4nvw需求:有一堆CGI,都需要传入appid参数,怎么查看当前那些Appid的访问量最大?怎么查看这些CGI的请求量分布?解决:假设, 我们的webserver的请求都是通过LVS接入的, 那么所有的外网请求都经过tunl0网卡,
你有被stringstream坑过吗? stringstream常用来安全的格式化若干个字符串,数值到一个缓冲区, 而不用担心溢出, 可以用来取代snprintf. 但是很多人都在使用stringstream的时候遇到因为stringstream内部的缓冲区没有正确的清空导致的问题.那么把stringstream类内部的缓冲区正确的清空方式是什么呢?stringstream ss;答案是: ss.str("") 方法