全部博文(272)
分类: IT职场
2010-02-08 16:13:03
建议屏幕分辨率:1280*800。好戏开始了......
幸福还有多远
一、楔子
世界上,有种温暖叫做幸福,也有种冰冷叫做不幸。幸福和不幸有时一个天上一个地下,犹如牛郎织女遥不可及,有时却像屋里屋外仅仅是一门相隔。放眼看去,东边灯火辉煌的写字楼中婆娑而忙碌的身影,西边天桥下潮水般的车流滚滚,路南家乐福里那黑压压人头攒动的抢购者,还有北侧一排饭店里推杯换盏把酒言欢好不快活的酒客。我们不停地追逐着幸福、不停地避离开不幸,可是他们却总是形影不离。
到头来只剩下两种情况:幸福着的不幸和不幸着的幸福。幸福着的不幸是你身处幸福之中却不知道马上将失去它,不幸的幸福则是你身在福中却不知福。无论何时,无论何地我们只有这两个选择,谁也逃不过,谁也避不了。
抬头看着京城一月的天空,一轮明月几许星盏,只是今冬格外寒冷,再厚的呢子大衣也抵挡不了北方的冬,它冷得就像天上如刀的月牙,又似千万钢针,在你的脸上身上一刀刀地划、一锥锥地扎。就这样加快了脚步,人影顺着昏黄的路灯消失在了林立的大厦中。
别忘了,夜深人静的时候在自己心底悄悄地吼一声:“幸福还有多远?”
二、话外画
机关是具有中国特色的一种称呼,在外国人看来应该叫做机构或部门(Department),这也是瞅准中国市场的老外、海龟每每在这片热土投资失利、创业失败的一个原因。在中国,最大的就是人,有时人情胜于法理。但就这机关一词,就足令我们浮想联翩,本是工作的地点之意,却又有内部设置“机关暗器”之嫌。所以自打我明白世事起,总能听到机关或多或少、黑黑白白、阴晴圆缺的形色之事。而我,就工作在这里。
03年毕业,放弃单独留校的机会携女友北上,自认为具有市场眼光,拥有敏锐的意识,于是打算找家咨询公司或大一点的策划公司谋职,同时也希望干练的女友找到外贸公司,毕竟人家四、六级当年都是80多分啊。
走出学校,便步入江湖。什么是江湖?有人的地方就是江湖,人越多,江湖越大。在学校我是天之骄子,院长都高看我一眼,想当年学C语言,就去了两节课,第一节和老师打个照面,认个脸,刚下课就得出了一个结论:老师讲的太次,该门课程需要自学;最后一节课我又去了,老师说了下考试要点,并强调基础题占70分,还有30分比较难的。考试完毕,全班第一94分,足足落出第二名15分之多。接着就考了国二的C,很顺利的是个优秀的证书。事后C老师极为茫然,把艳羡和窘迫的眼神合二为一将我扫描一遍,拍拍我的肩说了句:“这小伙子”就走了,那时我心里窃喜道:呵呵,要是我当了老师,教的肯定比你强。
一个学出点门道、悟性好的男孩子毕竟只是一个凡人,即便他的女朋友同样出类拔萃,两个人仍然只是凡夫俗子,逃不出那条铁律:幸福这的不幸正是我们在幸福之中却不知道马上将失去它。在找工作的5个月时间里,人就像被天诅咒了似的,彩打的简历(当年彩打非常昂贵,我俩家可是无产阶级家庭,我俩更是编外的无产阶级先疯队——指当年的月光族)如流水般投出,全部石沉大海杳无音讯。为了找工作,我们放弃了考研。为了找工作,我们只身于一座陌生的城市中,陌生的街道、陌生的面孔、无数次的等待、无数次的无奈,现实将两个孤傲的年轻人挫败,举目无亲、冷冰冰的路人、羞涩的囊带,为了生存我们不得不变得坚忍,住在极为廉价的出租房里,所有的个人财产只是一台PC和一个装衣服的编织袋,吃完2快钱一碗的白面条,拿上黑白简历,这边穿上西装、那边画上淡妆出了门,晚上回来时是更加颓然的心情。谁知屋漏偏逢连夜雨,房东家的电表漏电坏掉了,我们又过上了没有电的夜晚。黑夜中,两个人面对面坐在空屋,孤独、无助、茫然、委屈一涌而上,泪水四溢。
不幸的幸福则是你身在福中却不知福,找工作的艰辛经历对我影响很大,它锻炼了我的意志,让我变得更加顽强。这以后再艰苦、再困难的境遇我只是“微微一笑,绝不在抽了”。
随后的事情犹如天神相助,事事顺利,先是随意打了一个高校人事处的电话,和副处长聊的非常投机,一下子打了半个小时的长途,得到的是直接试讲的机会。然后就是去那家高校试讲,双双通过,而且试讲的12个人只留下了我们两个。接着在返程等公交车时,俩人算计着兜里只够硬座的钱了,这时突然一阵风刮过,远远飘来一张十块钱,我说别捡了风太大,肯定吹跑。谁知这张钞票刚好卡在离我们最近的一辆摩托车的车轮下,我激动地捡起来高兴地和女友说这下可以买车上吃的方便面了。2分钟后,公交车还没到,一个中年女人却扶着一位老太微笑着走过来,天呐,这个女人是听我们试讲的一位评委,而她介绍这位老太就是那天和我聊了半个小时的人事处副处长。真是人间神话,看到这篇文章的朋友们,你们肯定不信,说我编故事。其实我多么希望自己吃错了药,或者拍自己脸把自己打醒。但是,这事情是真实发生的,我永远都忘不了在那个环3站牌下发生的事情。后来还是一路愉快,第二年学校兼并了商专,成立XX大学,一所综合性大学坐着火箭生了出来。
三、混迹高校
中国的机关大大小小、林林总总数量犹如浩繁苍宇中的群星,我们单位的规模可是不小,在当地也是数一数二。和其它地方其它机关一样,这里的生活用一个字就可以既贴切又传神地表达出来,那就是“混”。别小看了这个字,真想弄明白可要费一翻力气和心思。
我就是一个混的。
不过大家不要藐视我,其实您和我一样,都在混,只是混的方式、混的手段、混的际遇不同而已。有的人在父母的庇护下放心大胆地混,有的人自己在外小心翼翼,艰苦奋战,以苦为乐地混,也有的纵情声色、放荡江湖,但侠肝义胆、义霄云天地混,也有看着老婆声色俱厉就吓得魂飞魄散七窍流血八窍流脓地混。虽说人间万象,各式各样,但是您得福了,碰见了我,看到了这篇文章,我站在比尼采头顶还高1纳米的高度,总结出混世口诀,以拯救世人(真有点本山师傅的忽悠味道):
凡事悉数过,
混字心头坐。
要问怎么混,
把它拆开做。
解字:首先,混字左边是水,单看水字位首说明它的地位最优先,告诉我们不论好坏人不管好坏事,处理事情要首先考虑随大流,顺水推舟而不可逆行,你再有见解、再聪明、或者即便你是对的,又如何?你能拯救世界么?其实你连自己都救不了;然后右上是日,其实就是眼睛(要象形化,中国字嘛,原本古文中日字还代表着人的眼睛,后人看不顺眼,加了个眼皮变成了目),说明凡事要多观察,切不可闭目养神事不关己高高挂起,有时关心不仅是种美德,更是一种求生方式,没准你的升迁大事就是在不经意间看得的呐;最后是比,这是最高境界,人生而比之,从小到大,职称评定、考试考核、个人业绩暂且不言,东家买个车,西家包个情人,南家买个雕,北家放屁臭,无一不在比较。拿自己和别人比,那是最低层,啥时放下攀比心理,拿自己和自己比就算是境界升级了,看看自己是否有所进步,仍在上进,而不是和同事比较这计较那。那样不仅让自己丧失制定目标的能力,更会带来一种危险的潜病态心理。请大家思考下,如果没有比较心理,世上还会有神经病吗?话都说到这份上了,以后得上了可别说我没提醒您哦。
出来混,迟早是要还的。善有善报,恶有恶报。根据不同的人,有两种不同的混法:混人或者混事。混人就是你业务不行但很会钻营,这种人也能轻松之上,您别眼红这就是本事;混事就是说你业务精但拍马不精,你也能上去,但需要付出更多努力。现在说说人精吧,什么是人精?就是那些既会钻营拍马看领导老板眼色行事,又能将其部署任务保时保质保量完美完成的人。不过这种人很少,碰上的话你就自认倒霉吧。
四、反骨
世界上是否真的有“脑后有反骨”的人?专家笑说:没有,就人体的骨骼结构讲,绝对没有这样的骨头。生理性的反骨其实是“枕骨”(又名“后山骨”)。上面突出处叫“脑杓”,下面耳后突起者名“完骨”。
以前我并不知道反骨之说,只是打小时起看着玩伴躺在水泥地上也可舒服地伸展,而我只要仰面躺下,就觉得脑袋咯的难受,然后侧过身不论左右就没事了。结婚后,一天晚上我说我脑袋后面长出个刺,老婆一摸笑道:“难怪同事怎么说你现在忙这个呐,原来你和黄忠一样,长了反骨”。
是的,没法控制,天生如此,与生俱来脑后的这种突起让我具有很强的叛逆精神,其实也好因为我总能辩证地看待问题,总能从不通方面找出问题解决的方法。本科的专业学的是信息管理,说白了就是情报学。计算机、管理学、经济学、市场营销、大学物理等等等等变态地学了一大推课程,要毕业的那天系主任悄悄对我说我的毕业论文写的不错,建议投稿。暑假时改了改发到一个听说不错的刊物上,两周后编辑来电话说同意发表,还特意强调他们是核心期刊,什么核心不核心的那时根本不懂。
和许许多多刚毕业当大学老师的年轻人一样,当时只是想做个好老师,但我比别人多两个目标:一个是希望自己继续考研,再有就是把自己往电子商务方向改造。03年秋天,第一次安装了刚上市的盗版windows server2003,接下来花费三天时间快速学习了ASP,然后用IIS发布了一个自己编写的留言板程序,一个注册页面,两个留言页面,接着用花生壳动态解析了我当时注册的一个51spark.com域名。接着兴冲冲地跑到女友哪里,让她舍友登录到我的网站。事后看到数据库里她填写的注册密码心中乐开了花,自己傻笑了好一阵子(唉,现在想想真是可笑,当时也没加密,直接用明码存储)。
研究生不顺利地以高分考上,读的是华中师范大学的情报学,但方向是电子商务管理。快快学了两年,因为成绩出众,准许两年提前毕业。在武汉开阔了眼界,锻炼了自己的英文阅读能力,硕士毕业论文,除了一本中文书外,剩下的都是外文资料,当时流行看哈利波特,别人看的电影,我看的是英文原版小说。回到单位,坐在熟悉的单身寝室,自己觉得心里空空,好似胸中有十万马力,却无处发泄。积蓄已久的能量被我一拳砸到桌子上,随着“碰”的一声响,我决定得该做点什么事了。
读研时有个学哥介绍过嵌入式,说钱景如何如何,当时也真没在意。现在我开始留意了,从网上找到了很多背景资料,详细了解后,觉得和自己的专业还算贴合,毕竟我在高校教计算机,C语言也有基础,所以06年下半年就开始了我的新的征程。可我当时并不知道,这条曲折的路自己走有多么的艰辛。
五、Linux
老婆说的事情其实就是Linux。现在想想真可能是长了个反骨,才敢在院内独树一帜地搞起了Linux,同事们很不理解,放着好好的windows不用,非得研究什么Linux,可叹可悲焉。我的回答也很干脆:因为我头顶反骨。
头上多个突起却并不影响人生的正常发展,和许多人一样,我当上了爸爸。儿子满月那天,我趁家人不备仔细地摸了摸他那小小的后脑勺,感觉很平坦,我就放了心。
儿子的出生带来的不仅是物质上的倾囊付出,体力上的透支,更致命的是带给人心理产生的变化。突然之间,我第一次感觉赚钱的紧迫,感觉到成为父亲的责任重大。看着小宝宝闭着眼睛悠哉游哉地吃着奶,我和老婆心里充满了对家庭生活的憧憬。但美好的希翼想完之后还得回到现实。一个问题,核心的问题:我,一个当爸爸的男人,该做什么,该怎么做?
儿子的诞生致使我坚定地开始走嵌入式系统的道路,因为这东西赚money来的快。对嵌入式根本就是超级无知的我开始了这段颠簸的征程。
嵌入式有两大软件平台,一个基于windows CE一个基于Linux。当时个人比较看好Linux的发展前景,就决定开始学习Linux。一直在XP的滋润下缓慢地成长,面对Linux真是束手无策。
当时从图书馆借来很多书,看着看着都糊涂了。后来静下心来,不断总结,终于找到了一条适合自己的入门路子:
1、学习Linux切不可从嵌入式入门。事实证明没有Linux的基础,从嵌入式Linux开始入门是极为愚蠢的做法,如果现在还有想从windows平台向Linux平台转移的同仁,请大家先别看嵌入式的东西。万丈高楼平地起,打好基础才是真;
2、操作系统的原理都一样,但具体实现却可能截然不通,更有复杂的结构纵横交错。Windows的经验不能照搬照抄地映射到Linux中来,他俩根本就是泰国拳王对少林寺方丈----拳脚根本不是一路;
3、学Linux特别入门难,主要是没有好点的教材,目力所及不是嵌入式就是系统管理,要不就是像ylmf似的照着windows发出个linux发行版一样,教材原样照搬地套上Linux,原来讲IE现在讲火狐,原来讲Word现在讲Writer。我还算运气好,有个清华大学出版社的书商来我们这推广免费教材样本,无意间碰到一个小册子名叫《Linux教程》(李洛、黄达峰编著)一共只有163页,但正是这本小册子才真真正正让我入了门,再看看其它一本本厚厚的美其名曰“入门”之著作鄙人真是不敢苟同,也不知道作者是不是真想让咱入门呐;
4、大家千万别以为Linux是操作系统,其实它只是个内核(Kernel)而已。Windows也有内核,所有操作系统都有内核,但内核没法直接使用。内核就像人的头,杀了头,人肯定死,好比Linux中的(Kernel Panic),你可以和它商量,我不杀你,你替我做什么什么事吧。这人一定痛快地报答您不杀之恩去了,这就好似在内核的控制下使用外围软件去执行具体的任务一样,于是不同的公司或团体用Linux的内核,加上了不同的应用软件,打包成一个大光盘挂在网上让大家用,就形成了N多的发行版;
5、选择什么发行版好呢。古有神农尝百草,今有我kevin试百遍Distribution(发行版)。使用过非常多的发行版后,我可以负责任地向大家推荐,吐血吐血:
入门第一式:看看。大家可以装个国产的红旗Red Flag、珠穆朗玛Everest、Magic Linux2.0,Hiweed等等。目的只有一个,就是看。
入门第二式:用用。您别光看,光看没用,必须得用。这时你对Linux发行版的长相心里大致有个了解。应该看看它能干什么了。强烈推荐使用Ubuntu9.10,它的实用配置和智能的升级功能最适合初学者。
提高第一式:换个版本。如果你已经喜欢上了Ubuntu,就是个危险的信号,因为你可以像用XP一样方便地使用她了,可是一直用XP能让你的体术有多大提高呢?现在是时候换个版本了,你别怕懒,有了Ubuntu的使用经验作为你的内功,再好好练练就可以升级了。推荐使用Fedora12,这个系统非常不错,也是Linus Torvalds(Linux的最早开发者,中文发音:里纳斯臭袜子O(∩_∩)O哈哈~)本人一直在使用的发行版,系统虽好可不要贪杯哦,有许多操作和设置需要你自己动手完成,比如你的移动硬盘是NTFS格式的,想要挂载怎么办,想要自动挂载又怎么办,这些都的自己去解决。你会发现这时的Linux本领长进很快。
提高第二式:请您使用Debian。世界上最为严格的Linux发行版,Ubuntu的母版。如果你修炼到了这个层次,非特殊原因,你不会不选它的。
终极式:直接自己建构一个发行版,所有东西都从网上下,然后自己做出个系统来用。这就是LFS,Linux From Scratch,好吧,自己亲自动手组装出来,感觉相当棒。
此外,还有一个美女式:使用OpenSUSE,全世界最美的Linux发行版,它美不胜收,常常令你忘记了谁才是你美丽的女友。
6、学习Linux的方法。世上有很多道理,只有经历了才会真正地懂得(我的名言)。学习计算机也是如此,Linux也是计算机技术的一个组成部分,毫不例外地和学计算机一个方法,那就是多看多想多练多想多练多看……。面对一个新问题,首先是看,了解一下,然后就是思考该如何解决,接着去试,出现了新问题再看,再想,再去试,如果没有问题,那就好好总结,成为自己知识库中的一部分。所以,说到底就是:做中学,学中做。切记切记,光看书看懂了是没用的,哪怕是1+1的问题,自己都要亲自上机实验,你可别自欺欺人呀。我还有句名言总给大家,叫做“看会不是会”。
7、学习目标。终极目标只有两个:使用命令和弄懂系统运行机理。很多人拿Windows的一套出来,在Gnome或KDE下美滋滋地学习呢,结果一到工作岗位上就傻了眼,真正的Linux应用更笨不需要视窗,只有命令才是王道!其次,学来学去东西可能都一样,但谁能学的活,做到活学活用,那就只有那些体会出系统运行规律的人才能do that。
8、学习路线。有钱途的方向无非两个:服务器和嵌入式。如果你觉得自己学习能力一般,那就选服务器配置作为自己的发转方向,都是别人已经开发好的软件,只要你多做笔记多加以练习日后定能成才;如果你小子极有潜质,那么就开始学嵌入式吧,物理的电路分析、模电数电、自己去焊个板子、学个汇编、搞下51、然后再是ARM,接着C编程BootLoader,再接着是内核裁剪、文件系统安装、脚本定制,别着急还有最恐怖的驱动开发呐。能让你疯掉,当然我就差点疯了,只是当时直接用嵌入式Linux入的门,现在想想真是后怕。当然你也可以依靠着Google的大山,开发些手机上的应用程序放到谷歌网店上卖,也可以基于Intel的Moblin做做文章,都不错。
六、初恋PHP
08年上半年昏天黑地干了三个月,做出了两套嵌入式系统软件,一个是车载影音播放系统,一个是汽车多媒体数字仪表盘系统,后者获得市发明大赛二等奖,呵呵,去领奖的时候组委会说我这个项目没能达到一等奖的程度,只有软件,没有实物,可是除此之外又没有更好的了,于是一等奖空缺,给我颁了二等奖。
能将自己的想法变成实用的作品,是我用嵌入式取得的一个成就。领奖回来我便马不停蹄地开始了一个重要的PHP项目,虽然当时没学过PHP。
那时为了方便开发,在windows平台下和Linux平台下分别安装了xampp,当然也用过EasyPHP、Apache套件等软件包,但是最后还是感觉xampp最适用,配置也超简单。于是在xampp上一场网上考试系统的开发大战上演了。
PHP语法几乎和C一模一样,就连平时常用的库函数都毫无二致。我便在课余时间,一边学PHP一边做开发。首先进行的是需求分析:我们学校没有自己的网上考试系统,06年底我教了半年的VFP课程,结课时就用VFP和SQL Server2000写了个局域网考试系统,同时考了我两个班近60个学生,效果很好。可那毕竟只是个局域网的,而且还是C/S架构,不够灵活。现在用的是前几年一个老师用ASP写的一个在线考试程序,只能考单选、判断和填空三种题型。而现在院里提倡教考分离,让别的学校老师为我们院的学生出题,由于教务处要求比较严格,外校出题的老师也和我们一样每次都得亲自到教务科去交题,然后等考完还得亲自批卷。
于是,我有了以下的改进方向:
1、出题、考试、试卷批改全部在网上完成;
2、采用身份识别,不同身份授予不同权限,而且学生的全部及老师的部分权限受教务处管辖,定时开放。比如每学期末留出一周网上出题的操作时限;
3、所有常见考试题型均可出现,包括单选、多选、填空、判断、名词解释、简答题、论述题、案例分析题等等;
4、人脑和电脑一起批卷,对于客观题当然直接和答案比对自动出结果,而主观题则以只读方式重现在阅卷老师的屏幕上,由老师人工给出分数,当然也有更高级的功能,支持关键词打分,比如名词解释题,标准答案一共有四句话,由出题人按句选出每句的若干关键词,然后系统自动和学生答案按照一个算法做匹配,相似度大于某个出题教师批卷时给定的值时,由电脑自动再按梯度给分,否则该题不得分;
5、强大的出题功能。系统分为固定ABC三套卷和题库两种出题方式。我们院规定每门课要出三套题,教务科在考前随机抽出其中一套考试,这样可以有效地保障考试安全,虽说大家都是如此,但每次考试几乎都是拿A卷出来考,如果A卷出现严重问题才换B,一般都轮不上C。此外就是每个系都可以自己按科目建立题库,这样老师一次性辛苦点出个题库,以后考试都不必再出ABC卷了,可以从题库自动随机组卷。我开发的系统可以一道一道地粘贴提交,也可以事先把题目保存到Excel表格或是Foxfro的表里,直接整体上传入库。
6、考试安全设计。教务处几乎拥有最高级权限,他可以创建添加教师学生用户、数据库,而且可以控制整个考试,例如明天早上8:00开始三论考试,三论老师提交的是题库,教务处相关人员于今天晚上下班前进行设置,让指定班级的学生在指定时间考指定的科目,如果设置完毕点击“考试开放”按钮,系统进入考试倒计时,到明早八点系统将考生学号做随机种子自动随机组卷,学生在监考老师的安排下按学号顺序入座,电脑上出现的试卷相邻都不一样。全班考试结束,系统自动封闭学生试卷,待教务处发出密码给相应阅卷老师后,老师才能用此密码进入批卷。
很好的设想,却不幸地流产了。所有功能全部实现,但是还没做CSS美化。我的代码惨不忍睹,放到市面上也许能骗俩钱,但我不能这么做,我知道自己写的这个其实太脆弱,华丽功能的外表下是乱七八糟的代码。于是连个正式的名字都没起,就长眠于我办公室的电脑中了。
事后我认真分析了失败原因,全部都采用面向过程的开发方式非常致命。那时我还没学面向对象,对PHP里的OOP不屑一顾,可是铁的事实向我宣告:稍微大点的系统、尤其是功能比较复杂的系统,面向对象设计绝对不可或缺;其次就是人手,一个人写上上千行的代码,还得排错,还得测试简直就是折磨,没有团队这事一般都弄不成;最后,是网络安全,那时的我还没有仔细研究Linux下的服务器配置,如果真的使用了这套系统,就靠xampp?那简直太可笑了,随便搞个冰河什么的扫下就能入侵,整个系统根本没有安全可言。
所以现在写点项目心得,告诫那些PHP的初学者:
第一,英语非常重要,必须学好,尤其是专业词汇定要掌握;
其次,在实际开发中,功能第一技术第二,不要过于看重技术,其实系统功能才是最重要的,不是你能拿出最新最炫的技术就有多么了不起,成熟稳定可靠那才是王道,看看中国银行的核心软件系统吧—Cobol写的,哈哈,上世纪的古董了,现在还在使用,为什么?还不就是因为它稳定可靠。技术不是万能的,没有技术是万万不能的,一个项目一般都需要使用好多不同的技术才能实现,比如咱们的网站,什么PHP啊,JS啊,Ajax啊,sql啊,xhtml啦,CSS啦,一堆一堆的,所以市面讲PHP的书都超厚,其实PHP的东西没几页,后面全是这些相关技术。那么,你有精力就多学点,多学总不是坏事嘛。
第三,学习以踏实为上。脚踏实地,先把基础打好。我是先学C后来转到PHP,我很难想象那些连指针都没弄明白的程序员如何能学好PHP,如果真的有一天你把顺序、选择、循环学完就可以闯天涯的话,那一定是到了2012年底。
第四,小打小闹的话学PHP可以浅尝辄止,但如果想搞点大家伙、多挣点Money,学不精面向对象绝对不行。面向对象当然也不是性病神药,一针见效,为了实现某个功能,灵活运用面向对象思想而不是僵化的语法才是良剂。
第五,培养面对挫折、面对失败的勇气,和承认错误、敢于担当的气魄。人非圣贤,都要犯错。错不可怕,可怕的是系统运行了,不正常,3个月你都找不出Bug。所以,未雨绸缪,平时多多积累错误,买一个超豪华的软抄,记下你犯下的错。它将是你工作上鱼跃龙门的帮手。有了错,如果时间允许,首先要自己去解决,解决不了再去问Google大神,大神都不知道,再问同事或上司吧。如果还是不行,唱支哥喜欢的歌宽慰下吧:神啊救救我吧!
最后,PHP开发,框架非常重要,没有框架就没有速度,除非你是超级牛X,一般人都需要选个框架好好学学,其实学那个都行,如果你想进大公司就用Zend的Framework,如果进外企就用Symfony,想快速入门就学CakePHP,英语不行的学ThinkPHP或QeePHP,我用的是CI觉得也不错。当然PHP的框架多如牛毛,和选择Linux发行版一样,没有最好,适合自己的才是真的好哦。^_^
七、LUF Plan的诞生
时间在不经意间滑到了2009年,财校和我们学校合作培养了一届电子商务专业学生,在财校完成三年基本学习后按意愿升入我们院继续学习。领导找我谈话,让我负责他们这两年的教学计划,第二天我交上了Linux+PHP的一整套方案,领导眼镜差点没掉,N多新名词,都没听说过。于是我又拿出做好的PPT,讲了讲这个方向的美好的就业前景,终于领导慢慢地点了点头。
后来认识一位专搞PHP的达人,那人告诉我全国教PHP的大学除了河南有一所外就是你们这有了。我很欣喜,在我们院高配机房用着Vmware装上CentOS足足讲了快两年的时间。我很投入,但也很头疼,学生们的成绩让我欣慰,头疼的是机房的环境实在是难受,如果一个人单独研究,用虚拟机能说得过去,一班好几十人都在使虚拟机就问题多多了,电子教室用不了,文件传输有问题等等,时不时死个机都是家常便饭,甚至有一次做Apache虚拟主机实验竟然烧掉了一个1G的条子。
教学年会上,在和别的学校同仁交流时发现大家都有这样的苦恼。机房电脑专门对windows设计,还原卡只能支持windows,即便有说能支持Linux的,不是说假话就是只能支持ext2格式的年逾古稀的Redhat9.0。
该如何是好?
就在这时,开源的思想影响了我。我希望提出一个公开计划,解决这些问题,并能得到众多志同道合的同仁的帮助。慢慢地,LUF计划浮出水面:
大学LINUX优先计划--LUF PLAN
一、提案1、提倡在大学校园中优先发展Linux;
2、统筹组织全国高校Linux推广联盟,增进各高校间的相互交流;
3、组织开发高校特色的Linux教学软件和Linux办公软件;
4、定期举办交流会;
5、在各地定期举办内容统一的讲座,宣传开源文化。
二、方案1、简称
Linux in University First(或lufe,口语:发音为卢非)
2、全称
Linux Replace Windows in University First
3、口号
Linux Replace Windows,Legal Replace Illegal
More fredowm,More Thinkness
Join, Share and happy
4、目标
第一步,大学机房和学生自有电脑中出现Linux常驻版本,硬盘安装而非虚拟机;
第二步,应用迁移,使更多的人把日常应用放在Linux系统中完成(游戏除外);
第三步,出现开源精英团队,开发出功能较为完善的基于Linux的各种软件。
5、任务
No1:开发出机房中易于使用,易于恢复的Linux教学系统,带电子教室功能;同时在行政系统中推广Linux特制的办公软件应急系统;
No2:加快、加深开源和Linux系统推广;
No3:培育基于Linux的创业团队项目
6、团员
LUFUer或LUFER(即LUF联盟,简称LUFU,发音为:卢佛儿):
我们需要您的热心参与,所有对Linux及开源文化感兴趣的大学教师、同学们以及社会各界同仁都可以加入到我们的团队中来
7、当前要完成任务
(1) 建立LUF网站
(2) LUF网站日常运维,人员待定
(3) 推广联盟,建立各大学校内的LUF团体
(4) 起草LUFU宣言
(5) 开发“蓝点”Linux教学系统
(6) 开发“红点”Linux办公系统
不是说Windows不好,只是想告诉更多的人Linux也不错,我们不应该完全在微软的控制下生存,我们需要更多的自由。如果您可以试试Linux,那么你就是一个正版化的推动者,我们将支持鼓励这种行为。
一切按照计划有序进行,领导也批准了我的申请。蓝点教学系统正在开发中,有两大方案:一是使用B/S结构,教师机安装双系统,在Linux上安装特定软件,学生通过浏览器访问,类似于VNC;另一种是C/S架构,通过定制U盘系统将上课所需的所有Linux环境装入其中。
现在CentOS下的飞鸽传书和电子教室软件已经测试通过,用飞鸽Linux下可以和windows互传文件,速度飞快,用Italc实现电子教室控制,linux的教师机同时控制windows和linux的混合环境至少40台电脑不成问题。
难的就是这些软件安装在哪里?
先考虑B/S,如果使用的是B/S架构,则只要教师机是高配即可。有两种方案可循,一种是操作系统虚拟化解决方案,一种是浏览器解决方案。
操作系统虚拟化方案:教师机安装CentOS5.2版本,安装OpenVZ这款操作系统级虚拟化软件,自己定制一个学生通用的模板,然后在课上做出40个虚拟机,这样每个学生都能得到一个纯净的系统,通过ssh或VNC远程登录,就能够以root身份完全操作系统,而且每次下课都删除这些新创建的虚拟机,下次再按模板虚拟就成,这本身不就是系统还原么。
浏览器解决方案:教师机安装Ulteo2.0开源桌面系统作为Session-manager(会话管理器),通过机房外网让教师主机接入我办公室的两台电脑,一台是windows服务器(提供windows下的应用程序),一台是linux服务器(提供linux下的应用程序),由主机虚拟出一个桌面,桌面上具有linux和windows下的应用程序可以同时使用,学生只需在浏览器中输入教师机IP便能访问。
至于C/S的方案就不多言了,PHP大赛的主旋律还是B/S,虽然最后实际定下的开发方案就是C/S。我们还是回到正题上来,OpenVZ是性能相当不错的一款开源软件,由于是操作系统级的虚拟化,所以它只能限制在母版的范围内,母机上是linux则只能虚拟出linux,母机上为windows则只能虚拟出windows,虽然不如全虚拟化的Vmware、VirtualBox那样随心所欲,但是OpenVZ的性能却是异常强大,高配电脑虚拟出几十台跑起来仍然不卡,换做XP+Vmware,你虚拟到第十个就该卡死了吧。
不过大赛基于PHP方向,OpenVZ不是PHP开发的,所以接下来就不会在OpenVZ的话题上费墨了。如果还有感兴趣的,可以到我的博客去看看这方面详细的配置:xinyuan365.cublog.cn。
其实这篇文章最后涉及到的Ulteo方案本身就是LUF计划的一个部分,只是因为实际测试时发现30以上人数同时访问速度较慢且教师机要求极高配置等原因导致Ulteo2.0方案被最终pass掉。但是实践说明这个方案在小众化方位内施行还是很成功,所以我仍然把这条方案的详细过程写出来奉献给大家。
好了,言归正传。接下来会给大家介绍基于Ulteo2.0的B/S解决方案,这部分分为linux和windows两个部分,我在考虑是在两个不同的板块贴出不同的内容,还是作为整体全部出现?
正在抉择中,也请大家说说看法。
八、无可奈何花落去
生活正在循规蹈矩日复一日地重复着,平静的表面下是危机四伏的巨浪,不知什么时候就会汹汹而来恣意拍打人们无奈的脸颊,不管喜不喜欢,你只能承受。
这个两校联合培养班,前无古人后无来者。初中起点的他们在我的悉心照料下成长很快,从无到有一点一滴一步一步走了过来,当我联系用人单位为他们开设专场Linux&PHP招聘会,带着他们在全国大赛取得好成绩,为他们提供了北京、沈阳PHP的N多实习实习岗位后,我手中的PHP实习报名表却空无一人。正在茫然之际,医院突然打来电话,通知我的老婆需要住院治疗,至少两个月时间。我独自一人坐在办公室那把熟悉的翻皮座椅上,冷风从关不严的窗缝中挤进来,铅黑色的阴霾渐渐笼罩了心里和窗外。
千万不能气馁,我对自己说。条条大路通罗马,世界上有许多选择,人人都有选择的权利,我们不能苛求别人非得按照自己的意愿行事,我尊重学生们选择。在学生面前我没有表现出任何不快,仍然一如既往精力充沛地带领他们做着实验,领导面前我仍泰然自若有条不紊地处理事情,课后我抽出时间继续着LUF计划,一下班我赶紧赶到医院陪伴我的爱妻,夜晚回到家还要和我大宝贝儿子玩耍一会。曾经有个叫纪敏佳的超女可能早已被人遗忘,我非常欣赏她的气度,她从未让她的歌迷看到她的眼泪。男人总得担当,他挑起的是种责任,这是我对自己的要求。
付出不一定有回报,不付出绝不会有回报,就像LUF计划,耗费了我相当多的精力,虽然还未正式发布,基础架构依然成形,却不知最终是什么命运。这里先给大家看一下Ulteo官网的一个图片:
大家可以看到windows的Office、Adobe Reader,Linux下的Open Office、Firefox、GIMP都在一个桌面上,这个桌面是虚拟出来的,客户端登录主机网站即可进入这个虚拟桌面世界。
感觉有点意思么?下面请已经登机的各位旅客系好安全带,我们准备升天了。
九、似曾相识燕归来
用Ulteo做的这个系统属于实验性质,只是在学校内网中让学生访问,感兴趣的站长可以将它发布到公网上,这一点问题都没有,当然您必须有超强的服务器体系(非集群莫属,一台服务器肯定是弄不好的)。
废话无需多言,直接进入正题。
1、安装准备
1.1 背景知识
Ulteo,项目全称Open Source Enterprise Virtual Desktop and Application Delivery solutions (Open Source VDI & SBC) ,它是基于Ubuntu发展出来的一个Linux发行版。Ulteo有别于其它Linux操作系统的最大特点在于类似于“云计算”的理念(也就是以前的“NC”概念)。除了一般的安装在本地计算机的版本,也可以通过网络登录,在支持JAVA的操作系统上通过浏览器使用。该功能的实现并不是一个模拟效果,而是真实系统的运行,包括各种应用程序的使用(文件编辑等)。
它具有以下优点,特别对是企业用户而言(本想直接上英文,后来心一横给大家翻译了算,当一把免费翻译官):
1.2 必知的系统结构(详见Installation_RedHat.pdf)
最小化的OVD系统需要一台会话管理服务器(Session Manager,SM)和一个应用程序服务器(Application Server,AS),Session Manager必须是LAMP架构的服务器。Application Server必须是运行Ulteo OVD服务的服务器,在这里虚拟桌面中的各种程序将被执行。
当然在一台服务器上跑出两个虚拟机也是可以的,不过系统消耗太大,我找来一个台式机(单核赛扬2.4+1G,CentOS系统上跑SM和linux下AS),两个笔记本(一个是03年的AMD1.6+512,在Windows Server 2003上跑windows的AS,一个是双核Athlon+1G,因为是64位,所以做测试用)。
1.3 高级知识(详见Protocol.pdf)
底层上,系统的开发应用了Hyper Text Transfert Protocol (HTTP),Remote Frame Buffer (RFB),Secure Shell (SSH),Remote Desktop Protocol (RDP)四种协议。
上层传输中Session Manager是核心,它通过确认Application Server服务器发来的全域名(Fully Qualified DomainName,FQDN)验证、注册和管理Application Server。
为了安全起见,系统只接受具有DNS服务支持下的授权行为,Application Server在发送状态码时,它将一起发送fqdn参数,这时Session Manager先进行2个授权验证,再执行1个授权操作:
• FQDN验证:为了验证FQDN 必须把捕获的IP地址与远程主机IP(就是PHP里的$SERVER[’REMOTE_ADDR’])进行比较,比较的结果将直接决定验证是否通过;
• 反向解析验证:反向解析服务器IP地址,并验证其是否与FQDN 参数相一致。注意,这次配对将直接决定能否授权(在我实际配置中出现过这样宝贵的错误,可以在后文的log里看到)。我们可以在管理控制台(administration console)中使用Disable FQDN check 选项禁止它(其实没必要禁止,我以为配置中的另一个错误是这个引起的,禁止该选项后仍然没解决,大家还是耐心往下读吧);
• 最终授权:测试收到的FQDN 与管理控制台授权了的FQDN defined是否一致。
以下是登录系统的逻辑过程:
主体代码全部由PHP写出,以下是主要的代码树:
+Session Manager webservices
-server_status.php
-server_monitoring.php
-session_invite.php
-session_status.php
-session_token.php
-icon.php
-application.php
+Application Server webservices
-server_status.php
-session_status.php
-server_monotoring.php
-applications.php
-kill_session.php
-server_version.php
-server_type.php
-icon.php
-apt-get.php
+Application Server first page informations
-access.php
-apps.php
-exit.php
-icon.php
-invite.php
-print.php
-start.php
-start_app.php
-suspend.php
-whatsup.php
2.2.1 LAMP平台搭建
肯请大家原谅,因为配置内容比较多,所以在此就不一一将LAMP平台的软件搭建及安全策略细写了,可以参看本次大赛别人的详细配置,有很多很好的文章。我就将火力集中到Ulteo上来吧,此时我安装了Apache,Samba,但没装MySQL。
由于Ulteo OVD现在和selinux还不能完全兼容,所以先将其关闭:
[root@linux httpd]# yum remove selinux-policy
启动Apache:
[root@linux httpd]# service httpd start
现在安装mysql数据库:
[root@linux httpd]# yum install mysql mysql-server
启动MySQL服务,并修改密码:
[root@linux httpd]# service mysqld start
[root@linux httpd]# mysqladmin -u root password '123456'
进入数据库,建立数据库ulteo_sm:
[root@linux httpd]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.
Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database ulteo_sm;
Query OK, 1 row affected (0.00 sec)
mysql> exit
Bye
2.2.2 安装Session Manager(sm.liukai.com)(详见Installation_RedHat.pdf)
现在vi /etc/yum.repos.d/ovd.repo,并写入以下内容:
[ovd-2.0]
name=Ulteo OVD 2.0
baseurl=ht tp://arc hive.ul teo.com/ulteo/rpm/rhel5/2.0
enabled=1
gpgcheck=1
gpgkey=ht tp://arc hive.ul teo.com/ulteo/rpm/ulteo-archive.key
OK,远程yum源建立好,再导入yum的KEY:
[root@linux httpd]# wget h t t p:// archive. ulteo .com/ulteo/rpm/ulteo-archive.key
--21:28:30--
ht tp:// archive.u lte o.com/ulteo/rpm/ulteo-archive.key
正在解析主机 archive.ulteo.com... 88.191.23.69
Connecting to archive.ulteo.com|88.191.23.69|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:19573 (19K) [application/pgp-keys]
Saving to: `ulteo-archive.key'
100%[=======================================>] 19,573
16.1K/s in 1.2s
21:28:43 (16.1 KB/s) - `ulteo-archive.key' saved [19573/19573]
[root@linux httpd]# rpm --import ulteo-archive.key
[root@linux httpd]# yum install ovd-session-manager
[root@linux httpd]# sm-config
Admin login: admin
Password:
Retype password:
Chroot download url [h t t p://w w w. ulteo.com/main/downloads/ulteo-ovd.php?suite=2.0]:
Chroot destination [/usr/share/ulteo/sessionmanager/base.tar.gz]:
Options:
* chroot download: yes
* chroot URI: h t t p://w w w. ulteo.com/main/downloads/ulteo-ovd.php?suite=2.0
* chroot directory: /usr/share/ulteo/sessionmanager/base.tar.gz
* apache user:
apache
* apache dir: /etc/httpd/conf.d
Is this correct? [Y/n] y
......
Configuration done.
Please reload the web server configuration to enable the service.
(这是一个漫长的过程,我花了1个小时左右,需要注意的是sm-config时不要开别的应用程序占用网络,否则可能会使本程序的Current Speed为0而长时间不能下载,如果此时Ctrl+C掉又不能续传,还得重新再来一次 )
2.2.3 安装Linux下的Application Server
现在在同一台主机上安装application-server包,这样主机就既是SM又是AS了:
[root@linux ~]# yum install ovd-application-server
[root@linux ~]# aps-chroot-install
Full Qualified Domain Name [linux]: 127.0.0.1
Session Manager URL: h t t p:// 127.0.0.1/sessionmanager
Chroot installation path: /opt/ulteo
Options:
* FQDN: 127.0.0.1
* SM URL: ht tp:// 127.0.0.1/sessionmanager
* chroot path: /opt/ulteo
* chroot download: yes
* apache user: apache
* apache dir: /etc/httpd/conf.d
Is this correct? [Y/n] Y
......
Installation done.
To activate the service you now need to:
* restart the web server
* run the following command:
chroot /opt/ulteo /etc/init.d/ulteo-ovdd start
(还是一个漫长的过程,时间一分一秒地过去了半个钟头)
[root@linux ~]# chkconfig httpd on
[root@linux ~]# service httpd restart
停止 httpd: [确定]
启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [确定]
[root@linux ~]# chkconfig ulteo-ovd on
[root@linux ~]# service ulteo-ovd restart
Re-starting ulteo-ovdd daemon
* Stopping ulteo-ovd daemon... [fail]
* Stopping portmap daemon... [fail]
start-stop-daemon: nothing in /proc - not mounted? (Success) [ OK ]
* Stopping periodic command scheduler crond [ OK ]
* Starting ulteo-ovd daemon...
* Starting OpenBSD Secure Shell server sshd [ OK ]
* Starting portmap daemon...
* Already running. [ OK ]
* Starting system message bus dbus [ OK ]
* Starting periodic command scheduler crond [ OK ]
* Starting Common Unix Printing System: cupsd [ OK ]
然后在浏览器里输入SM的地址看看吧。你会看见如下的页面:
原因也写的很明确了,现在进入后台管理,输入admin,密码123456
刚进来的时候,要在这里填写数据库名、主机名等内容,用PHP的站长想必相当熟悉吧:
OK,现在填好内容,这一步我机器的配置大家都可以参照,十有八九是一样的:
接下来配置起作用了,回到了管理主界面:
请大家看,在Unregistered Servers里出现我的Linux AS:
点击register进行注册,并修改网址重定向内容,如果你需要的话:
现在再到Profile Settings里头,这可是我碰壁最多的地方了,就像仙剑一最后的迷宫一样难走:
各位同胞注意了,Profile里有三个选项:Internal、LDAP和Active Directory。要想把Windows的程序也拿进来,就必须用微软的协议,在此我们要使用Active Directory活动目录。以下就是设置页面:
3、战场转移至Windows Server 2003
姗姗来迟的Windows终于粉墨登场,哇,掌声鼓励下(吴宗宪)。接下来让啊呀(给大家讲个故事,来个开场白)。
谢谢各位捧场,故事现在开始:
3.1 Windows Active Directory
现在LDAP(Light Directory Access Protocol,轻量级目录访问协议)越来越流行,目录技术成为信息存储、管理与查询的首选方案,它让用户一个用户名走遍天下,而不必总是记忆一大堆用户名和密码,而深受ISP的喜爱。正如TCP/IP和OSI网络协议簇一样,目录也分为LDAP和X.500两种,X.500大而全,LDAP是它的精简扩充体,省去了X.500的冗杂变得更为简单可行而且可靠。现在市面上有Microsoft Active Directory和OpenLDAP两个软件非常流行,后者为开源软件。平日我最爱开源,但今天有些郁闷,必须使用闭源的Active Direcory。
3.2 LDAP中的基本概念
LDAP是一个比关系数据库抽象层次更高的存贮概念,与关系数据库的查询语言SQL属同一级别。LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。
列几个常用的属性名和它代表的意义(在LDAP中属性名大小写不敏感):
cn 常用名称,常常是dn的一部分
dn 唯一辨别名,类似Linux文件系统中的绝对路径
ou 组织单位
dc 域名成分
uid 用户标识
好了,到此打住,网上有很多教程,想进一步弄明白的自己看去吧。我现在就要安装啦。
3.3 安装Active Directory
请大家按图索骥:
然后进入服务器向导
接着下一步哦:
再接着下一步,选域控制器:
还是下一步
接下来,波折开始了...
呜呜呜
插入我的移动硬盘啦~~~
启动AD向导开始正式安装:
然后需要固定IP,大家先想想为什么,我待会告你。
当当当,答案揭晓:
下一步即可:
选择创建新域控制器:
接下来用默认:
这一步非常重要:
起个名吧自己:
再写个名字,其实叫aps更好的,现在有点后悔了我......
以下使用默认:
呵呵:
准备安装DNS服务器吧,哥们:
用默认:
填写密码:
直接下一步:
初始化啦:
老老实实放入系统光盘:
等待DNS安装完毕:
完成AD向导:
OK,成功了:
现在,Windows下的AD就似乎就建立好了,接着请到Ulteo官网上下载Windows版本的OVD代理程序,开始安装啰。
这是初始化界面:
接下来就同意呗:
然后就是安装目录,老一套啦:
这里要特别注意,如果你这个代理最后不能安装成功,几乎都是错在这里:
这时,程序差最后一步现在是不能安装完的,就让这个程序先歇着...
然后,Windows下.../etc/hosts文件,倍感亲切,就是让大家看一下而已,没有这步也成,只是我现在DNS服务器还没配呐,所以用这个将就先:
回到管理控制台,添加一个用户lk,因为要和windows中的lk一样,我们就用这个去连通AD:
接着是新建个组student:
在组里把lk加入进来:
现在回到Profile中,用students和lk连接AD,结果失败:
这是我碰见的第一个难缠的问题。费了N多功夫,终于在一堆英文资料中受到了启发,是不是我Server Host和Domain写错了呐。赶紧再改,这回写Windows里的参数:
成功了,不容易啊!现在就能看到:
别着急,亲爱的朋友们。现在才能把Windows下的Ulteo代理程序最终装完,它就等着AD连通呢:
不幸再次出现,当我满心欢喜地回到Unregistered Servers时,竟然没有发现Windows主机,本来应该连接成功,能显示出Windows机器的呀。天呐,你怎么这么折腾人啊,不管我怎么刷新,Windows中的Ulteo-OVD服务怎么重启,SM就是不认它。气急败坏的我在谷歌里疯找了一通,未果。此时,我强迫自己静下心来,仔细考虑。我开始逐渐排查,从log入手,在/opt的ulteo中找到log,打开一看,傻眼了,截出一小部分:
Jan 19 23:37:42 - 192.168.1.3 - WARNING - "win.aps.liukai.com": reverse DNS is invalid! (aps.liukai.com)
Jan 19 23:37:42 - 192.168.1.3 - ERROR - (webservices/server_status) Server not authorized : 'win.aps.liukai.com' == 'win.aps.liukai.com' ?
Jan 19 23:38:44 - 192.168.1.3 - ERROR - Abstract_Server::load(win.aps.liukai.com) server does not exist (NumRows == 0)
Jan 19 23:39:45 - 192.168.1.3 - ERROR - Abstract_Server::load(win.aps.liukai.com)
原来是DNS反向解析警告哦。呵呵,这个难不倒我,我又开始在Windows Server里把liukai .com域的正向反向解析全配一遍,接着重启Windows中的Ulteo-OVD服务,唉,还是没出来。再看看log:
Jan 20 00:10:55 - 192.168.1.3 - ERROR - (webservices/server_status) Server not authorized : 'win.aps.liukai.com' == 'win.aps.liukai.com' ?
Jan 20 00:10:56 - 192.168.1.3 - ERROR - Abstract_Server::load(win.aps.liukai.com) server does not exist (NumRows == 0)
看来关键问题在这里啊,服务器没有通过验证!可我现在到那里去让它验证呐?回过头来,再次查看了Ulteo的Datasheet,发现线索,赶紧回到管理控制台中,在Server Settings中进行设置:
需要设置两个,还有一个127.0.0.1就不在这里展示了,但是大家必须知道有这回事。
现在,哈哈,高兴中:
同台竞技:
赶紧注册:
把它发布出来,第一步:
第二步,可以添加Linux或Windows平台下的给定程序,太多多,就选几个吧:
第三步,为配置命名:
最后一步啦,别点错就行:
现在拿出双核笔记本,连上网,先从Sun的网站下载Java装上,学校机房都是XP的,于是我也进到XP里,重启浏览器待Java生效,输入网址登入系统:
准备进入:
刚刚进来,迫不及待拷屏了,呵呵,有些图标还没出来呐:
赶紧试个程序跑跑吧:
看到我给大家写的话了吗,哈哈。
其实这只是Ulteo的冰山一角,除此之外负载均衡、文件同步、高级虚拟桌面等功能不能一一在这里介绍了,毕竟时间、精力不允许,此外评审也不愿意啊:“你写不完了小子~~~拿我们康盛当天涯呢?” ,所以到这里就要结束了。希望大家能够喜欢,文章中我还故意留了三个隐藏支线,大家可以在试的时候有意外的发现。
刚看到坛子里有人说我这是部小说,那我写个有始有终的小说吧。
十、大结局
下午,从医院到家的路上,雪花骤然飘落,而后越下越大,眼前的世界慢慢变成了模糊的一片。有得必有失,我觉得一个人心底最美的地方是记忆,是那些不能再看到的美好,是遗憾把它变成了真正的美丽。当然,遗憾就是种美。于孤独中承受着遗憾,正是在享受着另一种美,它艳而不俗,雅而不涩,那么这个人就在体会着幸福的不幸和不幸中的幸福。虽然人们同时经历着幸福和不幸,但是并不知道它们其实就是一回事。
汽车路过我的学校,在大雪中我却清楚地看到我办公室的那个闭不严的缝隙,不觉心头涌起一阵酸楚:
十年磨一剑,锋芒射雪寒。
雄心荡四海,未谋征赴还。
肩斜凤羽镞,腰束龙皮鞭。
待会子期面,邹忌已干颜。
后记
上述文字记录了我近十年的心路历程,绝对原创,转载请注明出处及作者。文章写到的一些入门途径和学习方法比较适合初学者,自己开发的PHP考试系统的部分让大家见笑了,Ulteo系统的配置写的比较详细感兴趣的可以照着做,文中却也谈到对人生的态度及一些处事方式,乃一家之言仅供消遣,如有共鸣,本人不负法律责任,还有就是故事里的一些“哲学”希望能起到抛砖引玉的作用。
感谢我的家人对我参赛的支持,特别感激仍在病榻上的爱人,没有你的鼓励我不会如此完整地写出这篇文字,希望你快快病好。
chinaunix网友2010-07-19 11:12:23
凯哥,我是帅。 嫂子的身体康复了吗?? 你可要多照顾照顾嫂子啊。 我在这里祝福嫂子的身体早日康复。也祝愿:凯哥事业顺利,和家欢乐。----帅
chinaunix网友2010-02-23 13:30:54
凯哥谢谢你两年来对我们的培养--你说的对我们是前无古人后无来者的一批人,同时我们也对自己存在着太多的不信任,看着你的文章我想起了你带领我们走过的一段历程。我会深深的铭记,不管如何我以曾和你一起学习为荣。在linux的道路上你自己走的时间太长了,如何我可以我愿意再次和你走在一起,虽然我在实习,虽然我白天没有时间。可是我愿意把我一个月3天的休息日和全部的晚上的时间来帮助你---只要你认为我可以----谢谢你凯哥,是你让我们真正的成长---这声谢谢是对你一个大哥哥说的-- 刘鹏飞