2009年8月28日 星期五

无非是经历故事

    就算整个世界都改变,也不改变人生的追求。
    一个多月前,我来到这里,过着忙碌的工作和生活,这样的习惯对于我来说,丝毫没有任何的压力,因为我已经非常非常适应了,当然,那些工作也是我乐意干的。Linux内核,至少现在还是我很是想学习和精通的东西。兴趣广泛而已也有专攻都会让一个年轻人感觉自己有奋斗的目标。房子,车子,那些暂时我没想过,我要那么多钱干什么,生不带来,死不带去,人生只是为了经历而已,能不能帮助别人,让别人也起码生活在幸福中。
    岁岁年年,我们俨然已经不再是孩子了,好多以前老师教的东西你会不断质疑。我们在思考中,过多的让自己随波逐流了,不管是非,别人即使那么做是不应该的,但他们得到了利益得到了名声,我们为什么不能趋之若骛。浮躁和功利,我们把哪天住更大的房子,开更贵的车子,让更多的人欣赏你的成功作为目标,而不断地努力,为自己拼命地疯狂的工作找借口,或者为自己的违反规则开脱……我不想为这些工作和学习,主导的应该是我的兴趣。如果没有了兴趣,再多的利益我也将转向另外一个我认为会让我快乐,让我奋斗的地方。我知道,以前我真很可能不工作,我想我有能力自由的而且愉快地生活着。
    啦啦啦,我在这里经历故事,呵呵。

2009年7月1日 星期三

突然,我们失去了最亲的人

    为什么,他们竟然不再言语,悄无声息地离我们而去。

    他们还未年迈,他们生活有份憧憬,却遭受如此病痛。他们对儿女的期待啊,本应该在幸福中慢慢变老,可是,上天并不呵护他们,而让他们不断地挣扎,在混沌的痛苦中使劲回忆儿女的点滴。然后,这个世界,有时候生命不饶人,生命不珍重。您离我们而去,突如其来,叫我们如何面对。

    那个世界是什么样的,你们去的那个天堂。以后不再有叔叔您跟我们喝酒了,不再有爽朗的笑声了,我们兄弟姐妹们一起卖的东西您也不再来给我们建议了。我们,我们鼻子真的会酸,叔叔,您为什么要走那么快。

    叔叔,你走好,您的孩子很努力,会让阿姨一直好好的,愉悦的生活到老,还有我们这些您的孩子。祝您在新的地方也能高高兴兴,返老还童,过着无忧无虑的生活。我们爱您。

2009年6月21日 星期日

时刻坚信前进的方向

    在Linux Kernel Development Second Edition( By Robert Love) Preface那部分有一句话:Developing code in the kernel does not require genius, magic, or a bushy Unix-hacker beard.Robert Love写的书很幽默风趣,读起来"如沐春风".看这本书边看代码和码代码,不会感觉累,呵呵。


2009年6月18日 星期四

重要那是必然的

    如果我连英文都不能脱口而出,那么我怎么能理解别人的观点。如果我连看个文档都会因为卡壳N久,那我就不配熟悉文档。如果我再这样为自己推脱,那我还能做什么,俨然将无建树。如果我现在不现在反省自己,切实通过各方面途径用口学习英文,那我的目标将一日一日的离我而去。

    所以,我应该行动,而且以先进成熟的理念为指导!

    给自己半年,拼命干,不为自己找任何借口。

2009年6月12日 星期五

人走茶凉

    最后竟然感觉到一丝“人走茶凉”的寒意。

    当年,我想靠近你的时候,我总是我在自找苦吃。不过,那时候也刚上大学,大家也都习惯去适应大学新鲜的生活。之后,我遇到了至少是我一生最爱的另外一个人,而那个时候,我到现在都没再怀疑,前几天我们还有些联系。不过,这段感情,非常不幸,现实也逼迫,应该结束。生活也不是那么平淡,波澜迭起,只是,太短暂。不久后,生活的碰撞也曾多次发生,只是,没人认识她们,我身边的人也没必要知道。

    而那次考试,我想我当时根本没有其它意图,只是你的经历刚好和我的一样,而我记得那一的一段比较郁闷的日子,再加上我认识你。就基于这两个原因,我频繁地给你打电话安慰你,给你一些建议,当然,后面关于你自己人生方向的选择,都是你自己决定。再后面的有一天,你说你要在中国情人节那天要跑来我所在的这个城市,我并没表示强烈的支持,之后,即使因为一点小事你还是来了,我甚是记得那是奥运会中国男篮与美国男篮的比赛日。你当时说有男朋友,这个大家都是有晓得的。我知道我不应该牵涉你们之间的话题,这个我一向是秉承着这个原则的。那天,我们走了一天,挺累,我的脚都起泡了,那时候因为长期呆在实验室,不走动,所以,脚不是很舒服。其间我们有许多小动作,当然,那都是我恶心出的,这个不能否定。然后,晚上我们去吃饭,差不多凌晨我们才会去,之后发生一些很不愉快的事情。我们之间认知存在很大的差距。

    由于我的原因,第二天你直接跑回家了。大家生活还要继续,不是嘛。后面,我道歉,大家在遮遮掩掩中又有一些接触,再之后,我已经不太记得我们都说了些什么了。我告诉过你我心里想些什么,希望你认为那是真的,而且我不希望别人说我骗别人,这样压力很大,不好。再然后,某一天,我心血来潮,说我们做男女朋友吧,试试看,你可以否定我。你并没有表示反对,大家还算平和。不过,我们相隔有些远,而我又需要为实现我的东西,需要花费无限的时间。当时我也跟你说过,我说,关于打电话,还是不要那么频繁,短信偶尔就可以了。经历过真正感情的人,也许都有这样不太狂热的态度,还有一个原因是,我经常努力想哄你,但你经常你却并不怎么感冒,一直都是简单回应一下,比如说呵呵。打电话期间,百分之八十的时间都是我在说,请你开个话题还是比较难的。这样的交谈,感觉会稍微有一点无趣,当然,有时候我并不知道你理解不理解。

    就在那个学期,我们甚少联系,我很平淡地挂念你,但没至于很强烈,很淡很淡。我也习惯了,我也不再出去找刺激,那些不属于我,几年内,代码才是属于我的。就这样平庸着,努力着过了一个学期。今天,也就是2009年,我们终于在某些天再有出去散步的机会,不过感觉怪怪的,那不是拍拖的感情,呵呵,至少,颠覆了我所想的。

    再后来,我在学校里,又是“心血来潮”地在某一天说我们分手吧。我不觉得我们我们太投入,也不觉得我们彼此之间有多深感情。在我看来,是为了在一起而在一起,而在了一起后,又不知道我们在一起干什么。当然,我也考虑到我要毕业了,没必要浪费你的青春,你应该获得你本应该有的青春时光,而我,势必因为生存而要一番努力,暂时,你还不会体会很深。假如分手,我们能做个好朋友,起码以后的碰面或者交流都不会让人愤慨。我不希望这样的事情发生。

    后来,你问过我关于3G的一些问题,关于你要买一款手机的选择。我想,那时候我还是很有热情的。因为,分手会让我觉得我可以讲很多我不敢说的话,让我感到我很自由,没有什么约束。某一天你开了QQ,我习惯性地跟你打个招呼,比较久的才回,我发挥我一贯性地幽默打头阵,可惜,在你身上几乎没什么用,还是冷冷的两个呵呵,然后,我想等你的回答,但很难有,这个不是很好。接着,我说你是不是忙着拍拖竟然连我都不要了。当然,这个要,她应该知道,只是个玩笑。还没等她回答,我加了一句:看来我“英雄迟暮”就是这样惨烈的状态了,我要自嘲一下下,让我啊Q一下下。作为回应你让我感到很伤心很伤心的话:我真是不知道跟你说什么。

    其实,你没什么错,当初要不是我不这么随意,不要开头,就不会有这样的现在。何必呢,搞得这样。我当初刻没有吃醋的感觉,而且我是非常鼓励你找个男朋友。20多岁点的女生,还需要多经历点。而我,真的感觉迟暮了,有点伤感这样的结局不是我所要,我需要保持一个一般朋友的关系,只可惜,现在竟然连这个最基本的情况似乎都很难完成。人走茶凉,真的很难改变。

    哎,怎么说,还是要生活,还是要继续。有些伤感而已,罢了。



