setproctitle

setproctitle是个很有用的技巧,它的原理是修改进程的argv[0]来达到修改进程命令行显示的效果。
命令行参数argv和环境变量信息environ是在一块连续的内存中表示的,并且environ紧跟在argv后面。
由于修改前后的命令行长度不一样,为了保证argv和environ的连续性,需要新申请一块内存来存放新的argv,environ,就达到了随意修改进程名字的目的。

ClearSilver 64位机器上编译,test_crc错误的问题

环境:clearsilver-0.10.5,64 bit, SuSE
Running cs regression tests
Failed Regression Test: test_crc.cs
See test_crc.cs.out and test_crc.cs.err
make: *** [test] Error 1

test_crc.cs.err
4c4
< -2128917020
-–

2166050276

test_crc.cs.out
Parsing test_crc.cs
419156592
1357503972
2166050276

test_crc.cs.gold

Parsing test_crc.cs
419156592
1357503972
-2128917020

解决方法:
直接编辑 cs/Makefile,删除 test_crc 相关内容,重新编译。

常用iptables语句

允许本机ping别人
-A OUTPUT -p icmp –icmp-type echo-request -j ACCEPT
-A INPUT -i eth0 -p icmp –icmp-type echo-reply -j ACCEPT

允许别人ping本机
-A INPUT -i eth0 -p icmp –icmp-type echo-request -j ACCEPT
-A OUTPUT -p icmp –icmp-type echo-reply -j ACCEPT

开放SSH
-A INPUT -s 192.168.1.0/255.255.255.0 -p tcp -m tcp –dport 36000 -j ACCEPT
-A OUTPUT -d 192.168.1.0/255.255.255.0 -p tcp -m tcp –sport 36000 -j ACCEPT

允许本机进行域名解析
-A OUTPUT -p udp -m udp –dport 53 -j ACCEPT
-A INPUT -p udp -m udp –sport 53 -j ACCEPT

如果这是一台DNS服务器
-A INPUT -p udp -m udp –dport 53 -j ACCEPT
-A OUTPUT -p udp -m udp –sport 53 -j ACCEPT

注,上面只是参数部分,完整的命令应该说是
iptables -A OUTPUT -p udp -m udp –sport 53 -j ACCEPT
以此类推。

jsoncpp执行时错误: json test src lib json json value&#8230;

jsoncpp执行时错误:
json_test: src/lib_json/json_value.cpp:1025: Json::Value& Json::Value::resolveReference(const char*, bool): Assertion `type_ == nullValue || type_ == objectValue’ failed.

原因分析:
Jsoncpp解析非法json时,会自动容错成字符类型。对字符类型取下标时,会触发assert终止进程。

解决方法:
方案1 对Json::Value取下标前,先判断(value.type()==Json::objectValue)。
方案2 启用严格模式,让非法的json解析时直接返回false,不自动容错。
Json::Features f = Json::Features::strictMode();
Json::Reader reader(f);

调试vim慢的原因方法: vim startuptime message txt 启动后,查看message txt中,哪个脚本最慢,再考虑能否禁用加载。在我这里,c vim禁用后,快了非常多。&#8230;

调试vim慢的原因方法:
vim –startuptime message.txt
启动后,查看message.txt中,哪个脚本最慢,再考虑能否禁用加载。在我这里,c.vim禁用后,快了非常多。

接下来,可以正常使用vim,然后输入命令
:scriptnames
看到列表后,也能发现耗时脚本。这一步,发现可以禁用菜单、禁用翻译(vim需要这些东西么!),又提速不少!