准备好一个人面对忙碌的每一天

今天又加班了。上次是我所在的项目组release前的周五,我还有三四个bug没有修复完,又不想浪费她回家之前的最后一个周末的时间来加班,只得和另外几个同事加班到快9点,终于全部完成。

今 天加班是因为公司要release一个Demo去争取新的客户。Demo的代码来自我所在的项目之前发布的一个版本,里面bug很多,而且Demo要添加 几个新的功能以便满足客户的需求。可能是为了锻炼我这个新人,Leader把任务交给我了。从昨天到今天一直很顺利,可惜到最后集成测试的时候还是发现了 问题。关键是问题不在我的code中,我无法控制。在Leader和另外几个同事的帮助下,我又尝试了好几种方法,依然不行,现在只能等到明天了。我得早 早的赶去公司,争取在9点前顺利release出来,不然问题就大了。

在诊断问题的时候,我真的有种无助的感觉,出问题的哪部分其实与我毫无关系,我更是不熟悉那一部分的work flow,基本是毫无办法。好在Leader一直陪着我,帮我分析问题,定位问题,很感动。希望明天一切顺利。

回到学校已经快9点了,食堂早已没饭了,只好自己去水房打水,买泡面。

在那一瞬间,有种很凄凉的感觉。

现在还能天天见到宿舍这帮兄弟,还能和老蔡联机杀轰龙,还能听老杰说他今天在魔兽世界里那些有趣的事,听阿宽感叹Ubuntu的界面多么漂亮。但是再过那么一小段时间,连他们都很难见上一面了。

我很害怕的一天终究还是要来了。我要准备好一个人面对这每一个伴随着bug,代码,大小会议的,忙碌的每一天了。

发现自己真的是一个很害怕孤独的人,从小就如此,只不过有那么一段时间将自己伪装得很好罢了。

等租房以后,每天下班后我就要一个人面对空荡荡的房子。躺下看书?玩PSP?上网?除了这些我想不出还能干什么。

Stop!Stop!Stop!

我 不能继续想了。什么都不想了,当熟悉的人都即将离开的时候,至少还有我自己,至少我还是我。从今天开始要善待自己了。吃得不带劲?去个好点的饭馆补上一 顿!PSP玩腻了?买个NDS去,或者直接来个PS3,X360!其实早就悟出那个道理了:谁都没法真正对你好,除了你自己。

只是不知道这几年过了我会成什么样。也许会是个更加沉默的,活在这个大世界却沉溺在自己小小世界里的小小程序员吧。

真怀疑自己是不是入错行了……

阅读全文

A New Start

不得不承认,做什么事情我都有一点点三分钟热度,不能持之以恒。研究技术、写博客、维护个人网站、玩Linux甚至游戏,我都有点喜新厌旧,对什么都浅尝辄止,尝试一下就放下来了,没办法深入地研究进去。这是一个非常不好的毛病,尤其对马上开始程序员生涯的我来说更是如此。

前两天去公司把三方协议最后一点点签完了,还碰巧认识了另一个被录用的“准同事”,以后可能会一起租房。331号开始上班,以后就不会有现在这种自由了,就不能天天9点多起床,悠闲地打开Google Reader看新闻了,也不能将大把大把的时间浪费在发明不知所云的“REST”框架上了。

希望开始工作以后,自己的“三分钟热度”能有所改变。

最近正在看《DOOM启世录》,这是第三遍仔细看这本书了。两个John的那些经历总是让我非常神往的,而John Carmack这个“神一样的游戏程序员”更是我的偶像。书中最后的《译者后记》里有一段话:

“这不是艺术也不是基础研究,这是工程学(Engineering),这里面几乎没有天赋或偶然的因素,这里面只有一次次的尝试,一次次的从头再来。卡马克并不是只写了一个有蓝色虚空的引擎,接下来找到并解决问题,然后完工。早在迈克尔·亚伯拉什加入时,卡马克就已经写了20多个截然不同的引擎,他甚至在一个月内写过4个引擎!如果汗水之外真的有1%的所谓灵感,用卡马克的话说,那也是‘只有在很多个小时的艰苦工作后才能得到的东西,它不像人们通常以为的那样,可以用眼睛盯着天花板等待灵光乍现,你必须真正钻研进去’”

现在我用这段话勉励自己。

阅读全文

未知的2008

两个月没有更新了。

两个月里发生了很多事,不过对我来说最重要的是:我终于找到工作了,而且这份工作让我的梦想成真了。以后我也是软件行业的一员了,以后我也是程序员了!