2009年6月6日 星期六

在于繁杂而不在于艰深

    Linux kernel的学习,在一定阶段,于是会有这样的一种感受:在于繁杂,但远远没有您想象的那么复杂。

    抛弃那些懦弱的恐惧,拿起别人奉献的代码,坚定地、不离不弃地阅读代码吧!等你开始渐入佳境,那时候,别人一直想的很可能因为没有努力而只是一个梦,而我们,因为我们的努力,那些东西迟早会来的,并且是悄无声息,自然而然的。,心急吃不了热豆腐,我们的眼光应放长远一点点,其实那也只需要专心一段时间而已,以后将变成习惯。

    繁杂中揪出你的原型。呵呵,继续前进。

2009年6月4日 星期四

隐形的翅膀

    我知道,我一直有双隐形的翅膀,带我飞,给我希望.

    即将离开校园,踏入社会。曾经有人告诉你,你要去外面看看,不应该闷在这里看代码,写代码。而那时的我,或许想问题还很简单,我只希望我能够足够地静心踏踏实实的做事。想做一些事情,是非常需要耐性的,即便你对这做这件事情很有兴致,要是对其没什么喜好的,恐怕只能是煎熬了。 我想问题更倾向于让问题简单,不想让它像大多数人一样让它变得复杂再复杂。你需要工作,需要完成你的理想,那么你需要有能力,能力怎么来,在学校里读书花时间学来,或者工作了再工作出来。我现在还在学校,我有什么,我有时间,那我有时间,我应该用来干什么?我尽量挤一点时间出来学习吧,当然,just for fun,学着学着,也就有这个的感受了。


    我很多同学都告诉我他们周围的人怎么厉害厉害法,赚了多少多少钱,做了多大多大的官。有些做技术的一年几十万,又是经理又是老板啊。可惜,那不是你,那只是你同学,你朋友,而你没有行动,不是你,也不是我。就基于这个简单得不能再简单的道理,所以,我应该心无旁骛,潜心专研。有些东西该来的迟早要来的,不努力,想让别人给你,很难,即使给你,你却不去消化,那不是别人的错,只能怪自己不够努力。

    于是,我坚信我正在走一条正确的路,虽然,这路很多弯,也经常撞入死胡同,但我能走回来,然后再开始上路,这就足够了,不是吗?

 

    曾经,我也觉得我身边有那样出色的朋友同学感受一阵自豪,也曾经经常挂在嘴边,有些是羡慕,有些是无奈,甚至某些情况下感到不公。作为一个冠以“公民”称呼的人群,需要竞争,以体现价值。但此刻的人民,已经趋向于抱怨这个病态的社会,公平无从说起。缺失公平,制度分账。在这样的风气下,更多的人选择顺从,但也有些人渐渐表现得并不是那么合作。我们的儒家思想让大家忍,我觉得这点是非常害人的。我们本来有的权益为什么我们不争取,一个时代需要公平,体现正义。大家都在说谎,如果哪天某些人处于觉悟不想说那么多慌了,试探性地说真话,然后,突然有一拨“鹰派”人开始没命地说你“一小撮”,说你破坏社会,说你不顾他人利益,然后有另一拨“社会阅历丰富”的人会劝你,社会本来就是这样,我们应该顺从,做好自己的事情就可以了,你看我们国家也繁荣昌盛,人民也有饭吃了,好多人都生活好了。有些事实我们应该承认,我们要鼓励,但是,坏的,假的难道我们就不应该改正?我们连去找“坏的”权利都没有了,即使有口头上的准许,但困难重重,总有太多的利益团体从中作梗。

    鲁迅已经不在了,但现在,以后将一直有这样不断奋斗的人。

2009年5月30日 星期六

还是老外大学好

    今天查资料的时候,无意间看到了一篇文章"世界最著名大学教育向我们开放了"。诸多大学的免费教育,哈哈,很是适合我们这样喜欢自学的人。以前我曾经下载过一个"算法导论"的视频课程,可惜我E文听力并不是很好,但那教授和助教确实跟国内大学比,似乎更让学生富有求知欲望,我很希望我们有那么的课程,可惜,事实似乎并不如我们所料。

    berkeley分校的计算机课程我想我以后应该看看了,我这两年学的好多东西都出自这所大学,得表示一下谢谢。呵呵,突然想到我们所谓的"精品课程"的东西,都是抄来抄去,有什么意思了,浪费大家时间,没人去看你们那些破东西的,就TMD的给领导看,你们教领导还是学生,太悲哀了,这样的大学氛围。

    下面为全文,实为转载,网络中搜索太多了,实在找不着原作者,转载未贴原作者,如有不妥,望谅解。

 

