2012年最后一天了

这一年,工作,生活,都是惨不忍睹,健康问题更是每日折磨。

不多总结了,总之,这一年是人生谷底,希望明年会好一些。

周末去广州看了下眼睛,被医生确诊为玻璃体后脱离

有句话叫久病成医,自己的眼睛问题,仔细端量下可分为几个

  1. 视疲劳
  2. 干眼症
  3. 近视

眼睛后侧,视网膜处并没有神经,导致眼睛痛的主要原因,应该是视疲劳.

看到的各种絮状条状或点状的floater,大部分是玻璃体后脱离导致的,想必也有一部分拜干眼症所赐.在医院测的泪液分泌表明并不存在干眼症,分泌速度甚至比正常人还要快.我想应该是在电脑前时间太多,眨眼次数太少导致干涩感的.

最后,近视,每个眼睛的视力大致在0.5左右,属于中度近视,不算什么问题.我已经习惯性的不戴眼镜并熟悉了模糊的世界.

几个让人头疼的症状,一个是玻璃体混浊,近一年来floater一直增多,飘来飘去,令人很郁闷.另一个是小闪光点,由于玻璃体后面跟视网膜有些分离但还未完全分开,来回推拉视网膜,使得视网膜向大脑传送微小电流,产生出来满视野的小点.

主要的两点,视疲劳导致的疼痛和玻璃体后脱离导致的floater和flash,是最让人frustrating的.一度在纠结是否要辞职回家休养半年.

ps:关于玻璃体后脱离,这里有一篇很好的介绍文章

最近在mac写代码比较多,以前用windows因为眼睛不好,就写了个程序,每隔几十分钟提示休息下。对着mac也觉得有必要搞个类似的东西。
在windows下的主要思路是开个WM_TIMER,然后在系统托盘显示个图标,一直不退出在后台运行,到时间了就在桌面上打印出REST YOUR EYES之类的大字。开始也想在mac上照这个思路做。不过今天在shell敲着命令突然灵光一现,于是就有了下面的这几行bash脚本
[code lang=”bash”]
#!/bin/bash

while [ 1 ]
do
sleep 600 && say rest your eyes
done
[/code]
还是unix的shell功能强大啊,几行脚本就搞定了;-)
btw,mac下的say命令真的很好用,可以把文本读出来,自动合成的语音效果还不错,结合各种命令就能得到十分有意思的效果

之前写过的一个协议解析生成的程序,在windows下用gcc和lex&yacc编译,运行的很好,到了mac下很多问题,先是直接syntax error,仔细排查后发现是之前文件换行用的是CRLF,改了能解析了,结果直接给出个Segmentation fault,折腾了整整一个下午加半个晚上,在每一个值得怀疑的地方加打印信息,最诡异的是,两个函数里的指针的值相同,一个正常,另一个就access violation。
[code lang=”c”]

void* set_comment(struct Entry* ent,char* cmt)
{
strcpy(ent->comment,cmt);
if (strlen(cmt)>0 && cmt[strlen(cmt)-1]==’n’)
ent->comment[strlen(cmt)-1] = ‘\0’;
return ent;
}

void* struct_entry(void* st,char* name,char* arr,char* swname)
{
struct Entry* ent = (struct Entry*)malloc(sizeof(struct Entry));
char* tname = ((struct TypeDesc*)st)->tname;

strcpy(ent->tname,tname);
strcpy(ent->name,name);
strcpy(ent->sw,swname);
strcpy(ent->arrval,arr);

return ent;
}
[/code]
struct_entry里申请struct Entry* ent的内存,返回又被传到了set_comment里面,打印出来两个地址相同,在set_comment就直接指针访问越界了。
最后用gdb一步步调,打印出来两个指针之后才发现,两个指针都是64位的,其中一个被截断了
ent is 100102210
ent is 102210
一开始printf的时候用的是%x,只有后面四个字节,所以相同。
但是为什么会被截断呢,指针返回是64位,传来传去应该都是正常的。在yacc的语法定义里是这么写的
[sourcecode language=”plain”]
st ID arr switchval { $<pval>$ = struct_entry($<pval>1,$<pval>2,$<pval>3,$<pval>4); }
[/sourcecode]
每个地方都貌似不存在问题。在这个执行规约的地方打印,返回的pval确实被截断了,于是开始怀疑是返回值声明导致的问题,找啊找,才发现这个函数没有在头文件里声明,而该死的gcc居然直接链接了,默认C的语法,也许在c89之前,应该是允许不声明直接调用的,默认返回值是int,这个被编译器认为是32位的长度,所以被截断了。

