刚's profileThis is EricsXu 我是徐刚PhotosBlogListsMore Tools Help

This is EricsXu 我是徐刚

小俩口
11/17/2009

交叉编译tcpdump

项目需要用到tcpdump来分析网络数据,发现网上的tcpdump编译教程不是很好(是可以用的,但是修改方式不合理,也没有说明原因)

libpcap
  1. 下载libpcap, 有不少人没有安装libpcap直接编译tcpdump是不行的
  2. 编译libpcap会遇到两个问题:
    1. pcap type 在cross-compiling的情况下不能determined,提示使用--with-pcap. 那么实际上简单看一下configure知道 这个提示是可以避免的, 不需要注释configure文件中某些行, 如果是arm-linux, 那么这个选项是--with-pcap=linux
    2. linux version 在cross-compiling的情况下不能determined, 这个也不许要修改configure脚本, 直接在./configure之前设定ac_ca_linux_vers就可以了. 比如我的linux kernel版本是2.6.12.5
  3. 那么我的整个configure是这样的:
    1. ac_ca_linux_vers=2.6.12.5 ./configure --prefix=/usr/local/xxx --host=arm-linux --with-pcap=linux
  4. make && make install
  5. 成功之后能够在$(prefix)/include目录下看到pcap的头文件, $(prefix)/lib目录下看到库文件
tcpdump
  1. 下载tcpdump, (和上面的libpcap都是在tcpdump.org上面下载的, 如果在linux环境下面不能解压, 把文件名中的.gz删掉)
  2. configure同样会遇到一个linux version的问题, 解决办法和上面一样
    1. ac_ca_linux_vers=2.6.12.5 ./configure --prefix=/usr/local/xxx --host=arm-linux --disable-ipv6
  3. configure成功之后需要修改Makefile,不修改会造成编译器内部错误,或者汇编指令错误,当然都是误报的.就是将"/usr/include"和"/usr/lib"修改为我们的$(prefix)/include$(prefix)/lib, 也就是我们安装libpcap的地方(以加粗):
    INCLS = -I. -I./../libpcap-1.0.0  -I$(prefix)/include -I$(srcdir)/missing
    DEFS = -DHAVE_CONFIG_H  -I./../libpcap-1.0.0  -I$(prefix)/include -I$(srcdir)/missing -D_U_="__attribute__((unused))"

    # Standard LDFLAGS
    LDFLAGS = -L$(prefix)/lib 
  4. make && make install
9/17/2009

如何查看dd的拷贝进度

linux中的DD命令可以很方便的作二进制拷贝,比如可以做硬盘克隆。
一般使用方式如下:
dd if=/src/device/name of=/dst/device/name
... 然后就等它完成,进程退出

但是当我们需要copy的东西很巨大的时候,这个过程是很痛苦的
很多人会查看iostat, 来估算大概需要多少时间完成, 这是很不直观的, 也不可靠

如果我们
dd --help
会看到其实是有方法可以查看copy进度的, 帮助文件中的example如下:
$ dd if=/dev/zero of=/dev/null& pid=$!  //comment: 后台运行dd测试,保存进程号到pid中
$ kill -USR1 $pid; sleep 1; kill $pid   //comment: 给pid发送USR1信号,sleep1,结束dd进程-演示终止

实际我们使用的时候可以新开一个终端,
ps -A | grep dd
找到dd的PID, 然后发送USR1(用户自定义信号),查看copy进度

有些场合我们可能使用当前这个终端, 那么我们可以把当前运行的dd转到后台: ctrl+z, 这时候dd进程被stop了,使用 bg %1 让其在后台继续运行,并且编为1号,后面如果要它到前台运行,只要键入 fg %1 就可以了.

然后我们输入 kill -USR1 PID, 这里的PID是前面用ps查看到的进程号
这时候你就能看到当前的copy信息了,以及平均copy速度
8/21/2009

有没有途径可以合法拒绝纳税

今天知道“央视大楼”的设计喻意之后,我真得不想纳税了.
我宁愿把那部分钱捐出去,也不要给"NC砖家"如此挥霍
8/18/2009

encodeURI & decodeURI

有些时候我们需要通过get方式,在query string中提交一些数据,那么这时候我们有可能会遇到提交中文的情况,比如baidu,google提交查询关键字时那样.
那么我们就需要用到encodeURI('测试关键字')来提交.然后在(假设服务端是java)服务端java.net.URLDecoder.decode(param, "UTF-8")来还原.
javascript 1.5 开始支持encodeURI/decodeURL.
很遗憾的是: request.getParameter("param.name")会给你返回乱码.
 
怎么解决呢?
 
简单一点, 嵌套调用javascript encodeURI, 比如encodeURI(encodeURI('测试关键字')),对应的decodeURI也是需要两次.
由于浏览器或者我使用的web server(web continer),亦或者我使用的spring2.5自动的为我做了一次decode/encode, 嵌套两次这个办法, 完美的解决了中文get方式提交的乱码问题.
 
如非必要,还是千万要统一的使用"UTF-8"编码.
8/16/2009

小舅子回家去了

李明峰来上海过暑假,今天回去了,真的是有点不习惯
 
 
Photo 1 of 190

Custom HTML

想说就说点什么吧,比如"哈哈 终于找到你了 你是谁啊?"
Please wait...
Sorry, the comment you entered is too long. Please shorten it.
You didn't enter anything. Please try again.
Sorry, we can't add your comment right now. Please try again later.
To add a comment, you need permission from your parent. Ask for permission
Your parent has turned off comments.
Sorry, we can't delete your comment right now. Please try again later.
You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
Complete the security check below to finish leaving your comment.
The characters you type in the security check must match the characters in the picture or audio.

CocoLeee's Space

Loading...Loading...