/*****************************************************************************/

 

一、伯克利

加州大学伯克利分校 http://webcast.berkeley.edu/courses.php

作为美国第一的公立大学,伯克利分校提供了,可以跟踪最新的讲座。想看教授布置的作业和课堂笔记,可以点击该教授的网页,通常,他/她都会第一堂课留下网址。实在不行,用google搜搜吧!

  伯克利的视频都是.rm格式,请注意转换

  二、麻省

麻省理工学院 http://ocw.mit.edu/OcwWeb/web/courses/courses/index.htm

麻省理工是免费开放教育课件的先驱,计划在今年把1800门课程的课件都放在网站上,提供课程与作业的PDF格式下载。三是,麻省理工只提供少数的视频讲座。坐过学生上麻省有一个绝对优势,麻省理工在中国大陆和中国台湾都建立了镜像网站,把麻省的课程都翻译成立中文。鉴于PDF格式,推荐使用FoxIt Reader。

  www.core.org.cn , (中国大陆)推荐

  www.myoops.org , (中国台湾)

二、卡耐基梅隆 http://www.cmu.edu/oli/

卡耐基梅隆针对初入大学的大学生,提供10门学科的课程视频。与其他大学的免费课程一样,非卡耐基梅隆的学子能学习课程,但是为了使学生能够及时了解自己的课程进度,卡耐基梅隆建议造访者在网站上注册,建立自己的资料库。这样一来,你得在有限的时间内完成一门课程,还要参加几次考试,当然,即使你得了100分,卡耐基梅隆也不会给你开证明,更不会给你学分。

四、犹他

犹他大学 http://ocw.usu.edu/front-page/Courese_listing

犹他大学类似于麻省理工,提供大量的课程课件

五、塔夫茨

塔夫茨大学 http://ocw.tufts.edu

塔夫茨大学也是“开放式教育课程”的先驱之一,初期提供的课程着重在本校专长的生命科学、跨领域方法、国际观点以及对美国地区性、全国性社群服务的基础理论。

六、公开

英国公开大学 http://openlearn.open.ac.uk/course/index.php

英国十几所大学联合起来,组建了英国公开大学。有一部分课程是对注册学生开放的,但是有一批很好的课程是免费的,并提供视频。每门课还设立了论坛,在社区中,大家发表意见,提供其他的学习资源,互相取经。在这个网站里,最能锻炼自学者的能力,因为你要不停地淘,才能找到宝贝。

七、约翰霍普金斯

约翰霍普金斯 http://ocw.jhsph.edu/topics.cfm

只有极少数人能够进入约翰霍普金斯大学就读,但是,现如今有动机的人不用花一分钱,便能通过网站获得该校的前沿知识。约翰霍普金斯提供了本学院最受欢迎的课程,包括青少年健康、行为和健康、生物统计学、环境、一般公共卫生、卫生政策、预防伤害、母亲和儿童健康、心理卫生、营养、人口科学、公共卫生准备和难民卫生等。

八、Connexions

http://cnx.rice.edu

CNX.org由莱斯大学开发,号称是课程资源免费共享图书馆。与其他大学不同的事,CNX邀请教授学者建立自己的社区,把自己的最新成果公布于世,接受大家的评价。可以说CNX开辟了大学资源共享的新天地,尤其适合自学能力超强的大学生。有些课程有中文版。

九、索菲亚

索菲亚大学 http://sofia.ocw.cn/gallery

无论是想当一名管理者、作家、评论员、还是要从事设计和IT业的人,索菲亚大学的免费课程肯定让你受益匪浅。索菲亚大学提供了8门学科的课程,其中《企业网络安全实战》已翻译成中文。

十、华盛顿

华盛顿大学 http://www.cs.washington.edu/education/course-webs.html

华盛顿大学的计算机工程学比较强,相关的几百门课程都已经放到网上。不但本科生能找到所需要的课程,连研究生也能淘到宝贝。该网站还提供特色讲座,比如:妇女、计算机与合作。课程不但提供讲座介绍、课堂笔记、有些课程还提供视频。

牛津、斯坦福、耶鲁大学联合网站

http://www.alllearn.org

哥伦比亚大学

http://ci.columbia.edu/ci

伯克利音乐学院

http://www.berkleeshares.com

杜克大学法律中心

http://www.law.duke.edu/cspd/lectures

圣母大学

http://ocw.nd.edu

英国格雷莎姆学院

http://www.gresham.ac.uk/default.asp

加州大学Irvine分校

http://ocw.uci.edu

富布莱特学校

http://ocw.fetp.edu.vn/home.cfm

日本东京大学

http://ocw.u-tokyo.ac.jp/english

日本早稻田大学

http://www.waseda.jp/ocw/index.html

日本大阪大学

http://ocw.osaka-u.ac.jp/index.php

法国巴黎高科

http://graduateschool.paristech.org





再给个看大学视频播客的



斯坦福大学 http://itunes.stanford.edu

加州大学伯克利分校http://itunes.berkeley.edu

普渡大学http://boilercast.itap.purdue.edu:1013/Boilercast

美国西南理工http://pocast.swtc.edu/lecture/index.php

加州大学洛杉矶分校http://www.bruincast.ucla.edu

西肯塔基大学http://blog.wku.edu/podcasts

Dupage学院http://www.cod.edu/multimedia/podcast/CODcast/Welcome.html

纽约城市大学http://podcast.york.cuny.edu/lectures

莱斯大学http://webcast.rice.edu

加州大学圣地亚哥分校http://podcast.ucsd.edu

剑桥大学http://mediaplayer.group.cam.ac.uk/main/Podcasts.html

美国大学华盛顿法律学院 http://www.wcl.american.edu/podcasts

杜克大学法律学院http://www.law.duke.edu/webcast

乔治敦大学 http://webcast.georgetown.edu

