2009年12月30日星期三

手机早晚报 in语

>>最大的庸俗是装腔作势,最大的媚俗是人云亦云,最大的卑俗是顾影自怜。  >>婚姻不是1+1=2,而是0.5+0.5=1。即,两人各削去一半自己的个性和缺点,然后凑合在一起。  >>爱是苛求的,因为苛求而短暂;友谊是宽容的,因为宽容而长久。  >>与其讨好别人,不如武装自己;与其逃避现实,不如笑对人生;与其听风听雨,不如昂首出击。  >>男人心目中最好的女人,永远都是未知的下一位。  >>真正打动人的感情总是朴实无华的,它不出声、不张扬、埋得很深。  >>有些心事只能自言自语,有些秘密只能讲给朋友。有些痛苦只能默默承受,自己还是要靠自己拯救。  >>不要为别人比自己优秀而感到惭愧。去年的自己比今年的自己优秀才令人惭愧。 >>什么叫贵?就是不把富放在眼里;什么叫福?就是不把富与贵放在眼里。>>女人在丧失青春后,开始追求品味;男人在丧失青春后,开始追求别人的青春。  >>晚上想想千条路,早上醒来走原路。  >>一个成熟的人往往发觉可以责怪的人越来越少。  >>能控制自己感情的人,比能拿下一座城市的人伟大。 >>相爱并非最难,相处才是最大的挑战。  >>女人的可爱在于性情,不完全取决于智商,完全不取决于美丽。 >>上了年纪最大的好处就是:年轻时得不到的东西,现在不想要了。  >>幸运的女人找到了一个大骗子,骗了她一辈子;不幸的女人找到了一个小骗子,骗了她一阵子。  >>别以为我还爱你,我爱的是曾经的岁月。  >>行情总在绝望中诞生,在半信半疑中成长,在憧憬中成熟,在希望中毁灭。  >>说金钱是罪恶,都在捞;说美女是祸水,都想要;说高处不胜寒,都在爬;说天堂最美好,都不去。  >>模范丈夫-模范不模范媳妇说了算,老婆想吃饼俺就爱稀饭,夫人一瞪眼立马靠墙站。  >>夫妻之间谁说得话越多,谁的话就越没分量。  >>适当地悲伤可以表示感情的深切,过度地伤心却证明智慧的欠缺。  >>漂亮的女人悦目,成熟的女人悦心。  >>恋爱就像打喷嚏,不经意总能打出来,刻意要打时却总是打不出来。  >>嫉妒犹如一只苍蝇,经过身体的一切健康部分,而停止在创伤的地方。 >>如果不能改变结果,那就完善过程。 >>人生的舞台没有假装这一说--每个人迟早都会真的变成他日常扮演的那个角色。  >>再不成熟的尝试也胜于胎死腹中的策略。 >>回避现实,未来会更不理想。  >>只有多分几次手,才知道谁是你最爱的。 >>结婚的时候令人感到幸福,但婚姻生活会令人感到窒息。 >>现在衣服质量太差了,减肥的速度总赶不上衣服缩水的速度。 >>接近你就靠近心痛,离开你就远离幸福。  >>有时候,不是对方不在乎你,而是你把对方看得太重。>>高职不如高薪,高薪不如高寿,高寿不如高兴。  >>厌倦,就是一个人吃完盘子里的食物后对盘子的感情。 >>胆怯的人在危险前被吓住了;懦弱的人在危险中被吓住了;勇敢的人在危险过后被吓住了。  >>就算是believe,中间也藏着一个lie。 >>懒惰像生锈一样,比操劳更消耗身体。 >>让梦成真的最好办法就是醒来。 >>说真话的最大好处是你不必记住你都说过些什么。 >>有志者自有千计万计,无志者只感千难万难。  >>学会忘记是生活的技术;学会微笑是生活的艺术。 >>人无远虑,必有近忧;人有远虑,必无近乐。 >>什么是好工作:一不影响生活作息,二不影响家庭团聚,三能养家糊口。  >>通常愿意留下来跟你争吵的人,才是真正爱你的人! >>能用钱解决的问题都不是问题,可问题是我是穷人。  >>当所有人都低调的时候,你可以高调,但不能跑调。 >>学会忘记是生活的技术;学会微笑是生活的艺术。 >>人无远虑,必有近忧;人有远虑,必无近乐。 >>什么是好工作:一不影响生活作息,二不影响家庭团聚,三能养家糊口。  >>废话是人际关系的第一句。 >>女人就是麻烦,但男人就是喜欢找麻烦。 >>所有的人都站在一边并不一定是好事,譬如他们都站在船的一边。 >>所有的人都是平凡的,有些人因为知道这一点而真正成了平凡的人。 >>真正的爱情不是你知道他(她)有多好才要在一起,而是明知他(她)有太多的不好还是不愿离开。 >>这一年来,你是真的生活了三百多天,还是只生活了一天、却重复了三百多次? >婚姻的难处在于我们是和对方的优点谈恋爱,却和他的缺点生活在一起。
>>有智慧的人总是把嘴巴放在心里,而愚昧之人反而把心放在嘴里!   