mac是64位的系统,编译出来后,void*之类的指针都是8个字节,int是4个字节,long long是8个。

这个bug差不多算是最近一两年来最让我头疼的一个了,不过最终还是解决了,mac用久了,越来越上手了。

前段时间休了个年假,去西安逛了一圈。西安作为秦汉唐中国的都城,经历历史最强盛的汉唐,现在发展却很落后,名气虽大,经济实力只堪比二三线城市。

秦时遗迹,只有兵马俑一处,汉朝的痕迹也不多。历史太久,大部分多被冲刷殆尽。偶有几处也是现在重修而成。仅慈恩寺大雁塔为唐时建筑,相必也经历了多次重修。相对而言,留下的加上新修的还是唐代东西最多。比如大明宫遗址,大唐芙蓉园,骊山华清池等。

这几天多读唐史,对政要得失,任人用事,王朝兴衰,不免唏嘘感慨,有时岂止是一个国家呢,只要牵涉到一堆人做事,牵涉到层次结构,决策组织,都是一样的,历史有许多可借鉴之处。

历史上的皇帝行使权利,大致可分为几种,一种是弱势,比如光绪,一生活在慈禧的阴影之下,自己说了算的情况不多。另一种是中庸型的,有权利一般也谨慎行使,在任期间国家多半无事,也很少有人指责其好坏。这种在历史上占大多数。另一种便是强势皇帝了,比如汉武帝,唐玄宗,乾隆这些人,他们本身集大权于一身,在位期间国家都是各个朝代的巅峰时期,后世关于他们的故事、戏剧、小说也是最多的。

一个朝代能存在的长短,一般取决于前几个君主的个人能力和远见卓识,比如唐朝之前的,宋齐梁陈和隋,都是迅速更迭,存在时间不长。如果没有唐太宗早期开明统治,唐也存在不了多长时间,大唐盛世,太宗皇帝的功劳应该占多半,而玄宗恰好是那个运气比较的家伙而已。康熙之于乾隆也是一样,清早期政权摇摇欲坠,康熙先是除鳌拜获得实权,然后平定三藩,三征葛尔丹,以及统一台湾,雅克萨清除沙俄,一生勤恳努力,奠定了清朝基业,乾隆还是坐享其成居多。

国家强盛,皇帝大权在握,个人意志里,一些享乐有条件也有土壤去实现了。大修宫殿,广招嫔妃,四处游乐。现在我们电视剧题材最多的便是乾隆和女人的故事。

唐玄宗年轻时候还是很强势有作为,刚一上任便清除政敌太平公主,任命姚崇、宋璟,励精图治,以至有后来的开元盛世。可惜后来贪图享乐,后期的宰相李林甫和杨国忠,只会拍马屁搞政治,没有一个做事的人。后来的安史之乱,彻底给唐王朝打击。

玄宗皇帝五十多岁的时候,把自己儿子的妃子杨玉环召入宫中,之后便是把心思都花到这个女人身上了。唐王朝开始衰败,这也许是个起点,隐患随后慢慢显露出来。历史多次表明,一定要把女人跟政治分开,不然肯定会出问题,如果玄宗不把杨贵妃一家人提携起来,恐怕他们最后也不至于都死掉,安禄山起兵的理由就是讨伐杨国忠。政治最忌任人唯亲而不是任人唯贤,忠臣做事的人被排挤,小人当道,人心四分五裂。