芝加哥大学商学院 http://www.chicagogsb.edu/multimedia/podcast

波士顿学院 http://frontrow.bc.edu

哈佛商学院在线

http://www.hbsp.harbard.edu/b02/en/hbr_ideacast.jhtml;jsessioned=NVHF0YFBS5ZCGAKRGWDR5VQBKE0YIISW

威斯康星麦迪逊大学 http://havenscenter.org/audio/audio.htm

约翰霍普金斯大学 http://www.johnshopkins.edu/podcasts.index1.html

伦敦政治经济学院 http://www.lse.ac.uk/rescources/podcasts/Default.htm

普林斯顿大学 http://uc.princeton.edu/main/index.php

英国泰晤士报MBA http://uc.princeton.edu/main/index.php

耶鲁大学 http://www.yale.edu/opa/podcast/

 

/*****************************************************************************/

2009年5月28日 星期四

Barcelona艺术夺得三冠

Barcelona是一支伟大的、团结的、艺术的球队。他们赢得了09年至高无尚的三冠。

电视机房的最后的山摇地动,将在30天后的毕业过后仍旧震撼人心。对面的女生无法感受到如此炽热的情怀,所以,请来了敷衍了事的保安。我依然在想,是不是那些女生们跟男生拍拖的时候才会感觉如次的疯狂。

Stylish Barcelona take United's crown。

2009年5月25日 星期一

强奸了你还不能出声

科学发展观已经已经“科学”广播了几个月,每个学院派什么所谓的领导一次一次地自我高潮,并堂而皇之地让广大P民也跟着自慰。靠,你以为我们还是那些被奴化的人啦,脱开裤子也跟你一起意淫啊,也太看不起我们了。自己都不相信,觉得泛而空的东西,为什么还要拿来不断地去强奸别人呢。


小学时候,学的课本感觉我们的课本说鲁迅老人家是某某集团的代言人一样,其实长大了才知道,根本不是。要是现在鲁迅老人家还在,非要狗血淋头地抨击我们这样已经腐烂到佳的社会了。


4W亿,5%用在医疗保障和教育上,还科学发展观!好好想想,能让百姓看到教育平等和重要性吗,能让老百姓感觉生命受到保障吗,能让老百姓感受到一个不缺乏人权的社会吗,能让百姓感觉到自己是社会的主人吗?我们的公仆?


垄断是可持续发展的;国外人民都生活在水深火热当中;我们的人权是全世界最好的;我们的农民采访都是乐呵呵的;我们的“干”部深入群众拉动内需…………


谁都想让我们的祖国变得强大,但请不要让我们看到它一直偏离我们百姓的想法。


2009年5月15日 星期五

科技战略

咸郎平教授有一篇文章“中华文化不养高科技”与阿Q精神”讲得还是很好的,虽然那是2004年的文章了。地址为:http://www.jsmedia.tv/bbs/viewthread.php?tid=93&extra=page%3D1

咸郎平难得的是直面现实,针砭时弊,并能提出一些较好的解决方案和建议。相对于张五常,我更倾向于认为他为某一小撮利益团体做辩护和扩大他们的利益。

当然,兼听则明,偏听则暗,五常兄也是有可取之处的。

2009年5月14日 星期四

一批砖家

我们身边怎么这么多鸟人号称砖家呢!

这是去年的一则新闻:2008年11月8日,全球第一部《网络成瘾临床诊断标准》在我国通过专家论证,网瘾正式纳入精神病诊断范畴。其界定中一项量化的指标是每天连续使用网络达到或超过6小时,且这种症状达到或超过3个月。

我一不小心就是精神病患者了,我操你个砖家,是不是想挨爆菊了!

这所谓网瘾正式纳入精神病诊断范畴还不要紧,后面有一个“山东临沂杨永信网络成瘾戒治中心拉到了聚光灯下。这位自称“快乐使者”的“全国戒网专家”,将绝大部分都是被骗来并强迫接受治疗的孩子的太阳穴或手指接通电极,以纠正他们的“走偏”行为”。my god,这个世界真是变态,这个骗子真是无敌地伟大,还叫嚣“如果不能很好地控制网瘾的蔓延,会造成“亡党亡国”的后果,会让整个中华民族“断子绝孙”,会让美国人在上个世纪七十年代叫嚣的“不战而胜”变成现实,会让中国文化在网络帝国主义的文化侵略中消失! ”

中国怎么就这么多无耻和无知的砖家呢。不过想想,生活在这片神奇的土地上,有什么不可能捏

2009年5月11日 星期一

茅于轼,人民的敌人!

《茅于轼----我反对限价房和经济适用房》

一伪经济学家,某某利益集团的一帮凶。

出来混,迟早要还的。

2009年5月8日 星期五

真和谐

究竟多少中国贪官在国外“潜伏”?早在2001年新华社就报道说,中国有超过4000名贪污、贿赂犯罪嫌疑人携带50多亿元人民币公款逃到国外,其中绝大多数是贪官。去年8月,“两许”在美国被定有罪时,美国加州警方曾透露,中国反贪局和公安部向美方列出“中国贪官外逃名单”,1000多人榜上有名……

这还是是官方统计呢,还有不敢公布的呢……

话说国企

呵呵,今天上天涯看了篇有关电信强行摊派任务给员工的文章,看得心里凉飕飕滴,地址为:http://www.tianya.cn/publicforum/content/free/1/1555803.shtml

有个回帖挺贴切的:电信虽然改为企业了,但那种令人作呕的机关作风根植之深,外人难以想象,到处散发着令人深恶痛绝的政治霉味。电信这种垃圾企业,并不缺乏人才,但体制之痼疾,早该倒闭一万次,非但如此,电信员工不得重生。

真TMD的什么鬼企业,操蛋!国家花那么多钱拉动内需,几乎都给了国企或者有国企背景的企业了,一部分人在原有的基础上更加富有了,可他们喜欢在国外拉动别人的内需,而穷的更穷,还是买不起东西。缺乏公平,缺乏监督,权利主宰一切……一切感觉灰蒙蒙!

2009年5月7日 星期四

The component's frame in TinyOS

TinyOS里 Component有一个Frame的概念,挺起来确实有点悬乎乎的,不知道是啥子东西。

孙利民的《无线传感器网络》第343和344页有下面三个说法:

