Saturday, January 28

被放大的纠纷:香港地铁纠纷

香港地铁上,大陆一家人:小孩吃东西,弄到地上,大人也吃了一口(录像里大人说捡起小孩掉的吃),在这种情况下,香港男在旁边说一句:你看,这上面写着,在地铁里不能吃东西。然后大陆人停止吃东西。于是,这件事情应该就这样完美解决了,多开心啊。

可是,纠纷还是激化了,香港男叫来地铁工作人员,这时候录像开始拍摄:香港男向地铁工作人员控诉大陆人吃东西,地铁工作人员让大家到外面去,大陆的妈妈道歉解释,忽然一个大陆小姨子发飚,很泼妇,很失态。

其实,这个过程跟多年前流行的段子《多余的一句话》差不多:
我有一个重大的发现,就是当人们发生冲突的时候,其根本原因并不在于各自主要都说了些什么。原因是什么呢?我发现是大家在说完所想要说的话之后说的最后的那句话。没有这句话,大家其实都是在很友好地交流,而一旦加上了这句话,交谈就变成了吵嘴,并且会愈演愈烈,最终局面无法收拾。问题在于,这句话的内容往往和大家要说的事情毫不相干,所以,我把它称为“多余的最后一句话”。

  举个例子吧。

  我那天坐公共汽车去办事,车上人不多,但也没有空位子,有几个人还站着,吊在拉手上晃来晃去。一个年轻人,干干瘦瘦的,戴个眼镜,身旁有几个大包,一看就是刚从外地来的。他靠在售票员旁边,手里拿着一个地图在认真研究着,眼里不时露出茫的神情。估计是有点 儿迷路了。他犹豫了半天,很不好意思地问售票员:“去颐和园应该在哪儿下车啊?”售票员是个短头发的小姑娘,正剔着指甲缝呢。她抬头看了一眼外地小伙儿,说:“你坐错方向了,应该到对面往回坐。”要说这些话也没什么,错了小伙儿下站下车马路对面坐回去呗。 但是售票员可没说完,她该说那多余的最后一句话了。“拿着地图都看不明白,还看什么劲儿啊!”售票员姑娘眼皮都不抬地说。

  外地小伙儿可是个有涵养的人,他嘿嘿笑了一笑,把地图收起来,准备下一站下车换乘去。旁边有个大爷可听不下去了。他对外地小伙儿说:“你不用往回坐,再往前坐四站换904也能到。”要是他说到这儿也就完了,那还真不错,既帮助了别人,也挽回了北京人的形象 。可大爷哪儿能就这么打住呢,他一定要把那多余的最后一句话说完:“现在的年轻人哪,没一个有教养的!”我心想,大爷这话真是多余,车上年轻人好多呢,打击面太大了吧!

  可不,站在大爷旁边的一位小姐就忍不住了。“大爷,不能说年轻人都没教养吧,没教养的毕竟是少数嘛。您这么一说我们都成什么了!”这位小姐穿得挺时髦,两根细带子吊个小背心,脸上化着鲜艳的浓妆,头发染成火红色。可您瞧人这话,不象没教养的人吧,跟大爷还 “您,您”的。可谁叫她也忍不住非要说那“多余的最后一句话”呢!“就象您这样上了年纪看着挺慈祥的,一肚子坏水儿的多了去了!”

  没有人出来批评一下时髦的小姐是不正常的。可不,一个中年的大姐说了:“你这个女孩子怎么能这么跟老人讲话呢,要有点儿礼貌嘛。你对你父母也这么说话吗?”您瞧大姐批评得多好!把女孩子爹妈一抬出来,女孩子立刻就不吭气了。要说这事儿就这么结了也就算了, 大家说到这儿也就完了,大家该干嘛干嘛去。可不要忘了,大姐的“多余的最后一句话”还没说呢。“瞧你那样,估计你父母也管不了你。打扮得跟鸡似的!”

  后面的事大家就可想而知了,简单地说,出人命的可能都有。这么吵着闹着车可就到站了。车门一开,售票员小姑娘说:“都别吵了,该下车的赶快下车吧,别把自己正事儿给耽误了。”当然,她没忘了把最后一句多余的话给说出来:“要吵统统都给我下车吵去,不下去我车可不走了啊!烦不烦啊!”烦不烦?烦!不仅她烦,所有乘客都烦了!整个车厢这可叫炸了窝了,骂售票员的,骂外地小伙儿的,骂时髦小姐的,骂中年大姐的,骂天气的,骂自个儿孩子的,真是人声鼎沸,甭提多热闹了!

  那个外地小伙儿一直没有说话,估计他实在受不了了,他大叫一声:“大家都别吵了!都是我的错,我自个儿没看好地图,让大家跟着都生一肚子气!大家就算给我面子,都别吵了行吗?”听到他这么说,当然车上的人都不好意思再吵了,声音很快平息下来,少数人轻声嘀 咕了两句,也就不说话了。但你们不要忘了,外地小伙儿的“多余的最后一句话”还没说呢。“早知道北京人都是这么一群不讲理的王八蛋,我还不如不来呢!”

  想知道事情最后的结果吗?我那天的事情没有办成。我先到派出所录了口供,然后到医院外科把头上的伤给处理了一下。我头上的伤是在混战中被售票员小姑娘用票匣子给砸的。你们可别认为我参与了他们打架,我是去劝来着。我呼吁让他们都冷静一点儿,有话好好说,有 没什么大事儿,没什么必要非打个头破血流。

  我的多余的最后一句话是这么说的:不就是售票员说话不得体吗?你们就当她是个S B,和她计较什么!