个人思想教育很重要,比如太宗的长孙皇后,品行名垂青史,而杨贵妃却害得自己和整个家族都死掉,如果有一点自知之明,那就不止是她自己的幸运了,乃至整个大唐盛世,想必都能延续许多载。

杨国忠搞得当时朝政的混乱程度,从下面征伐南诏,可见一斑

侍御史、俞南留后李宓将兵七万击南诏。阁罗凤诱之深入,至太和城,闭壁不战。宓粮尽,士卒罹瘴疫及饥死什七八,乃引还;蛮追击之,宓被擒,全军皆没。杨国忠隐其败,更以捷闻,益发中国兵讨之,前后死者几二十万人,无敢言者。上尝谓高力士曰:“朕今老矣,朝事付之宰相,边事付之诸将,夫复何忧!”力士对曰:“臣闻云南数丧师,又边将拥兵太盛,陛下将何以制之!臣恐一旦祸发,不可复救,何谓无忧也!”上曰:“卿勿言,朕徐思之。”

“杨国忠隐其败,更以捷闻”,这样的人做宰相,不乱才不正常。玄宗这时候显得懦弱无能,可能是上了年纪,加上贪图享乐,没有年轻时候的奋发图强。

安禄山起兵造反的时候,玄宗还是控制的住局面的,而且颇有声势,如果没有杨国忠杨玉环这些人,应该很容易平定

上议亲征,辛丑,制太子临国,谓宰相曰:“朕在位垂五十载,倦于忧勤,去秋已欲传位太子;值水旱相仍,不欲以馀灾遗子孙,淹留俟稍丰。不意逆胡横发,朕当亲征,且使之监国。事平之日,朕将高枕无为矣。”杨国忠大惧,退谓韩、虢、秦三夫人曰:“太子素恶吾家专横久矣,若一旦得天下,吾与姊妹并命在旦暮矣!”相与聚哭,使三夫人说贵妃,衔土请命于上;事遂寝。

用杨国忠当宰相,想必是讨贵妃高兴,此举跟周幽王点烽火台逗褒姒一笑,本质并没有太大差别。不过盛世江山却因此葬送,做皇帝行事一定要深思熟虑才行。

当时人心大部分都还在唐王朝这边,哥舒翰帅二十万大军守潼关,关外又有郭子仪李光弼,因为杨国忠,玄宗一再犯错误,如果不命令哥舒翰出关攻打,也不至于最后仓皇出逃。

会有告崔乾祐在陕,兵不满四千,皆羸弱无备,上遣使趣哥舒翰进兵复陕、洛。翰奏曰:“禄山久习用兵,今始为逆,岂肯无备!是必羸师以诱我。若往,正堕其计中。且贼远来,利在速战;官军据险以扼之,利在坚守。况贼残虐失众,兵势日蹙,将有内变;因而乘之,可不战擒也。要在成功,何必务速!今诸道征兵尚多未集,请且待之。”郭子仪、李光弼亦上言:“请引兵北取范阻,覆其巢穴,质贼党妻子以招之,贼必内溃。潼关大军,帷应固守以弊之,不可轻出。”国忠疑翰谋己,言于上,以贼方无备,而翰逗留,将失机会。上以为然,续遣中使趣之,项背相望。翰不得已,抚膺恸哭;丙戌,引兵出关。

不信大将而信小人,人心已散,引用白居易的话,“九重城阙烟尘生,千乘万骑西南行。翠华摇摇行复止,西出都门百余里。六军不发无奈何,宛转蛾眉马前死。花钿委地无人收,翠翘金雀玉搔头。君王掩面救不得,回看血泪相和流”,玄宗皇帝最后连个女人都罩不住,实为可悲。