1.一个经过封装的私有数据帧(data frame);

2.任务、命令和事件处理程序在帧的上下文中这行并切换帧的状态;

3.TinyOS采用静态分配存储帧,这样在编译时就可以决定全部应用程序所需要的存储器空间。帧是一种特殊的符合C语法的结构体(struct),它不仅采用静态分配而且只能由其所属的组件直接访问。TinyOS不提供动态的存储保护,组件之间的变量越权访问检查是在编译过程中完成的。除了允许计算存储器空间要求的最大值,帧的预分配可以防止与动态分配相关的额外开销,并且可以避免与指针相关的错误。另外,预分配还可以节省执行事件的开销,因为变量的位置在编译时就确定了,而不用通过指针动态地访问其状态;

后来去官方的帮助,找到主题“[Tinyos-help] About Components Frame”,Phil做了还算详细的解答。里面提到:
1."nesC compiles to C; take a look at build//app.c to see the generated C. The C compiler/assembler then assigns the layout of variables in the data or bss sections, which are distinct from the stack."
2."the FRAME concept just means the variables and data(initialized or not, as in data or bbs sections of the exec elf files) ofthe C program”

关于the data or bss sections:
bss段(未手动初始化的数据)并不给该段的数据分配空间,只是记录数据所需空间的大小。
data段(已手动初始化的数据)段则为数据分配空间,数据保存在目标文件中。
需要更详细了解the data or bss sections的可以参考一下赵迥老师的《Linux内核完全剖析》第3章节。或者《Linkers and Loaders.pdf》,它有中文版。

现在最最需要我们做的是什么呢,就是去查看build//app.c。这个app.c文件是nesC编译器编译之后生成的C文件,比如你make micaz之后就会生成。我以前装的是TinyOS1.X的,同样我现在也拿其中一个应用程序“CntToLedsAndRfm”来说,其路径为:
“opt/tinyos-1.x/apps/CntToLedsAndRfm/build/micaz/app.c”

通过命令make micaz docs我们可以在“opt/tinyos-1.x/doc/nesdoc/micaz/index.html”中点击“CntToLedsAndRfm”的链接,然后我们看Component Graph,了解到最后CntToLedsAndRfm会wire“AMStandard.nc”这个组件。这个组件source: tos.system.AMStandard.nc。

我们截取AMStandard.nc的实现(implementation)中的一部分代码:
implementation{
bool state;
TOS_MsgPtr buffer;
uint16_t lastCount;
uint16_t counter;

// Initialization of this component
command bool Control.init() {
result_t ok1, ok2;
call TimerControl.init();
ok1 = call UARTControl.init();
ok2 = call RadioControl.init();
state = FALSE;
lastCount = 0;
counter = 0;
dbg(DBG_BOOT, "AM Module initialized\n");
return rcombine(ok1, ok2);
}
.............................

然后我们对照CntToLedsAndRfm/build/micaz/app.c中的相应代码:
# 82 "C:/tinyos/cygwin/opt/tinyos-1.x/tos/system/AMStandard.nc"
bool AMStandard$state;
TOS_MsgPtr AMStandard$buffer;
uint16_t AMStandard$lastCount;
uint16_t AMStandard$counter;

static inline
# 88 "C:/tinyos/cygwin/opt/tinyos-1.x/tos/system/AMStandard.nc"
bool AMStandard$Control$init(void)
{
result_t ok1;
result_t ok2;
AMStandard$TimerControl$init();
ok1 = AMStandard$UARTControl$init();
ok2 = AMStandard$RadioControl$init();
AMStandard$state = FALSE;
AMStandard$lastCount = 0;
AMStandard$counter = 0;
{ } ;
return rcombine(ok1, ok2);
}

首先:
bool state;
TOS_MsgPtr buffer;
uint16_t lastCount;
uint16_t counter;
这一个就是所谓的帧,它们在生成的app.c后都变成了全局变量,对哦,就是静态分配的,不管这些所谓的帧里的变量有没有初始化。其实初始化的话就放到data段中,没被初始化的就放在bss段中而已,根本不影响它这个“帧”的地位。
而上面说的“帧是一种特殊的符合C语法的结构体(struct)”怎么理解呢?
我以前看过一份“System Architecture Directions for Networked Sensors.ppt---Qiuhua Cao(qc9b@cs) Computer Science Department University of Virginia”。可以通过网络上搜索获得。这应该是早期的nesC语法或者早期的TinyOS编程模式。PPT里面提及:
Concepts in TinyOS (cont.)
Frame
ØContains all permanent state for component (lives across events, commands, and threads)
ØThreads, events, and commands execute inside the component’s frame
ØOnly one per component
•Like static class variables, not internal class variables.(类似C++总的静态数据成员,它被类的所有对象共享,而不是属于某个对象的,在存储上只需要存储一处,就可以供所有对象使用,只要对静态数据成员的值更新一次,所有对象的该静态成员值都被更新)
Ø Fixed size
Ø Statically allocated at compile time

Frame example:
Ø Frame declaration
#define TOS_FRAME_TYPE AM_obj_frame
TOS_FRAME_BEGIN(AM_obj_frame) {
int addr;
char type;
char state;
char* data;
char msgbuf[30];
}
TOS_FRAME_END(AM_obj_frame);

ØUse of frame Variables:
VAR(state) = 0;

这样开来,TOS_FRAME_BEGIN(AM_obj_frame) { ××××××} TOS_FRAME_END(AM_obj_frame); 就应该是所谓的符合C语法的结构体(struct),呵呵。

它不仅采用静态分配而且只能由其所属的组件直接访问,这个我们又怎么理解呢?

uint16_t lastCount; ------> uint16_t AMStandard$lastCount;
$是什么东西呢,在刚才的[Tinyos-help]中有提及:
“$ is an almost never used but legal character in C identifiers”
其实"AMStandard$lastCount"在C语言中完全就是合法的标志符,你可以写一个测试程序:
#include
int main(int _argc, char* _argv[])
{
int AMStandard$lastCount = 215;
printf("AMStandard$lastCount:%d\n", AMStandard$lastCount);
return 0;
}
gcc编译后运行是通过的嘛。只是我们平时很少用来着。

这里你是否想到lastCount为什么经过nesC编译后要加一个所谓的“AMStandard$”的前缀(其实AMStandard$lastCount是一个变量,是个整体)呢?我看来,这就是应该算是刚提出的问题“而且只能由其所属的组件直接访问”的含义了吧。你要访问lastCount,现在编译器把它生成带“AMStandard$”前缀的变量,而没有生成带““google$”的前缀”,你说谷歌“google”组件里也有这个lastCount,或者百度baidu也有,但他们被编译没生成AMStandard$lastCount啊,至多根据规则生成google$lastCount或者baidu$lastCount啊(开个玩笑)。又因为“组件之间的变量越权访问检查是在编译过程中完成的”,所以,这样就不能相互乱访问别的组件里的帧变量了,也就是私有了,当然也就是“只能由其所属的组件直接访问”了。当然,帧里的变量都是全局变量,那么当然自然就“帧的预分配可以防止与动态分配相关的额外开销,并且可以避免与指针相关的错误。”了。不过,要是你有恶意的话,你闲着蛋疼修改app.c文件的这些变量,想想会有什么结果呢,呵呵,当然,其实这一点意思都没有。

app.c生成的带$的函数是不是一个道理呢?动下脑筋吧.

但是command bool Control.init()中的
result_t ok1;
result_t ok2;
却并不属于所谓的帧。它们只是普通C语言函数中的局部变量,当然不是全局变量。生成的app.c已经说得足够清楚了。


参考资料:
[1] https://www.millennium.berkeley.edu/pipermail/tinyos-help/2004-July/004649.html
[2] https://www.millennium.berkeley.edu/pipermail/tinyos-help/2004-July/004654.html
[3] https://www.millennium.berkeley.edu/pipermail/tinyos-help/2004-July/004657.html
[4] System Architecture Directions for Networked Sensors
--- Qiuhua Cao (qc9b@cs) Computer Science Department University of Virginia

Twins

平时我不怎么对娱乐新闻感冒的,无非是看看美女而已,呵呵。

阿娇最近复出了,我持一种欢迎的态度。其实她有什么错,他们拍的那些艳照对于一个正常人来说都很可能亲自做过,只是,照片没有被这样无情地公布而已。

唱歌好听就可以了嘛,拍拖也是正常的嘛,拍点艺术照也未尝不可。

2009年5月5日 星期二

ch17_实验环境设置与使用方法

Bochs http://bochs.sourceforge.net/

Bochs 2.3.7 released on June 3, 2008
http://sourceforge.net/project/showfiles.php?group_id=12580&package_id=17475&release_id=604138

sls-0.99pl.tar.bz2
http://sourceforge.net/project/showfiles.php?group_id=12580&package_id=27799&release_id=146898

ch16_建造工具

ch16_建造工具
这章比较简单,主要是认识一下内核磁盘映像文件的工具程序。

除了书本详细介绍之外,有以下代码可以参考下。
Ø sizeof buf 和sizeof(buf)其实是一样的buf是变量了,不是类型,类型就不可以省略括号了。详细见本文件夹中的文档。
Ø 135-137行的代码可以借鉴一下。
for (i=0 ; (c=read(id,buf,sizeof buf))>0 ; i+=c )
if (write(1,buf,c)!=c)
die("Write call failed");
Ø 143-152行的代码可以借鉴一下。
for (c=0 ; c sizeof(buf))
c = sizeof(buf);
if (write(1,buf,c) != c)
die("Write call failed");
i += c;
}