找工作的过程对我来说非常顺利,甚至,有点过于顺利了。我只面了两家公司,第一家公司是金山软件,在一面的时候被鄙视;第二家是Works Systems,一家天津的小软件公司,最后通过了。真的是有点过于顺利了。现在已经签约了,就等4月开始上班了。

虽然已经是上周的事了,但是现在想想,还是有点激动。想想自己大学的这几年,心里很有感触。

我一直都相信,成功最终还是要靠自己努力的,靠别人,靠父母,靠关系,都没什么意思。这几年,我还算是努力的。我觉得自己很幸福,因为能为自己喜欢的东西而努力。想当初为了调试一个C程序,在网吧坐了三个小时,面对TC的蓝屏;想当初学习C 时,每天都有新的收获的那种快乐的感觉;想想用allegro写小游戏的那些乐趣;花一个十一长假的时间系统学习了JSP并且做出了自己的个人网站;第一次感受到Spring的精妙之处;第一次开发基于SSH系统;第一次用Ajax制作个人网站……这些点点滴滴都浮现在眼前时,我才发现,那些像是玩的过程,我其实一直都是在努力的。

记得刚要开始找工作的时候,同学跟我说,不一定非要当程序员,不一定非要进入软件行业。当时我还很认同他,因为把自己的爱好作为事业来做,也许会很失望。我也曾想过找一个普通的工作,把程序当成我的爱好,像现在这样,不带任何功利性的去热爱技术,学习技术。可是,当我们开始找工作的时候,我才发现,我只能选择走下去,挑战一份程序员的工作。每每在JavaEye上看那些大牛们热情地讨论一些设计思想,技术细节的时候,我发现,原来自己真的好想成为他们其中的一员,好想融入到他们的文化中!我必须融入到这个行业中,哪怕几年后再发现自己后悔当初的选择。也许,这就是梦想的重量吧。

找工作的过程中,我投出的简历大约只有10份不到,投的全部都是技术类职位,没有投过任何别的行业,别的职位。

现在的我,很欣慰,一点也不后悔自己的选择。只要肯努力,我相信我还会有进一步的成果的,我非常地相信!

就像同学说的一样,以前每一年的这个时候,都大体知道未来的一年会干什么,在哪里,但是这一年不是这样。谁都说不好会发生什么,会去哪里(也许我现在还是大体可以预测的──在天津华苑的某一个写字楼的某一层的某一间办公室里,写代码 ^_^)。我真心地祝福我所有的朋友和亲人们,新年里一切顺利。也祝我在自己职业生涯的第一年里,一切顺利!

阅读全文

一些闲言碎语

好久没有认真更新博客了。自从开始使用“饭否”以后,我更习惯用那种简洁的方式表达自己。可博客终归更容易表达自己的感情。现在正好没事,索性更新一篇。

说到写博客,我认为自己的一大憾事就是文笔不行。无论是写一些技术随笔还是心情日记,我都发现自己写出来的东西和自己想要表达的多少有一些出入。都怪高中把大把大把的时间都花在电脑上了,没有机会好好体会方块字的韵味。我对古文,古诗词什么几乎一窍不通,高中学过的那些几乎都不会背了,实在是惭愧。

十一长假的时候我们宿舍组织了一次大港一日游(照片可以看我的Flickr相册),虽然是一个月以前的事了,但是一直没有撰文写写感受。大港变化很大,至少现在已经很有大学样了,不像我们刚上大学时那么破。重游大港,让我倍加思念大一大二那段美好的时光。宿舍里李果用它的复读机播放《不再犹豫》,以至于后来我们用电脑听的时候觉得不够“带劲”,因为复读机放出来速度比较快;我和楠弟天天晚上去机房排队“上机”;每隔一段时间会来我们学校的那些二手书小贩,其中一个老板竟然还知道C#读作C Sharp,令我大吃一惊——所有这些点滴小事仿佛电影一样一幕一幕在脑海中浮现。想当初自己还是一个什么都不懂的新手,一步一步从基础学习,到现在也算有所成就。然而当初的那种感觉,那种在机房用有限的时间调试一个个总是有bug的程序的那种感觉是怎么也找不回的。

《冰风谷三部曲》的第二部《白银溪流》里崔斯特有一段独白,我特别喜欢:

怀旧的愁绪可能是我们所告诉自己的谎言中最大的。它是拿美化了的过去当标准,来情绪性地看现在。对有些人而言,它可以给我们带来某种程度的安慰,让我们重新感受自己与自己的根源。但是我担心对大部份其他的人来说,这只会让他们扭曲了记忆,并且因此对周遭的现实浑然不觉。
我怀疑有多少人在渴望“当年更单纯,并且更美好的世界”。他们从来没有看出事实上是他们自己当年更单纯,更美好,而不是这个世界!

