这词好美~
烟花三月
牵住你的手相别在黄鹤楼
波涛万里长江水送你下扬州
真情伴你走春色为你留
二十四桥明月夜牵挂在扬州
扬州城有没有我这样的好朋友
扬州城有没有人为你分担忧和愁
扬州城有没有我这样的知心人
扬州城有没有人和你风雨同舟
烟花三月是折不断的柳
梦里江南是喝不完的酒
等到那孤帆远影碧空尽
才知道思念总比那西湖瘦
烟花三月
牵住你的手相别在黄鹤楼
波涛万里长江水送你下扬州
真情伴你走春色为你留
二十四桥明月夜牵挂在扬州
扬州城有没有我这样的好朋友
扬州城有没有人为你分担忧和愁
扬州城有没有我这样的知心人
扬州城有没有人和你风雨同舟
烟花三月是折不断的柳
梦里江南是喝不完的酒
等到那孤帆远影碧空尽
才知道思念总比那西湖瘦
Sung By “Macy Gray”
Games, changes and fears
When will they go from here
When will they stop
I belive that fate has brought us here
And we should be together babe
But we’re not
I play it off, but I’m dreaming of you
And I’ll try to keep my cool, but I’m feenin’
I try to say goodbye and I choke
Try to walk away and I stumble
Though I try to hide it, it’s clear
My world crumbles when you are not here
Goodbye and I choke
I try to walk away and I stumble
Though I try to hide it, it’s clear
My world crumbles when you are not here
I may appear to be free
But I’m just a prisoner of your love
And I may seem all right and smile when you leave
But my smiles are just a front
Just a front, hey
I play it off, but I’m dreaming of you
And I’ll try to keep my cool, but I’m feenin’
I try to say goodbye and I choke
Try to walk away and I stumble
Though I try to hide it, it’s clear
My world crumbles when you are not here
Goodbye and I choke
I try to walk away and I stumble
Though I try to hide it, it’s clear
My world crumbles when you are not here
Here is my confession
May I be your possession
Boy, I need your touch
Your love, kisses and such
With all my might I try
But this I can’t deny
Deny
I play it off, but I’m dreaming of you
(but I’m dreaming of you babe)
And I’ll keep my cool, but I’m feenin’
I try to say goodbye and I choke (yeah)
Try to walk away and I stumble
Though I try to hide, it’s clear
My world crumbles when you are not near
(when you are not near aahh)
Goodbye and I choke (yeah, yeah, yeah)
I try to walk away and I stumble (hey, hey, hey)
Though I try to hide it, it’s clear (say it Lord)
My world crumbles when you are not here
Goodbye and I choke (I’m choking)
I try to walk away and I stumbe
Though I try to hide it, it’s clear
My world crumbles when you are not near
(when you are not near, yeah, yeah yeah)
Yeah, yeah..
林小峰同学在其博客上贴了一道智力题,我上次回复没仔细看题,还以为是老掉牙的称8个球的问题。刚才仔细一看原来不是,这题以前还真没见过。于是就仔细想了想,抱着“不走寻常路”的观念,花了15分钟本以为想出乐,结果发现其实不对。题目如下:
题目:有12个乒乓球特征相同,其中只有一个重量异常,现在要求用一部没有砝码的天平称三次,将那个重量异常的球找出来。 (尤其特别注意:是异常,但不知是轻了还是重了)
对比网上的答案又看了一下,发现以下两个问题:
1. 其实分4组是不可能称出来的。
2. 三步其实最多能从13个球中称出。
网上流传甚广的解法如下:
把12个球编成1,2……12号,则可设计下面的称法:
左盘 右盘
第一次 1,5,6,12 2,3,7,11
第二次 2,4,6,10 1,3,8,12
第三次 3,4,5,11 1,2,9,10
此法的巧妙之处在于,通过合理的安排三次称重中球的位置,使得不同的结果能够得出不同的结论。这似乎涉及到信息论的知识(香农老先生好伟大啊……) 。
如果我们把它抽象成数学来看,大体如下:
用一个12bit的数表示称量状态,第N(1<=N<=12)bit表示第N个球被选中来进行称量。
首先,我们必须分三组来称量,直观上来看,是因为3^3=27刚好大于12x2=24,通过裁剪我们有可能把27削减到24。而如果分4组,3^4=81,削减到24的可能性很小。(谁能给出准确证明?)
其次,若分三组的话,我们如何通过合理设计把结果可能性削减到24?最基本的一个要求不能动:就是每个球必须放过,即:每一位都至少被置过一次1,这样才能保证不会出现三次称量都平衡的局面。这样也把27削减到了26。还有两种情况应该也能排除,那就是三次均为左或三次均为右的情况,这很简单,我们只要保证一个球不是三次都在左边或右边就行。
好了,我们把上面的要求转化成数学。先是每次放法的数学表示,可以用这样一个二维数组,里面有三组元素,代表三次称量,每组又有两个元素,第一个代表该次称量天平左边放入的球,第二个代表右边的球。上面的两个要求就变成了:
u12_t balls[3][2] ;
balls[0][0] | balls[0][1] | balls[1][0] | balls[1][1] | balls[2][0] | balls[2][1]==0xfff
balls[0][0] & balls[1][0] & balls[2][0] == 0
再往下走就是对这些数的筛选和判断了。筛选很简单,每个数必须是12位上的某4位置了1,其它8位均为0。这样的数共(12x11x10x9)/(4x3x2)=495个。我们每次要从里面挑6个,来进行判断,判断的方法是:对于上面说的24种情况,其中一半又是对称。这12种情况中每个情况下得出的结果必须是12位上只有一位置1的数,它就表示处于该位上的球是异常球,而且还不能重复。操作过程如下:
1. 对于每组元素,要么取其第一元素,要么取其第二个元素,要么取这两个元素的同或(至于为什么是同或,就留给您思考了)。
2. 把上面得到的三个结果进行按位与。
3. 遍历完这12种情况,把每次得到的结果或起来。若是0xfff,符合要求;否则淘汰。
这样,一个程序的雏形基本上就出来乐,如果不再进行优化的话,大概要进行237832111537020次计算。有兴趣的同学可以用Python来完成整个程序。(友情提示:Python里面的位操作和C里面的一样。)
王小敏同学昨天给俺出了道题,还非得要求用C,结果差点儿没累死……换我们可爱的Python,结果一会儿就搞定了。题目是这样的:
“有一个3x3的矩阵,现在要往里面填9个不同的数字。唯一的要求是:相邻的数字相加不能为质数。注:数字的取值范围为:1~N。(N为一个>=10的数)请用程序解出尽可能多的符合要求的矩阵。”
俺穷举了一把,就得出结果乐~~我的程序如下:
def Perm(items, n=None):
if n is None:
n = len(items)
for i in range(len(items)):
v = items[i:i+1]
if n == 1:
yield v
else:
rest = items[:i] + items[i+1:]
for p in Perm(rest, n-1):
yield v + p
neighbors = [[1, 3], [2, 4], [5], [4, 6], [5, 7], [8], [7], [8]]
def IsPrime(x):
for i in range(2, x/2+2):
if (x%i == 0):
return False
return True
def WantIt(listobj):
for i in range(len(listobj)-1):
for j in neighbors[i]:
if(IsPrime(listobj[i]+listobj[j])):
return False
return True
enum = Perm(range(1, 11), 9)
for k in enum:
if(WantIt(k)):
print k
打住,这道题就到此为止吧。
接着说那令人心醉的patch。前几天做的一个patch提交了3次终于被Andrew给纳入-mm树了,呵,不容易啊!当中还正好赶上-mm树更新,不过quilt push一把居然没错!好险!要不今天也见不到akpm的确认邮件……说不定我还在那里痛苦地wiggle……
由于mm同学今天来不了,所以俺就闲得没事干了,又正好赶上-mm又更新,干脆又把内核编译一把。N个小时后,把我搜集的warnings打开一看,发了,N多。挑了其中两个好修复的,又提交了两个patch。欧也!
说patch不能不提我们的fmail,昨天一口气提交了N个patch,Carlos都给apply上了。我对Carlos的名字很感兴趣,其实他的全名是Carlos Daniel Ruvalcaba Valenzuela,太长了!貌似应该是俄罗斯人。
按照往年惯例,今年也准备自己去印个T-shirt。为了推陈出新,这次我拿出几个新颖的方案,希望大家各抒己见,多多发表自己的看法。
1. 冒充数学家
用此作为T-shirt图案最大的坏处就是怕被追问:“哥们,您这公式是啥意思?来,给你张纸,给俺证明一下吧?”……
2. 科幻派
啥都不说了,科幻粉丝都知道这是什么意思~
3. 实力派
(待定)因为没找到当初comp.lang.c上的那个很酷的签名,所以此方案暂时搁置……
如有其它更好的方案,还望不吝赐教!
这几天没写博客的心情,不爽~!
大忙了一阵子,突然闲下来了,还不适应,不爽~!
虽然手头有N多活要做,可不知道该怎么下手好,不爽~!
做了几个小玩意儿(U盘上的Ubuntu,xylftp的rpm包),比意料中简单狠多,不爽~!
陷入读内核源代码的汪洋大海,没什么头绪,不爽~!
邀请某MM中秋节来我们这玩儿,人家来不了,不爽~!
以前见到的一个长得很酷的MM最近一直没见到,不爽~!
大周末的我还在这里闲得写这篇博客来列举我的不爽之处,不爽~!
总之,不爽~!
某MM做滴~~就当我博客的广告板了~~
1. inet_addr()是遗弃的函数,最好不要使用,因为它不能很好地处理错误。ping 255.255.255.255就是由此引发的问题,
因为inet_addr()会把255.255.255.255当成-1!
2. inet_ntoa()使用的是静态缓冲区,因此不是线程安全的函数。而且,inet_ntoa()使用一个结构体类型做参数,而不是指向该结构体的指针。这种情况很少见。
3. 系统调用被中断的一个例子:当父进程在等待accept()时,收到了子进程死亡的信号SIGCHLD,而转去处理这个信号。
此时如果不做处理,系统可能会自动重启这个系统调用,也可能会返回错误EINTR。
4. SIGKILL和SIGSTOP是不能被捕捉的,也不能被忽略。
5. UNIX文件中的change time和modification time不是一个概念。 如果我们使用chmod a-w myfile',这是一个change;如果我们用
echo foo >> myfile’,那这是一个modification。change修改的是文件的inode;而modification修改的是文件本身的内容。 文件的modification time也被称为时间戳(timestamp)。只读取文件会改变文件的access time,但不会改变上面提到的两个时间。
6. POSIX规定,select的第5个参数应该是const的,但Linux并未这样实现。Linux会修改这个struct timeval,来反映没有睡眠的时间。
7. 收到FIN之后,进程仍然可以向该socket写数据,但会收到一个RST。如果一个进程在收到RST之后,仍然向此socket里写数据,它就会收到一个SIGPIPE信号。该信号的默认处理方式是终止这个进程。所以进程必须能够捕捉到这个信号来避免意外的终止。如果进程捕捉到该信号并返回,或者直接忽略这个信号,写操作会返回一个EPIPE。通过第一次写操作,而不是第二次,是不可能得到SIGPIPE信号的。
这本该是昨天的文章,因为昨天拨号没拨上去,只能搁到今天了。
我们不是CCTV,CCTV整天报道得就像已经进入共产主义社会似的,会议没有不隆重的,闭幕没有不顺利的,领导没有不亲切的……
虽然两位嘉宾和老师们对这次活动评价都很好,但这里我就不说好的,专挑这次活动的几个不足之处说。毕竟我这是头一次组织这么大型的活动,没任何经验,总结一下不足,以备以后改进。
最大的不足,我认为,应该是我们对“自由软件”和“开源软件”的区别认识不够,基本上是混为一谈。听了徐继哲先生的讲话后才明白了些许。徐先生对这点表示遗憾,说要不是因为这他还可以把我们这次活动传到FSF上去。
其次就是发T-shirt,一是发T-shirt时现场过于火爆,场面稍稍失控,主要是低估了那些T-shirt对同学们的诱惑力;二是我们太大公无私了,最后连我们自己都基本上没拿到什么礼物。没事,我们自己做!“自己动手,丰衣足食!”哈哈!
最后一个不足,应该是王开源先生的演讲太过官方化,没把他在底下和我们讲时那种气氛弄出来,让不少人失望了,而刘洋兄更是乱了阵脚。
能举办这次活动要感谢很多很多人,抱歉,这里很难一一列举。我只想特别感谢的是杨爽老师,没她的鼎力协助不可能有这次活动!我也没想到她那么厉害,院里的几个领导她都可以帮忙说服,不愧是韩老师的得力助手。这让吾不得不佩服。
BTW1:我们邻班一个吴姓女生竟然拿到了一个Python的T-shirt,不过过后让我忽悠过来了,代价是让我请她和她男朋友吃顿饭…… 我估计这钱都够我买一件的了……
BTW2:董溥同学好幸运啊,晚上拜访徐继哲先生时,王开源先生一听说我们没拿到T-shirt竟然当场把自己穿的脱给了董溥同学……我当时都愣了……