ps:说明sizeof和strlen之间的区别
[1] 详解sizeof和strlen。http://mazhijing.blog.51cto.com/215535/68644
[2] 解析C语言中的sizeof。http://wf66.com/page/20068/15633A89E3.htm

ch15_库文件

有待补充

ch14_头文件

深入浅出VA函数针对stdarg.h文件里的那几个宏,和实现细节http://www.ibm.com/developerworks/cn/linux/l-va/

ch13_内存管理

有待补充

ch12_文件系统

有待补充

ch11_数字协处理器

有待补充

ch10_字符设备驱动程序

有待补充

ch09_块设备驱动程序

有待补充

ch08_内核代码

skip_atoi中的const用法.mhtvsprintf.c中skip_atoi中的一些语法http://blog.chinaunix.net/u/27708/showart_236772.html
vsprintf_c(linux1.0)注释.pdfLinux 1.0 内核注解-linux/kernel/vsprintf.chttp://blog.chinaunix.net/u3/90306/showart_1847949.html
gcc中格式化输出函数的研究(非常好和全)http://bbs.chinaunix.net/viewthread.php?tid=24825

ch07_初始化程序

有待补充

ch06_引导启动程序

// doc

常用中断 - Linux0_11内核学习笔记http://blog.chinaunix.net/u3/93809/showart_1900188.html
bootsect.s文件经常问的问题(第二页比较整齐)http://www.oldlinux.org/oldlinux/viewthread.php?tid=6049&extra=page%3D1
BOIS中断向量表http://blog.csdn.net/kevintian/archive/2008/09/30/3793207.aspx
软盘控制器编程方法.pdf赵炯老师 翻译的,对理解bootsect有用
oldlinux学习笔记--引导与启动三个汇编程序的总结还是很清晰的,很好。http://blog.chinaunix.net/u/22326/showart_315835.html

// code

boot_from_MBR:编写MBR从硬盘启动linux0.11完全过程http://www.oldlinux.org/oldlinux/viewthread.php?tid=4856

ch05_Linux内核体系结构

有待补充

ch04_80×86保护模式及其编程

这个章节及其重要,如果不懂的话,后面的看也没用,晕人你还不赔钱。其实这章的话一定要耐心的看,也不需要花几个时日。以前我去听那个微机接口的课的话,因为没有体系结构和保护模式等这些概念的尝试,晕完去,加上老师又讲得快,愣是把我们当成啥都懂的人。所以,很晕很难受。自己看《Linux内核完全剖析》,完全是因为我当时打算看《深入理解Linux内核》第三版中的第二章,非常之不理解,刚好同学买了一本剖析,于是借过来当成手册看,中文比英文看得快些,有助肠胃消化。第三章我觉得稍微有难度的就是关于“保护”那个小节,务必要做到掌握于心,条分缕析似的。