昨晚熄灯后在门口借着走廊的灯光看书,有那么一个瞬间,突然意识到我们离毕业有多么近,顿时伤感的情绪填满心扉。我那么怀念大港的岁月,那么怀念过去,不就是崔斯特说的那种“怀旧的愁绪”吗?我不止一次想象过那么一个场景:我一个人,在一个陌生的城市,孤独一人面对忙碌的一天又一天。一想到这种场景,我就禁不住伤感起来。怀念过去是因为自己害怕面对这种未来。也许只是我还没有长大而已,终究我们要学会面对这个社会的,哪怕是独自一人。

看看自己以前的博客,发现自己写过很多“怀旧愁绪”的文章。这种情绪经常会缠绕着我。不知道这算不算“多愁善感”,但绝对是不成熟的一种表现。好在这只是暂时性的,我相信自己会从这种情绪中解脱出来的。对我自己,我还是很有信心的。

周杰伦的新专辑非常好听,我最喜欢的曲目是《彩虹》,那种有着淡淡伤感的吉他声很适合这个季节。

希望看完文章的人能留个言,最近几篇文章的评论数都是0,郁闷……

阅读全文

世上没有B/S系统,只有B系统和S系统【转载】

这是我在JavaEye上看到一篇文章,我是100%同意作者的观点,而且正在努力实践他所说的那种思想,比如我的个人网站就正在这样实践。

原文地址:http://www.javaeye.com/topic/123265

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

先说些与标题貌似无关的话.

随着prototype DWR 等ajax框架的流行,
服务器端生成js代码返回客户端,由客户端调用(直接调用或eval)似乎已经成为了一种很正常的做法(是否流行我不知道).

这种做法(其实是一种设计)本身无可厚非,但是常常被人错误的理解和应用
(此处所谓的"错误"是基于我的立场,也许更多的人会认为我的观点才是错的 呵呵).

用过DWR的人都知道,实际上DWR传给客户端的JS并不是包含了很复杂的业务逻辑和表现逻辑,他只不过是向客户端发送了一些信息,
这些信息告诉了客户端如何调用服务端暴露出的服务.这些信息本质上只是一些数据,确切的说只是一些参数.
DWR实现的web remoting,只是对下面这种做法的一个变种.


代码
ajax.request("service对应的url","service需要的参数","service调用结束后要做的事情")  


DWR传过来的JS,实际上的只是扮演着"service对应的url","service需要的参数","service调用结束后要做的事情"这些参数所扮演的角色.
对于真正的业务逻辑还是包含在服务端的service里.

所以我不止一次的说过"没什么事情是必须要用DWR那种方式来做,而用prototype servlet做不了或是做起来很困难的".
因为两者都能够做到而且也都正做着同样的事情.

但是DWR的这种做法有时候会产生一些不良暗示:服务端生成js供客户端调用是一件很不错的事.
甚至容易让人把这种做法和JSF的事件机制混为一谈.
于是通过ajax请求返回的信息变得丰富多彩.其中最可怕的就是返回复杂的HTML和JS脚本.

现在还有一种可怕的事情是 客户端提交js脚本,服务端用rhnio运行
(我曾就就做过这种可怕的事 呵呵,但是那个系统尤其客观性,不过其实完全可以避免的,只是当时懒了).

在一个ajax的请求与响应中,服务端与客户端交互的信息应该只是作为数据载体的字符串(xml json序列等).
这些数据会告诉对方要去做什么 以及为对方提供必要的参数,而不应该包含告诉对方怎么做.
传递js语句也可以,但是这些js语句一定要是能够和json划等号的,任何夹杂了 if for = 等操作的js都是应该极力避免的.

在服务器端生成HTML的做法实在是为了照顾羸弱的浏览器而做出的让步,其实这种做法本身完全是个错误,
不过在相当长一段时间内,我们还将继续错下去.

当然我这里说的完全是ajax相关的东西,JSP、tag不在讨论范畴之内,
但我还是要补充一句: 我虽然曾大量是使用和开发tag,但我对它是非常厌恶的,
使用上也许还比较愉快,但是开发起来真够恶心的.我讨厌一切在服务器端生成html代码的行为.
关于tag这是另外一个很大的话题了,以前在javaeye上的相关讨论并不少,在这里就不再多废话了.

