2010-08-29

长沙乡里的民俗

依时间讲讲长沙农村过年过节的风俗

1.清明节 给先人上坟,这个哪里都一样
2.端午节 门上插艾草,到丈母娘家吃团圆饭,不包粽子
3.三月三 吃地菜子煮鸡蛋
4.三伏的头伏 杀叫鸡(公鸡)吃,做法一般是用老姜炒
5.7月半 同样是祭先人,老人晒寿衣寿被
6.中秋节 到丈母娘家吃团圆饭
7.春节 初一早上先去祭先人。有一句俗话叫“初一崽初二郎初三初四拜地方”,也就是初一是和儿子儿媳吃团圆饭,初二回丈母娘家吃饭,初三初四以后走其它亲戚
8.元宵 晚上要把所有的灯都打开,很少吃元宵。一般会有玩龙舞狮的在集镇上挨家表演讨钱。

谣言

第一条来自 @7starzz 的推 https://twitter.com/7starzz/status/21976962537
2010-08-30-161859_625x393_scrot

这条推被官推27次,rt没法统计,在我的TL上至少出现过10多次吧。这条推是823的第二天下午1点多发出的,内容很劲爆,用很确定的口吻。在这个时间出现,很容易煽动中国人的民族情绪吧。

我来分析一下为什么我认为这是一条赤果果的谣言
1.经过google搜索"CNN證實三名香港人被菲律賓警方射殺"发现所有的消息都是这个内容,没有任何相关更详细的内容
2.CNN是否确实报道过这条新闻呢?电视我没看到,网上没搜到,CNN网站关于马尼拉823的报道在 http://www.cnn.com/2010/WORLD/asiapcf/08/23/philippines.bus.hostages/index.html ,有没有说人质是被菲警方射杀呢您自己去看好了
3.CNN凭什么能证实人质是被警方射杀的?能调查真相的只有菲警方
4.这条推发出的时间是24号下午1点半,调查有这么快么?调查需要做尸检,需要做弹道测试
5.如果在调查中真的发现有人质是被菲警方射杀,我相信有90%的可能性是会被隐瞒真相的
6.菲警方:弹道测试证明8人均系枪手打死

第二条来自 @guanda111 的推 https://twitter.com/guanda111/status/21584149871
2010-08-30-162340_623x431_scrot
关于湖南金浩茶叶致癌的消息相信大家都听说过了吧,来源即是此推。我不能肯定金浩茶油是否真的含致癌物质,但是网上的确没有任何第三方更详细的报道。
金浩自己出来辟谣了,我倒是真希望某个记者来点干货,真不知道还有什么吃的是安全的

第三条就是今年海地地震的时候,有消息称
联合国后勤支持部门日前表示,在海地地震中被埋的八名中国人是到访的代表团成员,不属于联合国海地维和人员编制,这个说法与中国公安部指八名遇难者是中国维和警察有出入。
消息来自联合早报 http://www.zaobao.com/zg/zg100124_004.shtml,这个网址已不可访问
我记得当时我就质疑这是个假新闻。当时我访问联合国网站上关于海地地震遇难人员的网站, 上面没有中国人的名字,但是也只有10多个名字,我认为只是遇难名单还在统计当中。
现在请访问 http://www.un.org/zh/memorial/haiti/index.shtml,上面明确地有联合国四位中国籍遇难工作人员

再说一个,就是很早一直传这两天又继续疯传的影帝离婚了。
我不确定这是不是谣言,但我认为可信度不高。
原因有两个:1.离婚对政治家的形象影响极大,特别是贵国 2.真的感情破裂了,对影帝这样的人物来说不一定要离婚 离不离婚并不重要

重装debian二三事

T40重装了下Debian,几个地方记一下

1.小红点的中键功能
把下面的东西写在 ~/.bashrc


xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation" 8 1
xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Button" 8 2
xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Axes" 8 6 7 4 5


2.google earch安装的时候提示

setup.data/setup.xml:1: parser error : Document is empty
^
setup.data/setup.xml:1: parser error : Start tag expected, '<' not found
^
Couldn't load 'setup.data/setup.xml'