Intel80386.chm
http://www.oldlinux.org/oldlinux/viewthread.php?tid=9206
oldlinux翻译组
http://www.oldlinux.org/oldlinux/viewthread.php?tid=147
保护模式概述oldlinux一版主说的,他其实自己也是个计算机老师http://www.oldlinux.org/oldlinux/viewthread.php?tid=7297

待补充,只是因为当时暂时没写

ch03_内核编程语言和环境

ch03_内核编程语言和环境

1. GNU as的知识
光靠《Linux内核完全剖析》里面介绍的还是不够的,或许我们还需要补充点什么,特别是我以前学汇编时候不怎么好的情形下,更需要投入精神。分界线上面的我想还是认真应该看的,分界线下面的也就花点时间遛遛,不花什么时间。
Ø 《IBM-PC汇编语言程序设计(第2版)》沈美明、温冬婵著的。这个大学一般的汇编教材,我只看了第二章和第三章。特别是第二章,我以前学的汇编就当没学过,所以,花了一个下午和一个晚上认真的学习了下。
Ø 《Linux 中 x86 的内联汇编》,一个在IBM工作的印度工程师写的,很好。IBM里的文章一般条分缕析,很是适合学习,入门应该先看这个。
地址:http://www.ibm.com/developerworks/cn/linux/sdk/assemble/inline/index.html
Ø 《GCC的内嵌汇编语法》,据说是一个叫灵溪的人写的。这个是一定要看的。
Ø 《对《gcc中的内嵌汇编语言》一文的补充说明》,这个的话是对《GCC的内嵌汇编语法》的再补充。务必配合上面灵溪的一起看。
----------------------------------------分界线-------------------------------------------------------------
Ø 《汇编语言指令集》。当平时查字典看吧。
Ø 《Linux 汇编器:对比 GAS 和 NASM》,有多余的时间,也可以看看这个。
地址:http://www.ibm.com/developerworks/cn/linux/l-gas-nasm.html
Ø 《Linux汇编语言开发指南》。这篇文章也是不错的。本文作者 肖文鹏是北京理工大学计算机系的一名硕士研究生。地址:http://www.ibm.com/developerworks/cn/linux/l-assembly/

2. 内存布局的基础知识,如下:
堆和栈的区别1.pdf,堆和栈的区别2.pdf和堆和栈的区别3.pdf有重复的,未修改过。

更详细的请看书籍 《嵌入式Linux上的C语言编程实践》--韩超 魏治宇 廖文江。它的第13章 C语言程序的内存布局,写得挺好的。主要跟《Linux内核完全剖析》第三章的内核编程语言和环境中的3.5 Linux0.11目标文件格式 有一定的联系,BSS段说得也挺清楚的。里面例子也很丰富。在线阅读的链接为:http://book.51cto.com/art/200902/111788.htm

3. C函数调用机制
关于《Linux内核完全剖析》中的“3.4.1 C函数调用机制”,《深入理解计算机系统》有更详细的介绍,推荐看。因为过程调用那部分不是完全理解,然后刚好搜索了下,网上介绍说这书讲解得不错。这本书有中英版本。中文很多勘误,详见china-pub:http://www.china-pub.com/18133。点击勘误建议。英文的话可以在CSDN上下载,4点M的才是完全版,而且几乎那些勘误都改正过来的了,中文对照着英文看好一些。下面分条再强调一下:
Ø 同样的一段代码,书里面的汇编后的代码很可能跟你系统自己去汇编的不一样,我曾经用过以前学习TinyOS时装的Cygwin和FC10,两者的GCC版本都不一样,出来的.S汇编代码是跟书里是有差距的。
Ø 就像中文翻译的第151页里说的,不是很清楚C编译器为什么会为有些函数在栈中分配这么多未使用的存储(strorage),也就是为使用的那些栈帧区域。而原作者在第149页说分配这些浪费了的区域是为了改进高速缓存的性能(these wasted areas are allocated to improve the cache performance)。但究竟怎么改进,我还是不懂。
Ø “3.7.5 Recursive Procedures”中程序里面的第11行和第16行,我老觉得好像没有这样的写法的啊,而且我亲自去编译,不是这样的,根本不用去取地址(leal)。
1 fib_rec:
Setup code
2 pushl %ebp Save old %ebp
3 movl %esp,%ebp Set %ebp as frame pointer
4 subl $16,%esp Allocate 16 bytes on stack
5 pushl %esi Save %esi (offset -20)
6 pushl %ebx Save %ebx (offset -24)
Body code
7 movl 8(%ebp),%ebx Get n
8 cmpl $2,%ebx Compare n:2
9 jle .L24 if <=, goto terminate
10 addl $-12,%esp Allocate 12 bytes on stack
11 leal -2(%ebx),%eax Compute n-2
12 pushl %eax Push as argument
13 call fib_rec Call fib_rec(n-2)
14 movl %eax,%esi Store result in %esi
15 addl $-12,%esp Allocate 12 bytes to stack
16 leal -1(%ebx),%eax Compute n-1
17 pushl %eax Push as argument
…………
Ø 《深入理解计算机系统》里“3.7 过程”里的习题最好做一下,好经典。

4. ld
目标模块文件和可执行目标文件的结构都是很重要的。不然很难想象机器是怎么工作的,代码到底放在硬件的哪里运行,怎么装载。下面补充一些有之有关的知识,在书里有的话也就不谈了。
Ø 如何解读vmlinux.lds.S文件。这个还是相对简单的一点的,刚开始的不需要那么复杂,慢慢入手就是了地址:http://www.linuxforum.net/forum/showflat.php?Cat=&Board=linuxK&Number=52469&page=&view=&sb=&o=&vc=1
Ø GCC编译的背后(第一部分:预处理和编译) 、CC编译的背后(第二部分:汇编和链接)。
地址1:http://oss.lzu.edu.cn/blog/article.php?tid_1545.html
地址2:http://oss.lzu.edu.cn/blog/article.php?tid_1546.html
这个非常不错,有很多参考资料。务必看。
Ø 《链接器和加载器(Linker and Loader)》中译版 (colyli 译)。赵迥老师推荐的,要学习有关目标文件和链接程序的基本工作原理的话,强烈推荐,也是高手必经之路。一百多页,**天也差不多。地址:http://www.linuxsir.org/bbs/showthread.php?t=264036
Ø 有待进一步的研究