好了,现在该说些和标题有关的东西了(晕).
我先问几个问题:
当你要整合两个分别使用 j2ee 和 php 编写的系统时,
当你要在一个j2ee系统中使用php系统中的一部分功能时,
当你要从一个j2ee系统向另一个.net系统中传递数据时,
你会怎么做?
会变态的用java重写另外一个系统?
会更变态的将j2ee系统用php/.net重写吗?
会用j2ee生成php/.net可以理解的代码,让对方运行吗?

不会的,你首先想到的会是WS,会是MQ,会是REST,会是SOA.....

其实服务端 与 客户端 就是两个独立的系统,而且是两个独立的异构系统.
处理他们之间的关系和处理两个大型的异构系统的关系非常类似,应该咬住"服务"二字不放.
所谓"服务"应该是: 生产者提供,消费者享用.
而不是: 你告诉我我每一步要怎样做,然后我再一步步的做给你看. 这不叫服务,这叫"奴役".
任何企图在一端生成另一端代码的做法都是欠妥当的.

因为世上没有B/S系统,只有B系统和S系统.

多说一句,GWT如果设计成是在运行期生成最终html/js代码的,那么他将是愚蠢的,幸好他们没那么,但是现在的他离愚蠢也不远.

这篇文章同样比较凌乱,也不知道我说明白我想说的没.

其实我只是想告诉大家(主要是新手),应该站在服务的角度来看待系统的层次和结构,
每一层只是向其他层提供服务,并享用其他人的服务,而无权干涩别人提供的服务的细节,也不应该让别人干涉自己.
有了这样的认识,如何传递数据,如何做到系统层次件的解耦就是很自然的事情了.

当然本着"世事没有绝对,凡事都有例外"的原则,我这些观点不适用于所有系统.


以上观点只代表我个人看法(当然有一些观点不是我首创),欢迎大家提出反对意见.

阅读全文

Ajax风格的个人网站建设中……

隔了好长时间没有动过的MJS空间重新被我利用起来了,目前正在制作一个mash-up风格的个人网站,今天晚上已经能够做出了新闻模块的基本功能,现在访问,可以看到一个Ajax风格的新闻载入过程。

其他的功能还要一步步完善,不过有了今天的工作成果,以后的开发工作会简单许多的。看到这篇文章的人可以去看看http://www.myjavaserver.com/~moonranger/

最近在学习Ajax,有不少想法,择日撰文详述。

阅读全文

我的第一个AJAX程序

刚才花了两个小时,成功完成了我的第一个AJAX程序,目前心情比较兴奋……

程序很简单,页面上只有一个链接,点击后通过AJAX从饭否获取最新的留言,并更新页面,显示这些留言。为什么会想到做这样一个东西?因为前些天我在注册饭否的时候,发现它开放了系统的API,可以在自己的AJAX程序里使用,这让我非常兴奋,所以决心在学习AJAX的时候尝试使用一把!

今天晚上主要有这些收获:

1.终于对DIV CSS的Web2.0时代布局模式有了一定理解,算是入门了。理解了CSS的盒模式,会了一些基本的属性。其他内容深入学习中……

2.mootools的JSON.Remote类的使用。说实话,mootools将JSON和AJAX的功能包装得太好了,我几乎没费什么功夫就学会了如何使用,实在是很简单,至少对一个有经验的Java coder来说很简单。饭否的API包括XML和JSON两种版本,为了查看JSON的结构,我还使用了curl这个工具来查看结果。

3.意外的收获:测试程序的时候,主要的代码我没有放到事件处理程序里,而是裸露在外面,在页面载入的时候就执行了。这时我发现结果不正确,后来把代码放到连接的事件处理函数中以后就没有问题了。原来我的代码里有DOM操作,如果放在外面执行,页面可能没有载入完成,DOM自然也不完整,我需要的一个NODE自然也无法获取。也许我说得不太对,希望有经验的高手指导。

AJAX虽然不是什么很高深的技术,但是由它带来的全新的Web开发模式却能改变未来。可以引用我在JavaEye论坛上看到的一封帖子的一句话来总结:世上没有B/S系统,只有B系统和S系统。服务器和浏览器端本来就是应该严格解耦合的。服务器端处理业务功能的运算,处理数据的CRUD等,并暴露一组“标准”的接口给用户;而浏览器端则使用AJAX,Flex等技术与服务器进行异步数据交互,提供用户界面。

相比这种Web2.0模式,传统的Web模式有着很大的弊病:服务器和浏览器之间传输的都是HTML文档,数据和显示方式耦合在一起了,系统之间,尤其是异构系统之间很难共享数据,更别说互操作了。