这个段子流行了很久,起码2005年就登到人民网上了,当然里面记录的并不是一次真实的公车纠纷,而是作者从生活中的提炼:多次纠纷中的提炼。所以说,这样的纠纷并不是绝无仅有的,可说是生活中的普通一部分。

在录像中,能听见香港男说:“他们大陆人,就是这样的啦。”这句话被很多人各种解读,说香港人心中对大陆人有敌视,有歧视,有对抗。其实在这个段子中有很多类似的话:
引用:
拿着地图都看不明白,还看什么劲儿啊! (取笑外地人)
打扮得跟鸡似的!
北京人都是这么一群不讲理的王八蛋

甚至这个纠纷都闹得头破血流,到了警察局。所以这个纠纷(或者说这类纠纷)比香港地铁纠纷大得海里去了,怎么没掀起全国人民反省的浪潮?

这样的纠纷自来已有,现在出现,以后还不会绝迹。要我说,这次香港地铁纠纷引起的争论,还是一部分大陆人心里的自卑作怪,才会被别人一句话就伤害了脆弱的心灵,所以要竭力跳出来证明“我tmd就是比你强!”。

Friday, January 6

Music 谁会了解你的心

谁会了解你的心
词曲 王建房



独坐楼台观明月 一夜琴声弦泪落
曲未终 情已远 为谁相思泪空弹

清风酒香秋已然 声声低吟送清寒
月又圆 人不眠 谁知何日能婵娟

谁能了解其中味 谁会了解你的心
举杯邀明月 对影成三人 哎呀······

Saturday, December 31

CSDN password, and more

12月21日上午,CSDN网站部分用户数据被在网络公开。

此后陆续几天,天涯、人人、当当、凡客、卓越、开心、多玩等多家网站,相继被曝出密码遭网上公开泄露。目前网上公开暴露的网络账户密码已超1亿个。

有人调侃说,这是不是国安的黑客团队的期末考试?

我翻了一下这些数据库,有几点疑虑:
1,我本人的帐号不在里面。
2,现在这些帐号都无法登录网站。看来网站已经针对这批数据处理过了,必须用email“找回密码”功能,才能重新登录。
3,用这些密码去尝试那些email,我试了10个都不成功。上一次我拿到某个网站的帐号数据库之后,这个尝试的成功概率是35%。
4,最大的疑虑是:居然这些数据库用明文存储密码?小网站犯这种错误我能理解,但是天涯和CSDN都犯这种低级错误?这些网站的安全构架师都是吃干饭的?而且吃了这么多年干饭?!

我能想到的两种解释是:
1,这些密码不是从各自网站上泄漏的,而是从国安(或公安部,或工信部)那里泄漏的。官方规定这些运营论坛的商业网站都上交各自用户的密码、email,以便监控甚至插手管理各论坛。

2,这些密码不是真的密码,而是伪造的密码文档。但是这又解释不了各大网站都紧旗密鼓地宣扬这件事,这简直是杀敌壹千,自伤八百。除非这些网站在下一盘很大的棋...

既然连密码都保管不好,如果按照《北京市微博客发展管理若干规定》,实现网络实名制(所谓的前台匿名,后台实名),这些实名资料岂不是分分钟被暴露出来?

Sunday, December 11

Wordpress User Only page

4 years ago I implemented the same functionality but lost the source code. So I re-invented the wheel again. Maybe not the same way.