2009年12月26日星期六

老妈蹄花

本来晚上想出去看《十月围城》,北京来寒流了,连我这个北方人都受不了了,太冷就宅在家了。

翻出来一部好久前下载的《老妈蹄花》来看。算是一部实景纪录吧。主要记录了谭作人因为调查统计四川512地震期间因为校舍质量不过关而致学生死亡事件和遇难人数,而在成都被起诉危害国家安全罪期间,艾未未联合一些NGO志愿者去成都为其作证。但在开庭前的一天,警察却在半夜三点来到他们的旅馆,以检查为名强行进入客房,并打了艾未未一拳,在无任何手续的情况下带走了一名重要的证人,且将剩下的十多人非法拘禁了十多个小时。谭作人案开庭审判时,所有的证人都没有到庭(可以想象他们是因为什么原因没有到庭)。之后艾未未、谭作人的律师和被抓证人的丈夫找涉案派出所依法律了解情况,再从被涉案派出所踢皮球一样踢到金牛区公安分局法制科,经过了和政委和法制科科长长时间的扯皮之后,最终得到了具体的消息。之后他们三人又来到市公安局提交了一个投诉,并在公安局门口因为拍了一张照片又与大量警察发生冲突。

我是没多大兴趣看的,女朋友倒是觉得很有意思。这片子从头到尾都是在扯皮,跟一堵"有时候有形,有时候无形的墙"扯皮。这种事情,这些嘴脸,这些手段,相必与任何政府官员打过交道的人恐怕都有所感受。

看完了还是有点感受的。
一是我们政府和美国政府的区别。我们政府是中央集权的,每一层官员只需向上一层官员负责汇报;而美国政府由于其历史和组织形式--联邦制,所以政府官员只需向自己下层民众负责即可,比如州一级的官员可以根本不用去鸟联邦的某些官员。而这进一步的深层原因是为什么?因为美国政府官员的权利来自于选民,而中国的官员呢?来自于上级的慧眼,所以我们的官只要伺候好上级就行了,没人鸟屁民的死活。

二是为什么会发生这种严重违反司法的事情?还不是因为没有三权分立,省长为了自己的仕途,让市公安局长压下这件事情,让法院不许让证人出庭,法院公安局敢不办么?更进一步,在欧美社会中被认为第四权的新闻舆论监督,同样在国内被政府卡得死死的,没有一点新闻报道的自由。同样,作为一个中央集权的国家,立法也是及其缓慢。

三是我们的政府已经虚弱到了什么地步?连在门口拍张照片都要发生冲突。这说明了政府多么不自信,多么虚弱,彻底的纸老虎。总是说警力不足,警力这么不足,因为警察都被排出去"维稳"了,"和谐"了。

艾未未:你丫就是一个混混!
NB啊,官员都是尸位素餐,油嘴滑舌,拿着法律武器干违反法律精神的事情。

对这个政府,已经彻底没有什么希望了,有本事的还是赶紧移民吧



2009年12月17日星期四

我家门口也要通地铁/轻轨了!!!

