20101130

长见识

长见识

柳校长讲话,讲教育。
我坐第一排,困的时候看刘老师在那儿批C语言学生的报告。
一向对计算机系学生的报告心存偏见,就拿来看。

声明一:柳校长的讲话重要而啥啥。我困的原因可能是病理性的,只要不是我讲,
五分钟准睡着,不可控。

本着挑刺的心态读实验报告,当然不会放过每个暇疵。
实验目的、实验步骤、实验结果一如既往的缺少。
不过我挑的是另一个毛病,代码里,函数的声明放在了main函数之中。

我指出。
刘老师说,这是允许的。并补充道:这是声明,不是定义。

是的,C函数中不允许嵌套定义,但是我没有想到可以放个声明。
以前见的代码都是声明在最前,或者干脆定义也在最前。

我回家做了个实验,如下:

--------------------------
int main()
{
int foobar();
foobar();
return 0;
}

int foobar()
{
printf("test");
}

--------------------------

结果真的编译通过了。
长见识了。

我一想,然后我把
int foobar();
放在了
foobar();
之后。

即调用在先,声明在后。

结果也通过了。

这说明:不必声明?
我注释了
int foobar();

变成了这样:
--------------------------
int main()
{
foobar();
return 0;
}

int foobar()
{
printf("test");
}
--------------------------

结果依然能编译通过!

这说明:不必声明?

我就把这事放下了。

事前查了下,非官方的手册,在函数内的声明是允许的。其益处在于,可以局部
的声明函数,避免污染symbol空间。

今天坐校车,又见到了刘老师。
请教。

刘老师说:只有函数类型(返回值类型)是int型的,才可以不声明直接调用。

替换法告诉我们,一次只换一个部件。
当然……偶而也有同时出现两个知识点都不知道的时候啊。

又长见识了一次。

总结。

见识1. 函数可以在函数内声明。作用域在函数内。

见识2. int型函数可以不声明直接调用。

不过,作为代码规范,反对以上两条见识应用在项目中。

20101129

git pull all shell (故障定位经验)

git pull all shell (故障定位技术)
** git pull all shell
CLOCK: [2010-11-29 周一 00:00]--[2010-11-29 周一 01:12] => 1:12
*** 问题:更换了tortoisegit的key文件,命令行失败,要求口令。
*** 命令行报告需要口令。这说明privatekey错误。但是 git config -l 显示一切正常。
*** home目录下的key文件错误。以下是诊断的依据。git命令行使用了ssh,而tortoiesgit使用了putty
: $ ssh -v git@222.168.37.231
: OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
: ... 省略 ...
: debug1: Trying private key: /c/Users/ibm/.ssh/identity
: debug1: Offering public key: /c/Users/ibm/.ssh/id_rsa
: debug1: Authentications that can continue: publickey,gssapi-with-mic,password
: debug1: Trying private key: /c/Users/ibm/.ssh/id_dsa
: debug1: Next authentication method: password
: git@222.168.37.231's password:
*** 解决
**** 找到HOME目录
: $ echo $HOME
: /c/Users/ibm
**** 更换 id_rsa, id_rsa.pub 文件
***** puttygen -> Load an existing private key file -> Load,
读入tortoiesgit用的putty格式私钥
***** conversions -> Export OpenSSH key,保存到HOME目录下,名为id_rsa。
**** 9月4日,因为同一原因花了不少时间,且写了日志。唉。

20101125

老猫去看病

老猫去看病

老猫的名字就叫老猫,还在他吃幼猫猫粮的时候就是这个名字。如今九岁了,考
虑到野猫的平均寿命是三岁,已经成为货真价实的老猫了。

老猫前一段时间病了。屁股出血,涂在腿上的毛和地板上,很是恐怖。而且渐渐
开始绝食,后来滴水不进了。

我考虑到了各种可能。

吃了什么利器?家里没有。食物中毒?除了猫粮,他什么也不吃。虽然最近换了
新的猫粮,但又买了他喜欢的换回来。肠子出毛病了?……

我想起来几年前的小龟比尔・盖茨。它跟随我很多年,最后水污染埋在了大树下
面,还给它点了根香纪念。现在想想也许是因为蓝藻也说不定。

老猫毕竟是很大年龄了,要考虑各种可能性。接受建议去医院。

准备行动的那在上午老猫病得更重了,眼睛也很无神,屁股一碰就尖叫。必须得
去医院了。

其时,二猫正生着病,反复发烧,一直咳嗽。其时,妈下午的火车到达。其时,
单位下午召开所有教师必须参加的会议。

但是,我决定还是老猫重要。

查医院地址,电话咨询,准备纸盒子,打车出发。中午出发前我睡了一会,准备
迎接各种可能。猫妈准备了两三千元,说"应该够了"。我强开玩笑,"如果两
三千还不行,就不治啦。他也值不了那么多钱。"

老猫是2001年20元买的。而且也不是我花的钱,只是寄存在我这里。当时我百般
不乐意,规定猫不许上床,不能进卧室睡觉等等诸多条款。

最后,所有的禁止性条款都废除了,而且,我拒绝归还这只脾气很差的猫。从此,
我们开始了不懈地斗争。其间互有胜负。

下出租车的时候,我又开玩笑,"又一只猫钱出去了。"二十五元车费。如果算
上返回,那么,又多出一只猫。

如果算上他每个月的消费,已经可以买很多只猫了。各种很乖的,听话的,会爬
裤腿的,会蹭人的。甚至,能带出去溜的猫也能买得起了。

上楼。等医生上班。挂号。听一个女生絮絮叨叨讲她家的狗怎么着了凉。交费,
差点踩一只藏獒的尾巴上,它阴沉地看着我,被主人拽到一个角落里呜呜地示威。

医生开始检查老猫。

这家伙在家里很威风的,不仅这几天不让碰屁股,平时那也是难得允许抱一下,
百般挣扎和反抗才得亲近。在医院里,老猫完全呆住一样,摸屁股就摸屁股,掀
尾巴就掀尾巴,捅肚子就捅肚子。估计如果穿衣服的话,一定会配合地撩起来。

我想说"老猫,你不是挺有能耐的么",但是似乎一个字也没有说。

终于,医生说:"好象是屁股旁边有伤口。"

老大夫很瘦,一直抽烟,整个屋子里都弥漫着旱烟那种非常强烈的味。不过此刻,
他的皱纹看着也有几分可爱。

"也没有锋利的地方啊,从高处掉下来摔的?"

"老猫啊,你岁数大了,可不能再DESE了啊。"

洗肠,因为几天不排便了,猫还算老实。洗伤口,把烂了的腔打开引流,这家伙
在某个瞬间咬了我三四口,一排浅口子。然后被戴了伊里莎白圈,一直以为是防
舔伤口,没想到还能防咬人。我终于有机会说,"老猫,你不是挺有能耐的么。
你怎么不咬啊。"

后来又一次试图咬我,咔嚓一声咬在圈上。哈哈。

几天以后,老猫开始慢慢有了精神。每天上药、头几天打针,都可以开始顽抗了。

老猫,你又开始抢肝吃了,又开始到处散布猫毛让我鼻子不舒服了。所以我又开
始想你价值二十元,想那些没有买到的更可爱更听话的小猫们。

即使你那么便宜,即使能用你换很多听话可爱的小猫,可是,它们又怎么能让我
气愤让我与之不停地斗争。那些,又怎么能比上你的万分之一。

老猫,请永远活下去吧,陪伴我――我们还有很多事没有分出高下呢。