玄宗逃到四川,留下太子,太子登基后是为肃宗,新皇帝毕竟能聚拢人心,很快一帮人聚集起来,郭子仪带兵过来后更是声威大增,并借回纥力量夺回长安。

安禄山和史思明之所以失败,跟他们过于残暴不如唐王朝般施行仁政是有很大关系的,二者都是被自己儿子所杀,内部更是混乱自利,相互间还有斗争。

禄山闻向日百姓乘乱多盗库物,既得长安,命大索三日,并其私财尽掠之。又令府县推按,铢两之物无不穷治,连引搜捕,支蔓无穷,民间骚然,益思唐室。

行为奠定基调,并决定了能够走多远,向来都是得民心者得天下,决策虽然重要,底层的趋势会一步步把大方向引向他们。比如当初共*产#党搞的打地主分田地,加上当时腐败横行,经济崩溃,这些许诺和新国家的期望还是很诱人的,所以深得广大贫苦人民的心,以致最后内战之中在装备落后的情况下接连打胜仗。

国家兴亡,跟用人有莫大关系,玄宗早期任用一些贤相,把国家治理的井井有条,后期却一直相信奸诈小人,导致战乱四起。旧唐书里有一段评论:

国无贤臣,圣亦难理;山有猛虎,兽不敢窥。得人者昌,信不虚语。昔齐桓公行同禽兽,不失霸主之名;梁武帝静比桑门,竟被台城之酷。盖得管仲则淫不害霸,任硃异则善不救亡。开元之初,贤臣当国,四门俱穆,百度唯贞,而释、老之流,颇以无为请见。上乃务清净,事薰修,留连轩后之文,舞咏伯阳之说,虽稍移于勤倦,亦未至于怠荒。俄而朝野怨咨,政刑纰缪,何哉?用人之失也。自天宝已还,小人道长。如山有朽坏,虽大必亏;木有蠹虫,其荣易落。以百口百心之谗谄,蔽两目两耳之聪明,苟非铁肠石心,安得不惑!而献可替否,靡闻姚、宋之言;妒贤害功,但有甫、忠之奏。豪猾因兹而睥睨,明哲于是乎卷怀,故禄山之徒,得行其伪。厉阶之作,匪降自天,谋之不臧,前功并弃。惜哉!

评价很到位,当老大一定要用对人。不管是做皇帝,还是当老板。

我们现在做事也一样,不是靠拿考核奖金来压就可以的,一定要用对人,做对方向。不然搞得人心涣散,就是整天加班,也没有任何效率可言。有些人到处发邮件打报告,真正做事的人受到排挤,处处勾心斗角,这样的部门一定不能长久做下去,做事的人能走的必定会走光,剩下一帮写邮件拍马屁的人,老大就是再发奋再有志向又有什么用呢?

“以史为鉴,可以知兴衰”,偶尔读读史书也是一件乐事,可以从中看出很多东西道理。

2009年七月十九日,毕业来到这里工作,那时候恐怕怎么也不会想到三年后居然是这种心情。

人生总是出乎意料,是要有一些改变了。

左下角智齿,大二的时候开始长的,当时痛的睡不着觉,脸肿了半边。后来不痛了就再也没有去管过它,前段时间左边的磨牙开始疼,是隐隐作痛那种。去了医院,医生说要把智齿拔掉才行。

上周五去了趟医院,九点多,被告知没有号了,于是折返。周日七点半就到了,总算挂上了号,等到十点半,整整三个小时,总算排到了医生。拍了张X光,医生说我有四颗智齿,左下角的最为严重,已经把第二磨牙顶出缺口来了,必须拔掉,不然磨牙也会挂掉。

但是那颗智齿长得太歪了,拔掉的过程中可能会伤到神经,甚至是终生的,让我回去仔细考虑考虑。实在是纠结,不拔,有危害,拔,可能会导致下巴神经损坏,人生中的许多事情,都是这么错综复杂,动此则伤彼。