http://home.rails.com.cn/2j/news/mj.asp?ID=1476&AClassId=1&ANClassID=4
http://www.ditiezu.com/viewthread.php?action=printable&tid=77976

负责西郊线环评工作的铁科院环境评价与工程中心的孙成龙透露,目前,西郊线定位已经改变,不再兼顾沿线交通疏解功能。因此该线路走向不再经过闵庄地区。沿线主要经过香山、北京植物园、香泉环岛、万安公墓、玉泉郊野公园、南水北调公园、地铁10号线巴沟站等地区。

    公示显示,调整后的西郊线全长9385米,全线设车站7座,即香山站、植物园站、万安公墓站、玉泉郊野公园站、颐和园西门站、颐和园南门站、巴沟站。其中,换乘站两座,万安公墓站与轻轨L6线换乘,巴沟站与地铁10号线换乘。

    在未更改前,西郊线拟于2010年底建成通车。更改后,拟于2011年底全线建成通车。

西郊线起于香山路4号停车场,设香山站,而后沿香山路南半幅路向东,过香山南路后由路南侧转向东,在植物园大门东西两侧设分列式车站。出站后由香泉环岛转 向旱河路,沿规划旱河路路中向南,在万安公墓处设万安公墓站。在万安东路路口,线路转向东,沿万安东路南侧绿地敷设,穿过茶棚村后进入规划玉泉郊野公园, 设玉泉郊野公园站。线路在公园内穿行,在北坞村路前,线路转向南,下穿北坞村路后,沿北坞村南街南侧绿地向东,在规划金河路转向南,设颐和园西门站。出站 后沿规划金河路西侧向南行进,同时线路穿过南水北调公园,在金河路终点设颐和园南门站。之后转向南,采用高架桥上跨四环路,然后沿四环路南侧转向东,上跨 蓝靛厂北路和京密引水渠后,由巴沟路到达终点巴沟站。

L6线应该是万安公墓---新宫,途径玉泉路等地。


douban.fm

豆瓣也推出收音机服务了,实际上是一个flash。
最开始你设定几个你喜欢的歌手,豆瓣就会根据你的喜好(或者大家的喜好)一首接一首不停地放下去。
比较简陋,不能添加特定的歌曲,只能是他放,我有三个选择:
1,听下去
2,跳过此歌曲,听下一首
3,关掉收音机

提供类似服务的国内还有1g1g.com,我觉得1g1g更好一点,可以搜索歌曲并加入列表播放。

不过douban有那么多人的喜好数据,应该能提供更加准确的喜好相似性度量。
比如1000个喜欢听周杰伦的《千里之外》的人,从数据看有900人同时喜欢听宋祖英的《辣妹子》,于是我就可以在播放完《千里之外》后,再播放《辣妹子》。
整个播放过程就是一个Markov Chain啊,呵呵

归根结底,这年头,数据为王。

2009年12月16日星期三

《绅士和码农》 转载

看了此文,才知道为什么拉布拉多是一个特别能救溺水的人的犬种。

http://blog.csdn.net/yuankaining/archive/2009/06/07/4249528.aspx

话说打猎这回事儿,放在几百年前的英国,那可是无比地风光,并且无比地简单。

为什么说简单呢?难道猎人不需要学习许多技巧么?难道打猎过程中的寻找猎物、发现猎物、跟踪猎物,最终杀死猎物,这些事都没有难度么?嗯,如果猎人是独自 出行的话,那么所有的这些事情肯定需要DIY了,而且肯定很艰难很劳累。所幸英国猎人都是绅士,绅士都是不自己动手的。绅士们都养猎犬(Hounds) ――猎犬不是普通的狗。猎犬是独擅专精的狗,是有大局观念的狗,是有团队协作精神的狗。

让我们来考察一下在打猎过程中,猎犬是如何工作的。