5. 内联函数inline
Ø C语言的inline。暂时未看,收录。地址:http://blog.chinaunix.net/u2/74524/showart_1710175.html

2009年5月2日 星期六

自慰科学发展观

每天广播都是科学发展观,什么新闻,什么活动,什么会议,什么比赛,什么建设,什么什么等等,非要掏出科学发展观的JJ不断地自慰,自己玩就玩了嘛,即使你去买性趣用品躲“相关部门”里一天猛弄10次,然后让早已麻木的大家看不见,听不着不就行了,为什么还要不断强奸别人的耳朵呢。你说你真的科学发展了,做了对学生或者人民(姑且还没达到公民的高度,因为我们经常被定义为一小撮或者说是P民的)有益而实在的工作,我们是很乐意听取,并且也会主动参与。但事实却是,很多让人民失望了,唉。

东西和成果不是吹出来的,不是搞浮夸风的。衙门的学府,只会不断败坏社会,永远得不到良性地发展

2009年4月29日 星期三

拼命吧

前段时间加入的一个OS群,里面一些很有激情也很有能力的人物。在做一些嵌入式OS,也写了一些书,有些书大家也很容易找得到。看到前辈们不懈地努力,再想想我们上的那些课,是远远不够而且其实浅显的,甚至有时候觉得不负责任。

然而,我们怎么能再拖这个不断进步的时代的后腿呢。

我们是一群富有活力和激情的人,我们终究在这快乐地追求中创造新事物。

我们何须等待,何须理会别人不加思索地“建议”,摒弃成见,抓紧时间,夯实基础,坚持拼命吧^_^

2009年4月27日 星期一

freecomputerbooks

freecomputerbooks:http://freecomputerbooks.com/

N多好书,Core Linux方面的也很不错,经典的都有哦

2009年4月22日 星期三

沉默

高手都应是沉默的。
厚积亦不需要勃发

2009年4月13日 星期一

contributed code(TinyOS)

一些研究小组投身于TinyOS1.x和TinyOS2.x 的开发和使用中,于是把这些项目开源了,下面的链接集中了这些项目:http://docs.tinyos.net/index.php/Contributing_Code_to_TinyOS

吃饱饭撑着了

科学发展观,到底科学了没有。

最近每天学校就在广播里吼什么科学发展观,让我们师生学习科学发展观。还TMD的意淫自己有什么科学。吃饱饭撑着了呀!自己做那些见不得人的事情,我们P民没法阻止,也没法把你们依法整治,你们自个窝在那不要TMD的乱叫好不好,不要欺骗我们这些P民了好不好,够恶心的。

科学发展观不是整天无聊开会传达指令却P事不做的“发展观”。

2009年4月12日 星期日

建议无非也只是建议

刚在新浪上看到大眼的文章,是有关高考的。呵呵,大眼说的是人话。
其实还用争吗?睁眼说瞎话的一批砖家,叫兽。高呼万岁的人啊,你瞧了,现在的年轻一代开始思考了。幸好,我也早以醒悟,呵呵
大眼的《高考英语可以取消》:http://blog.sina.com.cn/s/blog_46e7ba410100cads.html?tj=1

2009年4月11日 星期六

我们要耐得住寂寞

我们时刻看着现实社会风云突变,我们时刻感受着身边朋友的善意地指导,我们仍然需要有自己的主张,不让自己都被别人的言论淹没。我们耐得住寂寞,就一定会成为我们想成为的人,然后再回头抿嘴一笑,不言,我们再向更高的地方翱翔。

2009年4月7日 星期二

踏实学习Linux内核

在你的一生中至少有一次仅仅因为某些东西艰难和有趣而学习它。显然,并非所学的一切都是有用的,或者直接适用于特定的问题。 ---Bjarne Stroustrup

2009年3月13日 星期五

有点郁闷

前几天开始准备渐渐进入Linux内核领域,做一些让人觉得有难度的东西,找些挑战。

可不,发现自己汇编知识稍微 有些欠缺,我们当时上的那个课的,真是够恶心的,好好的IBM-PC汇编不上,非要上什么32位的。你说上32位的也没什么错对不对,非要把自己翻译人家老外教授写的书说是自己写的,还不告诉我们,等我从网上找出原书出来才承认,这不侵权嘛,真是。翻译得还算好,但是非要把一些关键性和总要的知识点给省略掉,而把猴子吃桃,冒泡法这样的小算法当那么回事一直重复无数次。学习汇编不是学算法,这个都脱离了这门课程的本质了。想当初,其实我也学得挺认真的,但是还是不知道了解机器。特别像那些分段,分页机制啊,这个32位汇编的翻译书就没有了。真要想钻研一下涉及硬件的东西啊,还是得看IBM-PC那本,超级经典的汇编语言程序设计。再后来,我自己去旁听微机接口,感觉那种汇编确实有点晦涩。要花点时间才能转换过来。

还好,早自醒悟,脱离了苦海。经常逃课,不跟那帮老师混了,不过我们学院教我们的还算是有几个比较好的老师,给我们指明方向,在这点上,我还是十分之欣赏的。学习的话,自学,还不是一样,人家能看懂的我照样能自己看懂,自己绝对是一个凡人,有觉悟和恒心最重要,多花时间,养成习惯,自然就渐入佳境嘛。

2009年3月11日 星期三

不做一个浮躁的人

浮躁的人容易问:我到底该学什么?--别问,学就对了!

浮躁的人容易问:有钱途吗?--建议你去抢银行算了!

浮躁的人容易说:我要中文版!我英文不行!--不行?学呀!

浮躁的人分两种:只观望而不学的人;只学而不坚持的人。

浮躁的人永远不是(也成不了)一个高手。

这是从一篇叫做“不要做浮躁的嵌入式系统工程师”的文章截取的片段。这一年多来,我也开始入门嵌入式。我不希望我从事那种勾心斗角的生活,那种整天安逸缺领着丰厚工资和奖金的人。这个社会太多浮躁了,我我不想成为那样的人。

我希望我能看得懂linux内核,能做一些开源而又有意思的东西贡献大家。平时务必扎扎实实,杜绝浮躁,认真做一些基础的工作,由表及里地掌握知识,不妄自菲薄,坚信自己的方向,默默低头稳稳当当地踏着大师踏过的脚印。一弯腰就是一辈子。