排队等候的过程中,看着人来人往,行色匆匆,医院是人类机器的维修机构,每一个人都有所诉求。焦急的心态,凝重的气色,看多了突然觉得有趣,亲身经历更能体会到媒体整天报道的我国医疗的不足。

一个苍蝇在窗口上飞来飞去,一次次的撞击向玻璃,晕头转向,徒劳无功。但是苍蝇却不醒悟,还是一次次飞过去。难道这种生物就没有学习的能力么?我记得看到过蚂蚁,同样在圆形的花盆边缘一圈又一圈的爬行,却不知道自己在兜圈子。可以说,蚂蚁和苍蝇的大脑是简单的,比我们用程序构造的有穷状态机,比如游戏里的怪物,高明不了多少,他们都没有学习和判断的能力,只是先天的被设置好状态,然后根据相应的输入条件执行跳转。

但是蚂蚁和苍蝇却拥有我们人类至今仍未用机器构造出来的东西,那就是它们的机械运动和控制系统。我们的机器人从来没有达到过半点蚂蚁们的灵活程度。蚂蚁苍蝇,在这方面上,和动物人类,都是共用一套类似的系统,只是我们多了一个高度发达的大脑而已。

这套运动系统普遍的存在与各种动物当中,最下层的,是执行某一个具体运动的肌肉,我们可以用电动机模拟它,但是,一个简单的动作,比如行走,如果考虑到各种颠簸不平的路面,对于机器人来说却是极其艰难,对于动物们来说这是轻而易举的事。差别到底在哪里?我们可以用预先编写好的程序代码来控制机器人的行走,预先考虑各种路面情况,判断受力大小位置,以及该如何行动。

动物们从来不理会这套。我突然意识到重要的一点,人生下来是不会行走的,要到很长一段时间才能学会走路。这说明了,走路这项技能,并非先天写进大脑中的,而是后天习得的技能。甚至不只是行走,比如各种体育运动,篮球,足球,都是经过长期锻炼才获得复杂的动作与操控的。这说明了,我们拥有的不是走路的技能,而是一套机制,这套机制保证了应对各种复杂情况的可能。

这套机制需要包含的一些东西,比如,适度控制不同肌肉块的力度,在时间尺度上线性或者各种二次三次或者各种各样曲线式的改变控制力度,这些操作控制连贯起来形成一系列的,有如音乐曲调高低起伏一般的控制脉冲,流向肌肉系统,从而形成各种动作。

还要有某种机制进行选择,比如什么样的脉冲组合是真正正确需要的,这些一般从形成的动作产生的结果,又形成的输入反馈中获得,如果被判定为正确,那么就强化,否则抛弃。

我明显的感觉到这套系统的存在以及对我们各种行为的影响,比如从体育运动中获得乐趣极大程度上就源自于此。甚至音乐给予我们的欢乐,虽然看起来不同,深层次看来也许同样是这套机制导致的。歌声是靠控制声带相关的肌肉产生的,跟跳跃走动,本质并无大异。

也许有一天我们能够通过机器人来实现这套机制,自学习,自适应,这种特点正是智能生命所拥有的一大特性。我们仍然停留在确定性程序的泥淖里,而计算机的通用图灵机的模型的限制在于,它依赖人进行编写。跟生物错综相连的神经元更类似的是可以动态组合的门电路,可惜我们还没有找到可以动态改变并强化他们的方法。FPGA是个好的开端,如果真正构造智能系统,抛弃对通用图灵机编写程序而转向门电路级别也许是明智的。

虽然智齿跟智慧没有什么关联,但却引发了我对智慧这么多的思考,实在是始料未及,世界上发生的毫无关联的事,总是可以找到一些方法关联到一起,每一事件都会对未来的发生造成影响,甚至每一个分子的细微扰动,让我们无法预测未来。

也许正是未来的不确定性才使得我们的存在具有了意义。