要打猎当然要寻找到猎物。嗅猎犬(Scent Hounds)、指向犬(Pointers)和蹲猎犬(Setters)就是专门来找猎物的。嗅猎犬是用来追踪像鹿和狼一类的猎物的味道的,其中最厉害的 寻血犬可以追踪十几天以前的猎物的味道。巴吉度就是一种出名的嗅猎犬(休闲品牌的老祖宗"暇步士"的商标就是一只巴吉度)。指向犬一般用来猎捕飞鸟,它在 找到猎物时会笔直地站立,并将鼻子指向猎物的方向,一动不动地等着猎手前来查看;蹲猎犬在找到猎物后会蹲下不动并保持安静,等待猎人的进一步指示。蹲猎犬 是用来寻找鹌鹑和野鸡之类的猎物的,所以蹲下不动是合理的。

找到猎物之后,根据猎物种类的不同,有不同的处理方式。如果发现了鹿和狼之类的猎物,狩望猎犬(Sighthounds)就要上场了。狩望猎犬根据狩猎目 标的不同分为猎鹿犬、猎狼犬和猎野免犬等。著名的灰猎犬(Greyhounds,灵缇)就是狩望猎犬。一般来说,狩望猎犬有尖尖的嘴,小小的耳朵,短短的 毛,细长的腿,和发达的胸腔(心和肺),所有的这些都是为了能够敏捷而长久地奔跑。狩望猎犬能够紧追猎物不放,耗尽猎物的体力,并在追逐的过程中咬伤和杀 死猎物。狩望猎犬就是一般人概念中的那种"追着受伤的小鹿不放"的猎犬。如果发现的是鹌鹑和野鸡之类的猎物,蹲猎犬可以进一步接受指令,将猎物激飞 (Flush),从而给猎人举枪瞄准的机会。激飞猎犬也能做到追踪和激飞这两件事,属于竞争上岗者。

在杀死猎物后,狩望猎犬和蹲猎犬的任务就结束了。这时候需要寻回猎犬(Retrievers)上场了。寻回猎犬中有两种很出名的猎犬,金毛寻回犬和拉布拉 多寻回犬。寻回猎犬的作用很简单:将死去的猎物衔回到猎手身边(有意思的地,很多寻回犬的饲养者却并不知道)。金毛寻回猎犬是用来在陆地上寻回的,拉布拉 多是用来寻回水中的猎物的(比如野鸭子,一般中弹后都是掉在水里的)。寻回猎犬需要有足够强壮的身体,并且对人友善。在打猎的过程中寻回猎犬需要安静,在 寻回的过程中不能咬坏猎物(的皮毛)。这些特点使得它们在无猎可打的今天变成了绝佳的宠物犬。在美国AKC注册的犬只名单中,十几年来,一直都是拉布拉多 排第一,金毛排第二。

有些猎物生活在洞穴中,比如狐狸、兔子和獾。众所周知,对付不寻常的敌人需要不寻常的手段。梗犬(Terriers)就是用来对付穴居的动物的,它能够封 堵、活捉或者杀死穴居的猎物。因为需要和泥士打交道,一般梗犬都需要有短而硬的毛。实际上,梗犬的名字就是拉丁文的"泥士"(Terra)。著名的达克斯 猎犬(Hachshund,又名腊肠犬)就是专门用来猎獾的。短小的四肢让达克斯猎犬能够钻入到洞穴中将獾赶出或者杀死。另外说一句,獾是一种凶猛的动 物。能够杀死獾,说明了腊肠犬的凶猛。所以不要指望作为宠物饲养的腊肠犬的脾气能好到哪里去。

打猎的绅士们很幸运,因为他们有猎犬作为帮手,自己基本不需要动手,或者只需要扣扳机而已;写程序找臭虫的程序员们很不幸,因为他们所有的事情都需要亲历亲为,"一切全靠自己的双手"。

这就是绅士和码农的区别。

如何快速检验两个字符串是否循环相等?

http://groups.google.com/group/pongba/browse_thread/thread/ef768fca7ff84cad?hl=zh-CN
The input is two strings of characters A = a1a2...an and B =
b1b2...bn.Design an O(n) algorithm to determine whether B is a cyclic
shift of A. In other words, the algorithm should determine whether
there exists an index k, 1<=k<=n such that ai = b(k+i)modn, for all i,
1<=i<=n.