What I modified is adding 4 lines in the function get_the_content of wp-includes\post-template.php:
$content = $pages[$page-1];
if ( preg_match('/< !--more(.*?)?-->/', $content, $matches) ) {
$content = explode($matches[0], $content, 2);
if ( !empty($matches[1]) && !empty($more_link_text) )
$more_link_text = strip_tags(wp_kses_no_null(trim($matches[1])));
if ( !is_user_logged_in() ){
$content[1] = "Please login to view the content\n\n";
$content[1] .= wp_login_form(array('echo' => false));
}
$hasTeaser = true;
} else {
$content = array($content);
}

Looks easy.

Tuesday, December 6

中国的三种日历:公历、农历和干支纪年

公历:就是国际通行历,也叫做新历、阳历。其实它不是纯粹的阳历。只有以冬至(昼长日短)为1月1日,或者以夏至(太阳离地球最远)作为1月 1日,才比较正规。况且它的“月”跟太阳、地球的运作无关,跟月亮的运作也无关,中世纪时被几个罗马皇帝更搞得混乱。
农历:也叫做旧历、阴历。每个月固然是按照月亮的运作来定的,可“年”不是。中国古代天文历法家在每5年插入两个闰月,才让5年间的平均日数约等于地球绕太阳一圈的时间。然后他们再根据星辰的位置,其实也就是地球绕太阳一圈的各个方位,定下了24节气,以指导农时。所以农历是一个标准的阴阳合历,而不是阴历。
干支纪年:我把它叫做风水历。

话说2010年,家里又要添小宝宝了,房子有点小。所以又买了个大一些的房子。卖主够朋友,交房日前一个月就把钥匙给了我,随时可以搬进去了。

哪天搬呢?家里要了我和妻子的生肖八字,交给外公查黄历。结果:
农历五月跟我的生肖相冲;
农历六月没有好日子;
可是农历七月就是预产期了,总不能刚生下来就搬家吧?起码要过了满月。那样说来,岂不是我要把大房子空着4个月,在小房子里挤着,小宝宝睡不好,全家都无法安宁?

我花了两天,终于发现了:外公所说的跟我生肖相冲的“农历五月”,其实是“壬午月”的马跟我的生肖年相冲。而这个“风水历”里的“壬午月”跟农历五月并不是完全重合的,是四月二十四日到五月二十五日。再举个实例,今天(2011年12月6日,农历十一月十二)是风水历中己亥月的最后一天,明天就是庚子月的第一天。居然连我外公这样一个老中医,标准传统文化捍卫者,都漏掉了这一点。因此我找到了五月二十九日,癸未月 辛酉日,既不相冲,也是一个好日子,说服了他们,顺利搬了家,皆大欢喜,happy ever after.


这个“风水历”我没有搞清楚是怎么运作的,比如每个月多少天,但是它以立春为每年的第一天,所以它每年的天数与地球绕太阳一圈相同。你可能以为这个历法跟现代生活完全无关,你错了:

都说明年是龙年,是从2012年1月1日开始吗?当然不是,有正常思维的华人都笑了,这怎么可能呢?
那么,是从农历新年大年初一,2012年1月23日开始吗?
也错。这天是辛卯年 辛丑月 癸未日,还是“卯”年。
真正的答案是2012年2月4日,农历正月十三,壬辰年 壬寅月 乙未日开始。这才是“辰”年。
为什么这一天正好是立春呢?

Friday, December 2

Mark: Depixelizing Pixel Art




Mark it here so that I can implement it later:
http://research.microsoft.com/en-us/um/people/kopf/pixelart/

Thursday, November 10

话说马桶开关

当年,有人发明了“新式”马桶开关,利用水的浮力制造了一个延时关闭装置,只要一摁开关,水就哗啦啦得流,直到水流干净,装置才把出口关闭。这肯定是一个革命性的 发明,因为用户不再需要摁着开关放水。不客气得说,这种开关已经风靡全球了。

因为技术发展,特别是中国代工厂的技术上了台阶,再采用电脑技术模拟仿真,人们已经利用虹吸效应设计了节水的马桶,所需要的冲水量只有以往的四分之一、五分之一,所以已经不再如此需要延时开关;况且这个延时开关很容易出错(error prone),带子容易折断,橡胶塞子容易老化,长长的杆子带着那个大大的空气球占着很大空间...所以新的马桶开关不再采用延时开关,而是用最普通的方式:按下按钮,出口出现,冲水;一放手,水就停了。这样的开关几乎是永远不会有毛病的,而且有两个选择(对应大号和小号)控制排水量。