再过一段时间就要为毕业设计选题了,目前我的初步想法就是开发一个Web2.0的OA系统。还要进一步学习才行,要避免我的最大毛病:浅尝辄止!

加油!

阅读全文

一起来饭否吧!

刚刚发现了一个不错的Web2.0网站——饭否,马上就注册并开始使用了,左边我的签名里就能看到。它像是一个微型博客,有着多种发布消息的方式,比如通过MSN和QQ机器人或者短信,在上面可以发表一些简短的消息,特别适合发牢骚用,呵呵~~大家可以用用看,记得加我为好友。

现在没什么时间也没什么心情写博客了,饭否是个不错的替代方案,呵呵~

刚才换了一个头像,这次用了我最喜欢的奇幻文学角色——崔斯特!

阅读全文

放假归来

其实到学校已经快一周了,可是一直什么都不想写,感觉还没有从放假的安逸中归来,没有意识到自己正在荒废大学的最后一年。

这个暑假整个都是玩过来的,一行代码都没有写过,书也没有看几页,想必很多知识都已经有些遗忘了,也有种没有目标的感觉。本来说回家后要好好研究研究Web Service和AJAX,可惜只是简单地看了看,并没有真正学习点什么。暑假玩得太“猛”了,到现在还没有恢复过来,天天在宿舍还是玩,无所事事。

我不想在这里说任何的消极的话,就像曾经我做过的一样。玩就玩了,我不后悔,只是要慢慢调整,开始为下一阶段的拼搏作点准备了。

以后的事情,先放一放,不如回忆一下暑假中的美好。

这个暑假,如果让我总结的话,我会说是属于“奇幻”的暑假。我看了好几本奇幻小说,玩了好几款奇幻游戏,对我这个十足的奇幻爱好者来说,这个暑假我过得十分“充实”。暑假里我复习了一遍《黑暗精灵三部曲:旅居》和《冰风谷三部曲》,重温了崔斯特的那些冒险故事,并终于第一次看了《半身人的魔坠》,见识到了崔斯特和恩崔立的宿命对决,真的很精彩。书中对恩崔立这个人物的描写让我立刻迷上了各种游戏中的敏捷型人物。

而暑假的大部分时间我都花在了《上古卷轴3:晨风》上了,以前虽然也玩过,但是还从来没有这么认真地玩过,主线剧情,资料片剧情我全部都通关了,人物身上也有了特别厉害的装备。下面这些是我在游戏中的“靓照”(不要说我丑,为了cosplay崔斯特,我特地选择了黑暗精灵作为我的种族)。

就写这么多吧,精彩的文章以后再献上。对了,我为自己的爱机加了一条内存,现在一共有1.5G内存,其中256M作为共享显存,现在勉强能运行《上古卷轴4:湮灭》,我正在体验中。

阅读全文

家的感觉

回家已经好几天了,但却没有得到多少家的感觉。生活过得很无聊,很没劲,但是又不能彻底地放松,彻底地去“无聊”,“没劲”。心里总想着一些别的事情,感觉憋得慌。我想,一个面临毕业又不想考研,对未来多少有点没底的人可能在这个暑假都会有类似的感觉吧?

真后悔这么早回家,早知道会这样就待在学校了,至少还有点学习的气息,能踏踏实实坐在电脑前写点程序,充实一下自己的知识,或者哪怕只是玩,也能玩得比现在安心点。

回家那天老爸就问我关于考研和工作的事,问我希望从事什么样的工作之类的。当我说自己想当程序员的时候,老爸那充满怀疑的声音让我很慌张,很难受。我禁不住想:自己到底行吗?表姐顺利考上了中国传媒的研究生,现在正和她的导师一起在黑龙江电视台实习。真是幸福啊,不用考虑那么多。还有很多家人都问我为什么不考研了,我都有气无力地回答:“考研不太适合我。”真的不适合吗?一年后就会有答案了。

算了算了,不想这么烦心事了。本来决定回家就是为了逃避这些无畏的担心,为了能安心休息一下自己的身心,准备迎接更大的挑战,没想到…………

这终究还是我自己的原因,是我自己的不自信在作怪。我应该学会去克服这种不自信了。也许学习会让我好起来吧。

刚才看了看一些程序员求职指导,也明白了自己不足的地方,要学习才行啊。使自己变得有信心的最好办法就是充实自己!看来真的要行动起来了!

写完这篇文章,心情 好了不少,要开始努力了。

阅读全文