星期三, 8月 11, 2010

[Linux] 如何sniffer 送出或是接受的protocol content.

在寫網路程式,常常需要處理protocol的問題,http要看header and content對不對,可是一直用Wireshark sniffer也是很煩,幸好linux可以用很簡單的方式看到~~~^^

mkfifo proxypipe
cat proxypipe | nc -l  11111 | tee -a inflow | nc localhost 11112 | tee -a outflow 1>proxypipe

可以把input放在inflow,把output放在outflow~~~~^^

好用呦~~~^^

來源出自
http://smaftoul.wordpress.com/2009/05/13/netcat-as-a-logging-tcp-proxy/

星期二, 6月 22, 2010

[Linux] 當打錯command的時候怎麼辦....(#rm -rf /)

我個人常常打太快,常常rm的結果就是

#rm -rf /
慘了,電腦就得從灌了
Google了一下,發現真的沒甚麼方式可以recover,但皇天不負苦心人,可以用yum reinstall~~~~^^

#rpm -qa --qf '%{name}\n' | sort -u | xargs -i yum reinstall -y --verbose {}

星期一, 6月 21, 2010

[C++] convert string to int or boolean

http://www.codeguru.com/forum/showthread.php?t=358996
這個link有高手寫出C++ convert string to boolean,code如下

template
bool from_string(T &Value,const std::string &str,std::ios_base & (*f)(std::ios_base&))
// converts string to streamable value, and returns true on success and false otherwise.
{
std::istringstream stream(str);
stream>>f>>Value;
return (!stream.fail()) && stream.get()==std::istringstream::traits_type::eof();
}


如果是convert string to int,可以參考這個link
http://www.codeguru.com/forum/showthread.php?t=231054
code如下

template
bool from_string(T& t,
const std::string& s,
std::ios_base& (*f)(std::ios_base&))
{
std::istringstream iss(s);
return !(iss >> f >> t).fail();
}

如果是C的部分可以用atoi, atof function
但如果是str = "0" 會搞不清楚是fail return 0 還是convert to 0,如果是大於 INT_MAX,也就是 0x7FFFFFFF,就只會回傳 0x7FFFFFFF。

還有strtol functaion,可以參考下面的link
http://linux.die.net/man/3/strtol

至於atoi and strtol的差異就是strtol當有錯誤的時候,會設置errno
但atoi不能,所以可以說strtol是atoi的加強版,請參考下面的link
http://learn.akae.cn/media/ch25s03.html
https://www.securecoding.cert.org/confluence/display/seccode/INT06-C.+Use+strtol%28%29+or+a+related+function+to+convert+a+string+token+to+an+integer
所以建議用strtol

星期一, 4月 12, 2010

星期六, 4月 10, 2010

[Python] python egg 安裝

常常不知道怎麼安裝python的package齁~~~

照做~~~~

http://www.ibm.com/developerworks/cn/linux/l-cppeak3.html