这是一种理念的进步。人麻烦一点,需要摁久一些,避免了复杂的设计,产品永不出错。越复杂的设计,引入的部件越多;多一个部件,出错的可能性就增加了几倍。

Tuesday, October 25

Registry Redirection, for 32-bit application in 64-bit Windows OS

Some people might have noticed, and some might not:

In Microsoft's 64-bit operation system, there is one "C:\Program Files\" folder and one "C:\Program Files (x86)" folder. 32-bit applications are placed in the second one. The tricky thing is, when the 32-bit applications internally are trying to visit "C:\Program Files\" folder, they are being redirected to the "C:\Program Files (x86)" folder. This is call "WoW64 File System Redirection". When the 32-bit applications are trying to access Windows\System32\ folder, they are actually accessing Windows\SysWOW64\ folder.

Microsoft use this "WoW64" approach to keep 32-bit applications in the same boxes with 64-bit application, and let the 32-bit applications access 32-bit environment (DLLs), not messing around the 64-bit environment.

Take a wild guess, what is the meaning of "WoW64"?

For registry, we have the same story. For example, there are registry path KEY_LOCAL_MACHINE\SOFTWARE\Microsoft, and HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft. When you run "regedit" in your OS, of course it is 64-bit application, so you can see both paths. When requesting "HKLM\SOFTWARE\Microsoft", a 64-bit application will get the content of first path, but a 32-bit application will get the content of second path.

If a 32-bit application wants to get the content of the first path, in the source code, it will need to open the registry key with extra KEY_WOW64_64KEY option:
RegOpenKeyEx(HKEY_LOCAL_MACHINE, path, 0, KEY_SET_VALUE|KEY_WOW64_64KEY, &hKey);

Note: Visual Studio, by default, is creating 32-bit applications, even when it is running in 64-bit operating system.

Yesterday I was too lazy to use "RegOpenKeyEx". I just want to call the external regedit.exe to import an existing Ben.reg file, as part of the configuration stage. The registry keys should be in KEY_LOCAL_MACHINE\SOFTWARE\Ben folder. I ran "regedit /s Ben.reg" a thousand times and the content is imported successfully. But when the same command line is called from my application, it reports "imported successfully" but the keys are not in the KEY_LOCAL_MACHINE\SOFTWARE\Ben folder. Of course now you know the keys are in KEY_LOCAL_MACHINE\SOFTWARE\WoW64\Ben folder, since the Visual Studio generated application is a 32-bit application.

After googling thousands of webpages, I found one working solution from Greg Domjan:

Add a class:
class Wow64RedirectOff {
typedef BOOL (WINAPI *FN_Wow64DisableWow64FsRedirection) ( __out PVOID *OldValue );
typedef BOOL (WINAPI *FN_Wow64RevertWow64FsRedirection) ( __in PVOID OldValue );

public:
Wow64RedirectOff() {
LPFN_Disable = (FN_Wow64DisableWow64FsRedirection)GetProcAddress(
GetModuleHandle(TEXT("kernel32")),"Wow64DisableWow64FsRedirection");
if( LPFN_Disable ) {
LPFN_Disable(&OldValue);
}
}

~Wow64RedirectOff() {
if( LPFN_Disable ) {
FN_Wow64RevertWow64FsRedirection LPFN_Revert = (FN_Wow64RevertWow64FsRedirection)GetProcAddress(
GetModuleHandle(TEXT("kernel32")),"Wow64RevertWow64FsRedirection");
if( LPFN_Revert ) {
LPFN_Revert(OldValue);
}
}
}

private:
FN_Wow64DisableWow64FsRedirection LPFN_Disable;
PVOID OldValue;
};

Then in the program, you define Wow64RedirectOff scopedRedirect; before calling the external program "regedit". You can wrap these 2 actions into one bracket so that scopedRedirect is being destructed right after the external program is terminated, and the WoW Redirection is being restored to normal.

Labels:

Friday, October 21

转贴:相声集锦

侯耀文 石富宽《火红的心》
http://www.tingcd.net/thread-1400-1-1.html

马志明 黄族民 《大保镖》
http://www.youtube.com/watch?v=SnmV2yOtuN0

马季 赵炎 王金宝 刘伟 冯巩 《五官争功》
http://www.youtube.com/watch?v=J96tQUfVgIE

苏文茂 赵世忠《论捧逗》
http://www.youtube.com/watch?v=njzpP-qA0DQ