根据 http://crunchbanglinux.org/forums/topic/7416/howto-google-earth-on-statler/ workaround如下
a) ./GoogleEarthLinux.bin --target /tmp/ge
b) cd /tmp/ge/setup.data/bin/Linux/x86/
c) mv setup.gtk setup.gtk2
d) cd /tmp/ge
e) sudo ./setup.sh

3.hotot这个twitter客户端很好,见 http://code.google.com/p/hotot

2010-08-08

macports小tips

1. 清理distfiles
sudo port clean --all installed

2.macports升级的时候老版本不会自动卸载,只是会自动变成inactive状态
可以用这个命令删掉所有inactive的包
sudo port -f uninstall inactive

2010-07-01

mac下用wireshark

先得 sudo chown youraccount /dev/bpf*,不然会没有权限使用端口

2010-06-01

nginx真是个怪东西

这几天和nginx杠上了

我的网络情况是 browser => proxy => nginx
proxy ip: 192.168.10.204
nginx ip: 192.168.10.10

proxy是用iptables做了个端口转发

iptables -t nat -A PREROUTING -d 192.168.10.204 -p tcp -m tcp --dport 22080 -j DNAT --to-destination 192.168.10.10:80
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -d 192.168.10.10/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.10.204 

理想的情况下,访问 http://192.168.10.204:22080 会被iptables转发到 http://192.168.10.10:80

然后我这里情况是:
访问 http://192.168.10.204:22080/index.html 正常
访问 http://192.168.10.204:22080/foo/index.html 正常
访问 http://192.168.10.204:22080/foo/ 正常
访问 http://192.168.10.204:22080/foo 被转向到 http://192.168.10.204/foo/

首先我排除是iptables的问题,认定是nginx配置的问题

官方的文档里提到有一个 port_in_redirect 的设置,on off我都试过,貌似都无效。

原来 nginx 很怪,据说是nginx不会自动在请求的最后加上一个slash,不会自动判断请求的是一个文件还是一个目录。这个我搜了一下没有找到官方文档的说法,但是搜索 nginx 斜线,都会提到需要 rewrite 一下,在请求的最后加上这个斜杠。

网上的资料都会提到是这样 rewrite 滴:

if (-d $request_filename) {
    rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}

但是呢,我这里死活都不起作用,转向的时候还是把端口丢了。

最后还是 @cnhacktnt 帮我调好了,就是 $host 变量把端口弄没了,改成了 $http_host 变量即可。

也就是变成了

if (-d $request_filename) {
    rewrite ^/(.*)([^/])$ http://$http_host/$1$2/ permanent;
}

感谢 cnhacktnt ,头痛了几天终于心情舒畅

2010-05-21

用php校验CIDR格式的IP地址段

用libpcap抓包(比如tcpdump)的时候可以指定网段,比如用tcpdump抓192.168.1.0网段的包,使用命令 tcpdump -i eth0 net 192.168.1.0/24,但是如果你输入了 tcpdump -i eth0 net 192.168.10/22,tcpdump就会提示 tcpdump: non-network bits set in "192.168.1.0/22"

那怎么校验 192.168.1.0/22 不是合法的呢,下面的代码就可以实现

function ipvalid($ip){
 preg_match('/(.+)\/(.+)$/', $ip, $array);

    //把ip段拆分成ip和掩码
 $ip = $array[1];
 $mask = $array[2];

 //掩码最大只能是32
 if ($mask > 32){
  return false;
 }

 //掩码为0时除非ip为0.0.0.0才合法,否则不合法
 if($mask == 0){
  if ($ip != '0.0.0.0'){
   return false;
  }else{
   return true;
  }
 }

 //掩码为32时不论ip是多少都合法
 if($mask == 32){
  return true;
 }

 $longip = ip2long($ip);
 $net_mask = 0xffffffff << (32 - $mask);

 //最后验证,代码参考libcap的源码
 if (($longip & ~$net_mask) != 0){
  return false;
 }else{
  return true;
 }
}