很郁闷,groups好像都被墙了,反正我在任何地方都上不去。

答案如此简单:
KMP匹配。
把AA串写两份,a1a2a3...ana1a2a3...an
拿B串去匹配。


matrix67写了一篇很详细的KMP算法介绍
http://www.matrix67.com/blog/archives/115

提到了字符串匹配的其他方法:suffix tree (很多地方用到了的,差分算法里) 和 自动机(好像est大神在blog讲过)
唉,不懂的东西太多了

如何加速strlen函数的执行

strlen函数很简单,一个byte一个byte比下去就可以了。
但是如何能够加速呢?
看到了http://tsunanet.net/~tsuna/strlen.c.html
很神奇,说实话代码我没看懂。不过大概思想是明白的,就是4个byte组成一个int数,通过check这个int数判断这其中是否有\0。

不禁让我想起了那个计算一个int数的二进制表达有多少个1的快速算法:
分别取奇数位和偶数位,然后移位对其相加。
再取 得到这个数 的以2位为单位的,移2位,相加。
再将 得到这个数 ,移4位,相加。
依次类推……

好像来自《编程之美》

由printf看到的

原文在这里(http://www.newsmth.net/bbscon.php?bid=745&id=89605

主要就是一个人测试printf,形参明明是一个short型,他非要用long long这个型的指示符去读取,竟然没错,他觉得很不可思议。

通过底下的讨论,逐渐看明白了几件事情。

1. 可变参数的函数 (如scanf, printf ... ),他们在传递函数时,会做函数的类型提升,不够int大小的提升到int大小。
RoachRock大牛如下说:
☆─────────────────────────────────────☆
  RoachCock (我的饭盒我的饭) 于  (Sun Nov 29 19:33:04 2009)  提到:

标准规定的,对于编长参数,小于 int 的整数类型一律提升成 int,
这个例子就是,传了一个 int(4 byte),作为 long long(8 byte) 来读取,
在 x86-32 下就会出错。在 x86-64 下,虽然也是传递了一个 int,因为
x86-86 的寄存器宽度是 8 字节,堆栈的单位也是 8 个字节,所以运行时
每个参数又实际占用了 8 个字节(高四个字节空着)。
http://msdn.microsoft.com/zh-cn/library/ms235286.aspx
www.x86-64.org/documentation/abi.pdf

2. 对于整数参数的传递,优先使用寄存器,其次才是压到栈顶。
RoachRock大牛如下说:
☆─────────────────────────────────────☆
  RoachCock (我的饭盒我的饭) 于  (Sun Nov 29 19:41:21 2009)  提到:

有函数原型的不需要提升。
x86 下,整数参数优先通过通用寄存器来传递,寄存器不够用才会用堆栈。
http://msdn.microsoft.com/zh-cn/library/9z1stfyw.aspx
VC 下,i 放在 RCX 寄存器中,占最低的两个高字节。

Linux x64 下也差不多:
http://www.x86-64.org/documentation/abi.pdf
3.2 Function Calling Sequence

这些参数本来是放在寄存器中,没地址的。
因为你要取地址,编译器只好分配几个局部变量,把参数从寄存器中拷贝过去。
你试试调整一下 printf 变量的顺序,或许发现地址没规律呢。
gcc -S 看一下就明白了。


☆─────────────────────────────────────☆
   Leimiaos (3WATER) 于  (Sun Nov 29 20:26:47 2009)  提到:

栈上不一定分配空间呀,寄存器不够或者递归才分配
对于小函数,寄存器传参可以很大程度上接近inline的效果,但是又不增加代码体积


需要开GCC的优化选项,这样就不会在栈分配空间,而直接通过寄存器传递参数。

☆─────────────────────────────────────☆
   RoachCock (我的饭盒我的饭) 于  (Mon Nov 30 11:39:35 2009)  提到:

是的,x86-32 下,传递 short 的时候,如果没有函数原型,会符号扩展成 int 放进
堆栈,%lld 回去读取 8 个字节,多取到的是没有意义的。