高英培 范振钰 《不正之风》
http://www.youtube.com/watch?v=Aq6eE8GbrjU

高英培 范振钰《钓鱼》
http://www.youtube.com/watch?v=mvZTfdvC5O4

侯寶林 郭啟儒 《夜行記》
http://www.youtube.com/watch?v=vrQhHUVmNBk

刘宝瑞 《风雨归舟》
http://www.youtube.com/watch?v=ABQzwIbJido

马三立 王凤山《买猴》
http://www.youtube.com/watch?v=L4T-F692u0E

马三立 《逗你玩》
http://www.youtube.com/watch?v=cj2z49cFQHo

马三立 王凤山 《十点钟开始》
http://www.youtube.com/watch?v=IfliJ7jBSSs

黄铁良、尹笑声《托妻献子》
http://v.youku.com/v_show/id_XMTU3MzMyMDQ=.html

姜昆 李文华《想入非非》
http://www.youtube.com/watch?v=MtjWEnBJol0

姜昆 唐杰忠 《着急》
http://www.youtube.com/watch?v=fclvWIBY-Sw
====

王自健 徐强 《最近》
http://www.youtube.com/watch?v=jGV6QI-_GGM

曹云金,郭德纲《香水无毒》
http://www.youtube.com/watch?v=C01zGUQZTnU

郭德纲《白小平上坟》
http://www.youtube.com/watch?v=5nbiHEzhEcY

郭德纲 于谦 《托妻献子》
http://www.youtube.com/watch?v=kIznu5ZMSzA

郭德纲,于谦 《我是黑社会》
http://www.youtube.com/watch?v=oNqXNcHHLPM

方清平《幸福童年》
http://www.tudou.com/programs/view/l_VIw4_x6S0

冯巩 牛群《小偷公司》
http://www.youtube.com/watch?v=oeJv0wbHsMs

李金斗 陈涌泉《武松打虎》
http://www.youtube.com/watch?v=4G5fUiGoAiM

杨仪 杨少华 《肉烂在锅里》
http://www.tudou.com/programs/view/Np2bF9hiHdI/

赵伟洲 杨少华《危言耸听》
http://www.letv.com/ptv/vplay/798720.html

杨振华 金炳昶 《假大空》
http://v.youku.com/v_show/id_XMTUxMDA3MjA4.html

姜昆 唐杰忠 《虎口遐想》
http://www.youtube.com/watch?v=R-MvFdhTt-I

姜昆 李文华《祖爷爷的烦恼》
http://www.youtube.com/watch?v=pEilJTSVjtQ

马志明 黄族民 对春联
http://www.youtube.com/watch?v=zfpanLMSuWg

《卖挂票》 马志明 黄族民
http://www.youtube.com/watch?v=JgydYO9uvcA

《报菜名》 马志明黄族民
http://www.youtube.com/watch?v=Eys_-twcBGE

相声 太平歌词 北大版1 马志明 黄族民

http://www.youtube.com/watch?v=vPP_x9QR7cE

汾河湾1 苏文茂 王佩元
http://www.youtube.com/watch?v=1zIWWNpCK1k

《扒马褂》 刘宝瑞 马季 郭启儒
http://www.youtube.com/watch?v=3CKq3w4LCDk

每个链接上都有类似的相声。

Thursday, October 13

Four Strong Winds

Four Strong Winds, 我最喜欢的还是四兄弟的版本:

Four strong winds that blow lonely, seven seas that run high,
All these things that won't change, come what may.
四风吹,七海起。万物恒,永恒。

Well our good times are all gone, and I'm bound for moving on.
I'll look for you if I'm ever back this way.
我们的好日子已经结束了,我肯定要向前看。
真的要回来的话,我还会找你的。

Think I'll go out to Alberta, weather's good there in the fall.
I got some friends that I can go to workin' for.
Yet I wish you'd change your mind, if I asked you one more time
But we've been through that a hundred times or more.
我想,我会去阿尔伯塔省,那里秋天的天气还好。
那里有几个兄弟,我可以跟他们干活。
依然,我希望你能改变主意,如果我再问你一次,
但是我们已经讨论过无数次了。
[Chorus]

If I get there before the snow flies, and if things are looking good.
You could meet me if I sent you down the fare,
But by then it would be winter, not thing much for you to do.
And the winds can sure blow cold way up there.
要是我能在下雪前到那里,一切顺利的话,
会给你寄来路费,让你过来。
但到时候就已经冬天,没啥让你干的,
而且很冷。