乔布斯在斯坦福毕业典礼上的讲话

一直就很崇拜Jobs,这篇稿子讲的非常好。本来看的是英文版,这里找到了中文版,谢谢CCF的朋友,共享出来。推荐朋友们看完!
我今天很荣幸能和你们一起参加毕业典礼,斯坦福大学是世界上最好的大学之一。我从来没有从大学中毕业。说实话,今天也许是在我的生命中离大学毕业最近的一天了。今天我想向你们讲述我生活中的三个故事。不是什么大不了的事情,只是三个故事而已。
第一个故事是关于如何把生命中的点点滴滴串连起来。
我在Reed大学读了六个月之后就退学了,但是在十八个月以后——我真正的作出退学决定之前,我还经常去学校。我为什么要退学呢?
故事从我出生的时候讲起。我的亲生母亲(biological mother)是一个年轻的,没有结婚的大学毕业生。她决定让别人收养我, 她十分想让我被大学毕业生收养。所以在我出生的时候,她已经做好了一切的准备工作,能使得我被一个律师和他的妻子所收养。但是她没有料到,当我出生之后,律师夫妇突然决定他们想要一个女孩。 所以我的生养父母(他们还在我亲生父母的观察名单上)突然在半夜接到了一个电话:“我们现在这儿有一个不小心生出来的男婴,你们想要他吗?”他们回答道:“当然!”但是我亲生母亲随后发现,我的养母从来没有上过大学,我的父亲甚至从没有读过高中。她拒绝签 这个收养合同。只是在几个月以后,我的父母答应她一定要让我上大学,那个时候她才同意。
在十七岁那年,我真的上了大学。但是我很愚蠢的选择了一个几乎和你们斯坦福大学一样贵的学校, 我父母还处于蓝领阶层,他们几乎把所有积蓄都花在了我的学费上面。在六个月后, 我已经看不到其中的价值所在。我不知道我想要在生命中做什么,我也不知道大学能帮助我找到怎样的答案。 但是在这里,我几乎花光了我父母这一辈子的所有积蓄。所以我决定要退学,我觉得这是个正确的决定。不能否认,我当时确实非常的害怕, 但是现在回头看看,那的确是我这一生中最棒的一个决定。在我做出退学决定的那一刻, 我终于可以不必去读那些令我提不起丝毫兴趣的课程了。然后我还可以去修那些看起来有点意思的课程。
但是这并不是那么罗曼蒂克。我失去了我的宿舍,所以我只能在朋友房间的地板上面睡觉,我去捡5美分的可乐瓶子,仅仅为了填饱肚子, 在星期天的晚上,我需要走七英里的路程,穿过这个城市到Hare Krishna寺庙(注:位于纽约Brooklyn下城),只是为了能吃上饭——这个星期唯一一顿好一点的饭。但是我喜欢这样。我跟着我的直觉和好奇心走, 遇到的很多东西,此后被证明是无价之宝。让我给你们举一个例子吧:
Reed大学在那时提供也许是全美最好的美术字课程。在这个大学里面的每个海报, 每个抽屉的标签上面全都是漂亮的美术字。因为我退学了, 没有受到正规的训练, 所以我决定去参加这个课程,去学学怎样写出漂亮的美术字。我学到了san serif 和serif字体, 我学会了怎么样在不同的字母组合之中改变空格的长度, 还有怎么样才能作出最棒的印刷式样。那是一种科学永远不能捕捉到的、美丽的、真实的艺术精妙, 我发现那实在是太美妙了。
当时看起来这些东西在我的生命中,好像都没有什么实际应用的可能。但是十年之后,当我们在设计第一台Macintosh电脑的时候,就不是那样了。我把当时我学的那些家伙全都设计进了Mac。那是第一台使用了漂亮的印刷字体的电脑。如果我当时没有退学, 就不会有机会去参加这个我感兴趣的美术字课程, Mac就不会有这么多丰富的字体,以及赏心悦目的字体间距。那么现在个人电脑就不会有现在这么美妙的字型了。当然我在大学的时候,还不可能把从前的点点滴滴串连起来,但是当我十年后回顾这一切的时候,真的豁然开朗了。
再次说明的是,你在向前展望的时候不可能将这些片断串连起来;你只能在回顾的时候将点点滴滴串连起来。所以你必须相信这些片断会在你未来的某一天串连起来。你必须要相信某些东西:你的勇气、目的、生命、因缘。这个过程从来没有令我失望(let me down),只是让我的生命更加地与众不同而已。
我的第二个故事是关于爱和损失的.
我非常幸运, 因为我在很早的时候就找到了我钟爱的东西。Woz和我在二十岁的时候就在父母的车库里面开创了苹果公司。我们工作得很努力, 十年之后, 这个公司从那两个车库中的穷光蛋发展到了超过四千名的雇员、价值超过二十亿的大公司。在公司成立的第九年,我们刚刚发布了最好的产品,那就是Macintosh。我也快要到三十岁了。在那一年, 我被炒了鱿鱼。你怎么可能被你自己创立的公司炒了鱿鱼呢? 嗯,在苹果快速成长的时候,我们雇用了一个很有天分的家伙和我一起管理这个公司, 在最初的几年,公司运转的很好。但是后来我们对未来的看法发生了分歧, 最终我们吵了起来。当争吵不可开交的时候, 董事会站在了他的那一边。所以在三十岁的时候, 我被炒了。在这么多人的眼皮下我被炒了。在而立之年,我生命的全部支柱离自己远去, 这真是毁灭性的打击。
在最初的几个月里,我真是不知道该做些什么。我把从前的创业激情给丢了, 我觉得自己让与我一同创业的人都很沮丧。我和David Pack和Bob Boyce见面,并试图向他们道歉。我把事情弄得糟糕透顶了。但是我渐渐发现了曙光, 我仍然喜爱我从事的这些东西。苹果公司发生的这些事情丝毫的没有改变这些, 一点也没有(did not changed one bit)。我被驱逐了,但是我仍然钟爱它。所以我决定从头再来。
我当时没有觉察, 但是事后证明, 从苹果公司被炒是我这辈子发生的最棒的事情。因为,作为一个成功者的极乐感觉被作为一个创业者的轻松感觉所重新代替: 对任何事情都不那么特别看重。这让我觉得如此自由, 进入了我生命中最有创造力的一个阶段。
在接下来的五年里, 我创立了一个名叫NeXT的公司, 还有一个叫Pixar的公司, 然后和一个后来成为我妻子的优雅女人相识。Pixar 制作了世界上第一个用电脑制作的动画电影——“玩具总动员”,Pixar现在也是世界上最成功的电脑制作工作室。在后来的一系列运转中,Apple收购了NeXT, 然后我又回到了Apple公司。我们在NeXT发展的技术在Apple的复兴之中发挥了关键的作用。我还和Laurence 一起建立了一个幸福的家庭。
我可以非常肯定,如果我不被Apple开除的话, 这其中一件事情也不会发生的。这个良药的味道实在是太苦了,但是我想病人需要这个药。有些时候, 生活会拿起一块砖头向你的脑袋上猛拍一下。不要失去信心。我很清楚唯一使我一直走下去的,就是我做的事情令我无比钟爱。你需要去找到你所爱的东西。对于工作是如此, 对于你的爱人也是如此。你的工作将会占据生活中很大的一部分。你只有相信自己所做的是伟大的工作, 你才能怡然自得。如果你现在还没有找到, 那么继续找、不要停下来、全心全意的去找, 当你找到的时候你就会知道的。就像任何真诚的关系, 随着岁月的流逝只会越来越紧密。所以继续找,直到你找到它,不要停下来!
我的第三个故事是关于死亡的.
当我十七岁的时候, 我读到了一句话:“如果你把每一天都当作生命中最后一天去生活的话,那么有一天你会发现自己是正确的。”这句话给我留下了深刻的印象。从那时开始,过了33年,我在每天早晨都会对着镜子问自己:“如果今天是我生命中的最后一天, 你会不会完成你今天想做的事情呢?”当答案连续很多次被给予“不是”的时候, 我知道自己需要改变某些事情了。
“记住你即将死去”是我一生中遇到的最重要箴言。它帮我指明了生命中重要的选择。因为几乎所有的事情, 包括所有的荣誉、所有的骄傲、所有对难堪和失败的恐惧,这些在死亡面前都会消失。我看到的是留下的真正重要的东西。
你有时候会思考你将会失去某些东西,“记住你即将死去”是我知道的避免这些想法的最好办法。你已经赤身裸体了, 你没有理由不去跟随自己的心一起跳动。
大概一年以前, 我被诊断出癌症。我在早晨七点半做了一个检查, 检查清楚的显示在我的胰腺有一个肿瘤。我当时都不知道胰腺是什么东西。医生告诉我那很可能是一种无法治愈的癌症, 我还有三到六个月的时间活在这个世界上。我的医生叫我回家, 然后整理好我的一切, 那就是医生准备死亡的程序。那意味着你将要把未来十年对你小孩说的话在几个月里面说完.;那意味着把每件事情都搞定, 让你的家人会尽可能轻松的生活;那意味着你要说“再见了”。
我整天和那个诊断书一起生活。后来有一天早上我作了一个活切片检查,医生将一个内窥镜从我的喉咙伸进去,通过我的胃, 然后进入我的肠子, 用一根针在我的胰腺上的肿瘤上取了几个细胞。我当时很镇静,因为我被注射了镇定剂。但是我的妻子在那里, 后来告诉我,当医生在显微镜地下观察这些细胞的时候他们开始尖叫, 因为这些细胞最后竟然是一种非常罕见的、可以用手术治愈的胰腺癌细胞。我做了这个手术, 现在我痊愈了。
那是我最接近死亡的时候, 我还希望这也是以后的几十年最接近的一次。从死亡线上又活了过来, 死亡对我来说,只是一个有用但是纯粹是知识上的概念的时候,我可以更肯定一点地对你们说:
没有人愿意死, 即使人们想上天堂, 人们也不会为了去那里而死。但是死亡是我们每个人共同的终点。从来没有人能够逃脱它,也应该如此。 因为死亡就是生命中最好的一个发明。它将旧的清除以便给新的让路。你们现在是新的, 但是从现在开始不久以后, 你们将会逐渐的变成旧的然后被清除。我很抱歉这很具有戏剧性, 但是这十分的真实。
你们的时间很有限, 所以不要将他们浪费在重复其他人的生活上。不要被教条束缚,那意味着你和其他人思考的结果一起生活。不要被其他人喧嚣的观点掩盖你真正的内心的声音。还有最重要的是, 你要有勇气去听从你直觉和心灵的指示——它们在某种程度上知道你想要成为什么样子,所有其他的事情都是次要的。
当我年轻的时候, 有一本叫做“整个地球的目录”振聋发聩的杂志,它是我们那一代人的圣经之一。它是一个叫Stewart Brand的家伙在离这里不远的Menlo Park书写的, 他象诗一般神奇地将这本书带到了这个世界。那是六十年代后期, 在个人电脑出现之前, 所以这本书全部是用打字机,、剪刀还有偏光镜制作的。有点像用软皮包装的google, 在google出现三十五年之前:这是理想主义的,其中有许多灵巧的工具和伟大的想法。
Stewart和他的伙伴出版了几期的“整个地球的目录”,当它完成了自己使命的时候, 他们做出了最后一期的目录。那是在七十年代的中期, 你们的时代。在最后一期的封底上是清晨乡村公路的照片(如果你有冒险精神的话,你可以自己找到这条路的),在照片之下有这样一段话:“保持饥饿,保持愚蠢。”这是他们停止了发刊的告别语。“保持饥饿,保持愚蠢。”我总是希望自己能够那样,现在, 在你们即将毕业,开始新的旅程的时候, 我也希望你们能做到这样:
保持饥饿,保持愚蠢。(Stay Hungry. Stay Foolish.)
非常感谢你们。

做完作业,看看新技术

昨天做完了作业,所以今天是一个相对自由的日子。
GF说她喜欢看Friends,我就把十季都给她下来了,结果带动我也一块儿看,主要是想联系一下听力。很幽默,而且经常围绕Sex,呵呵,看起来挺新鲜的……
而今天的最重要的工作其实是研究一下MyEclipse等一堆新技术。
先看了一下MyEclipse 4.0 M2的一些新的支持,然后以此为起点开始学习它支持的一些新的框架。Hibernate、Struts、JSTL这些用过,只是修改了版本,所以没有更着重于发现。

不过发现对Hibernate3的支持中,MyEclipse可以自动生成SessionFactory,挺好,如果没有写服务的话用这个统一的Session管理也是很好的。
从简单到复杂吧:
1、首先看了JSF:这个东西经常听说,是Sun主推的,把界面完全面向对象化,组件化,是Web里面比较有潜力的一个框架。但是这个东西似乎发展的很慢。我发现Sun推的东西总是

比较难以迅速普及,真可怜。大家都在抱怨这个框架没有好的例子,用的人似乎不多,总是处于开发阶段,什么都不太成熟。但是看程序员介绍Java Web Creator可以直接集成开

发JSF应用,看起来不错,因为好的IDE是效率的保证。研究了一下发展趋势我就没有进一步的研究技术细节,不过了解到JSF偏向程序员的观点,面向对象特性非常好,不过我本人

倒是对这个无所谓,因为界面本来就不应该是程序员写的,界面也根本不必要面向对象。我这么说肯定很多人不同意,也许都是程序员吧:D
2、看了看Tapestry:说实话,这个东西真的是让我非常兴奋。Apache jakarta项目下面的一个框架,东西比较轻量,是一个简单清晰的MVC实现。它的Controler层比较多的依赖后

面的商业逻辑,这样的设计个人感觉会提高效率,并且队分层的清晰没有影响。如果前面用个Struts那样的重一些的框架,分层的时候经常会过度设计,后果嘛,嘿嘿,就是运行

慢维护繁琐。
我最欣赏Tapestry的地方在于它很好的解决了分工问题,它明确的将显示叫给html,而将业务代码巧妙的隐藏在html tag的属性里面,对页面代码的侵入非常的小,所以它的模版

页面都可以用Dreamweaver这样的WYSIWYG设计工具来开发。考!这可是绝对的好消息,这样美工就是美工,程序员就是程序员,不会让程序员拿着美工的页面胡乱修改造成显示效

果差强人意了(呵呵,有点偏袒美工)。程序员的逻辑方在于html绑定的配置里面,Tapestry有两种常用组件,一个是Page一个是Component,一个渲染页面一个是抽象的页面组件

,反正都是面对显示的界面,非常适合做Web方式的J2EE表现层。
另一个令人感觉舒服的地方是分散的配置,看一看典型的Tapestry配置都很简单,一个.application里面只需要配置一些程序级别的设置。而所有的页面和动作都可以分散部

署,.html和.page或者.jwc关联确定一个动作或者页面设置,同时可以调用后面的Java Bean,相互比较独立,不用集中描述部署符,可能比较适合我的思维方式吧。同时Tapestry

也支持多语言,每个页面或者组件都可以对应多种语言,可以通过.html的命名方式或者关联的properties命名来支持多语言,分开的描述还是很舒服。
还有个地方,发现Tapestry的所有后面的Action都是Abstract的,看了说明,它服务的时候会动态派生具体类运行,这样的并发多线程挺好玩,具体优略就不得而知了,但是估计

不错,要不为什么特别亮出来Show。
然后,事实上,我跑了一个Tepestry的HellowWorld,然后修改了些动态的东西,体验了一把新技术就放弃了,放弃的原因主要如下:
因为正在开发的项目用Struts,用了titles来管理布局。以前用惯了JSP:include,而Tepestry里面没有直接的布局类,现在的东西移植不过去,找了一下真的没有特别好的实现。

用了一个特别的html兼容模版结构就没法用jsp里面那些第三方插件库了,这个是个损失,有得必有失。发现Tepestry的程序做简单的项目的比较多,大一点的估计就Appfuse有了

,没有经历仔细研究,放弃了。不过看到Sitemesh这种开放的布局框架可以与Tepestry结合,弥补这方面的缺陷,Appfuse就是这么实现的。
Tepestry对我的另一个打击是刚刚出了Tepestry 4.0Beta2,而且似乎很快就可以正式版了。而现在的仅有的书Tepestry in action是对应3.0的,其他的文章和例子也都是3.0的。

去官方网站发现Tepestry 3.0和4.0的区别是很大的,开源框架从来都是这样,整数版本号一变化就别想平滑升级了,头疼头疼。我仔细看着Tepestry的官方的上手指南开发,不过

我的Myeclipse是只支持3.0的,麻烦,搞了半天,到后来的复杂的例子总是调试不好,发现都是版本冲突造成,变化太大,我又不熟悉,所以干脆就放弃了。干脆等版本稳定一些

再仔细学习吧。同时提一下Tepestry现在年轻气盛,本身很优秀,但是文档很少,中文文档更少,官方网站也提出目前Document还不完善,所以还是要等社区建立好一点,我再入

手吧。
顺便抱怨一下,Struts 1.1 to 1.2,Hibernate 2 to 3,Spring 1.1 to 1.2变化都特别大,学习资料互相冲突,原来的代码都需要比较多的修改才能部署,让新入手的人碰壁再

碰壁,没办法呀……,开源的进化就是跳跃性的。
4、看了看Appfuse。不想多说了,造就下载了,当时没有搞定。但是当初为了这个才装了Ant,才有了后来的学习……这次再挑战,我又是走了无数的弯路,一直ant install-xxx

、ant new、ant这样的运行修改,怎么都搞不定。其中引出修改Tomcat配置符,修改Mysql密码等一系列问题,不多说了。我把Tomcat自动部署从Build.xml中注释掉了,最后发现

用ant setup就可以安装了,靠,他们说明文档怎么不写清楚,我编译的是Struts+Spring+Hibernate的版本,准备对比不同版本研究一下这个程序。说实话能把它部署上真的是太

好了,本来很简单我却走了那么多弯路,可惜,不过有了这样的Demo,估计对以后的开发有帮助。其实在这之前我还花了大量时间调试Spring+Struts+Hibernate组合,在

Myeclipse里面,不过没有搞定,主要是嫌麻烦,写了一半又删掉了,然后又想写……反正耽误了不少时间,以后应该减少这样的事。
5、下载了马达加斯加、史密斯夫妇、马拉松、世界大战这几个电影,都是比价期待的,发现品质还都可以接受,呵呵,周末和她一块儿看。
6、前两天把和平之月一个系列的Mp3全部下载了,真的是很棒的世界音乐。可以去Verycd搜索和平之月,我下了2x张专辑,这是一个唱片公司的厂牌,所以专辑众多,都是亚洲风

情的。
7、升级了下我的ant,忘记说了,否则无法运行appfuse,它需要1.6.2以上的ant,最新好像是1.6.5。我发现ant.apache.org访问不了,很久以前就不行,下载真的挺麻烦的。奥

,对了,还有andromdaMDA,这个东西是个开源的MDA,对于Hibernate开发可以把数据库设计->映射->Pojo这样的过程反过来,建模->生成POJO和映射->数据库设计,也就是模型驱

动开发,有时间研究一下。
Ant可以去这里:http://mirrors.isc.org/pub/apache/ant/binaries/apache-ant-1.6.5-bin.zip
或者这里:http://www.javaresearch.org/members/jross/ant/apache-ant-1.6.2-bin.zip
8、张楚推荐了这个Video:
http://www.nytimes.com/video/src/2005/06/29/technology/highbandwidth/windowsmedia/20050629_GUEST_VIDEO_HI.asx
号称iPod flea,iPod跳蚤,很搞笑的讽刺了Apple:D
9、周日看了Jobs在斯坦福的毕业典礼上的讲话,很受感动,推荐大家Google一下看看。Jobs是Apple的传奇CEO。

今年是本命年~

最近很多事不顺利,原来是本命年。
造就听说本名年不好过的,我不迷信,但是尊重传统,我又红腰带但是没有拴,我只是戴上了ZZ送的桃木珠子避邪,希望能够走运一点……
今天去换我买的E5 Mp3 Player,这个是我支持国货的结果,被召回了,换了个新的,明天再写具体经过,不过今天的温度是38度,我家室内温度31度,我骑车去中关村的路上戴着墨镜还是感觉晃眼……
而后去学校办我的灵通卡挂失,要在开户行。结果我16:50到了储蓄所门口,不开门,敲开门他们说下班了,我在外面看明明是17:00才下班。结合上次我去工商银行挂失他们连通知我电话挂失都不懂,真是感觉失望。而这次的提前下班也令人气愤,一个服务性的行业,9:00-5:00营业,你给谁服务呀??
我们不欠银行的,你们银行卡收费就要提供相应的服务,你们的收费已经是国际水平了,而服务我估计也就是个东南亚落后国家水平,你们凭什么那么牛气??
又想起上次去青岛,只有市中心才有工商银行,哎,真为工商银行失望,我这么信任你,你却多次让我失望,我欠你什么??
答案是我什么都不欠你的,等我开始挣钱了,我绝对不在工商银行理财,你们的服务还是需要提高水平的,起码对得起你们收我的血汗钱!!

微软的鼠标质保真是个问题!

又是让人头疼得事情:
1、我的光学银光鲨4.0也就是IE4.0坏掉了,左键失灵经常单击失败、双击失败、单击变双击,这些毛病交替出现电脑都没法用了。暂时用了IE3.0。
2、托我爸爸给我送修IE4.0,我这个是盒装的。我本来打北纬(原微软硬件代理)没有人接,然后让我爸直接送以前去过的理想大厦地下一层了。结果被告知北纬不负责IE4.0的保修,说已经转给讯宜了,这个代理我们都熟就是做精英ECS起家的那个。我爸爸 给讯宜打电话,他们要求先给他们序列号,不告诉他们的地址,结果告知我的IE4.0没有在他们的产品序列号库里面!靠,我中文盒装,保修卡注册卡所有都是齐全的,怎么可能不是行货。北纬都说这是他们的货!结果讯宜说不在他们的库里面。我不愿让我爸为难,让 他赶快回来。
3、我继续电话找讯宜,问了他们我的所有疑问,反正他们说北纬给了他们所有他们卖出来的正品IE4.0的序列号,而我的不在里面,他们要我去找北纬确认。我找北纬继续没人接电话。然后我气急败坏的给微软打电话,他们态度非常好,但是提供的答案非常让人失望 ,他们说讯宜说没有我的序列号就说明我这个不是水货或者是假冒产品,说不用找北纬了,北纬已经没有代理资格了。我真是非常的生气,北纬的保修的人看了我的IE4.0的盒子都信誓旦旦的说这个肯定是他们的行货,而且说只要是这种完整的中文包装肯定是行货!我 仔细看了,我这个盒子和鼠标没有伪造的嫌疑。而且咨询了卖给我鼠标的momoko,他也说是他朋友找微软进的货,肯定行货。我,我是没地方评理了。
4、我怀疑应该还是北纬当时有地下操作的可能,不过这种操作的受害者不应该是以行货价格购入IE4.0的最终用户!而应该由北纬负责。况且讯宜完全应该保证数据库的完整,并且通过包装盒的确认来辨别行货!因为他们的数据库很有可能有纰漏的,作为一个懂得程 序的人这个都能理解。可是做售后服务的人肯定是拿鸡毛当令箭,而我作为一个弱小的消费者哪里有精力跟他们较真,认栽好了。
5、然后干脆自己动手……没有买到一样质量的微动,找到的替换品5毛钱一个,个人感觉手感太差。所以干脆把侧键的前进键和我的左键交换了。IE4.0的纵横滚轮那一块的结构真实够复杂的,拆起来修真的挺费时,老是怕把塑料件给搞坏了,还好,最终没有搞坏什 么东西。用吸锡烙铁拆了两个微动,交换焊接,5分钟搞定。装起来试验,没有问题了。但是,我确定IE4的微动的寿命绝对有问题,我用的非常爱护还是出现这样的问题,哎,我发誓,我下次绝对不买微软的鼠标了,除非他实际加强品控和渠道建设!

解读Wave文件头结构

解读Wave,文件头解释,可以用16位编辑器UltraEdit打开,然后可以观察文件的结构。
我发现对应C语言里面的字WORD(32位),16进制文件对应2个字节(Byte),而DWORD(64位),对应4个字节。
然后顺便普及一下16进制文件的存储规律,对于WORD,先存储低位字节,然后存储高位字节,而DWORD,则先存储低两位的低位,然后是低两位的高位,然后是高两位的低位,然后是高两位的高位。
介绍一下WAVE文件的结构:
标志符(RIFF)
数据大小
格式类型("WAVE")
"fmt"
Sizeof(PCMWAVEFORMAT)
PCMWAVEFORMAT
"data"
声音数据大小
声音数据
查到C语言中对应的WAV的文件头结构如下:
Typedef struct
{
WAVEFORMAT wf;//波形格式;
WORD wBitsPerSample;//WAVE文件的采样大小;
}PCMWAVEFORMAT;
WAVEFORMAT结构定义如下:
typedef struct
{
WORD wFormatag;//编码格式,包括WAVE_FORMAT_PCM,WAVEFORMAT_ADPCM等
WORD nChannls;//声道数,单声道为1,双声道为2;
DWORD nSamplesPerSec;//采样频率;
DWORD nAvgBytesperSec;//每秒的数据量;
WORD nBlockAlign;//块对齐;
}WAVEFORMAT;
然后我们根据实际的一个文件的文件头进行对比分析,然后大家就应该明白了:
首先是一串“52 49 46 46”这个是Ascii字符“RIFF”,这部分是固定格式,表明这是一个WAVE文件头。
然后是“E4 3C 00 00”,这个是我这个WAV文件的数据大小,记住这个大小是包括头文件的一部分的,包括除了前面8个字节的所有字节,也就等于文件总字节数减去8。这是一个DWORD,我这个文件对应是15588。
然后是“57 41 56 45 66 6D 74 20”,也是Ascii字符“WAVEfmt”,这部分是固定格式。
然后是PCMWAVEFORMAT部分,可以对照一下上面的struct定义,首先就是一个WAVEFORMAT的struct。
随后是“10 00 00 00”,这是一个DWORD,对应数字16,这个对应定义中的Sizeof(PCMWAVEFORMAT),后面我们可以看到这个段内容正好是16个字节。
随后的字节是“01 00”,这是一个WORD,对应定义为编码格式“WAVE_FORMAT_PCM”,我们一般用的是这个。
随后的是“01 00”,这是一个WORD,对应数字1,表示声道数为1,这是个单声道Wav。
随后的是“22 56 00 00”,这是一个DWORD,对应数字22050,代表的是采样频率22050。
随后的是“44 AC 00 00”,这是一个DWORD,对应数字44100,代表的是每秒的数据量。
然后是“02 00”,这是一个WORD,对应数字是2,表示块对齐的内容,含义不太清楚。
然后是“10 00”,这是一个WORD,对应WAVE文件的采样大小,数值为16,采样大小为16Bits。
然后是一串“64 61 74 61”,这个是Ascii字符“data”,标示头结束,开始数据区域。
而后是数据区的开头,有一个DWORD,我这里的字符是“C0 3C 00 00”,对应的十进制数为15552,看一下前面正好可以看到,文件大小是15596,其中到“data”标志出现为止的头是40个字节,再减去这个标志的4个字节正好是15552,再往后面就是真正的Wave文件的数据体了,头文件的解析就到这里。
下面从别人的文章转述文件体的数据格式:
16位单声道:
采样一(低字节、高字节),采样二(低字节、高字节),……
16位双声道:
采样一[左声道(低字节、高字节)、右声道(低字节、高字节)],……
这样,我就明白了WAVE的文件结构了,希望大家能够从中得到帮助。

Sin City是个不错的电影

只能说非常非常的酷……
明显是漫画改编的电影,画面给人的感觉很震撼,黑白的处理令人印象深刻。
这种类似动作电影的东西,一般比较弱智,不过这个片子的处理还不错,很多细节,所以逻辑上还是需要你参与其中的。缺点是叙事上讲了三个故事,本以为能够像《低俗小说》的处理一样最后汇成一个完整而精巧的故事,但是失望了,只不过是三个不相关的故事发生在了同一个场景里面而已,从情节上感觉还是缺了点精妙。
但是,还是推荐大家去看一看,因为画面很酷、演员都很酷、化妆和颜色应用很酷、情节很酷、对白很酷、似乎一切都很酷,绝对不像那个《Be Cool》一样只是名字酷而已!
BTW:测试了一下,Space里面还是没有自-由!

几个不说不快的不快!

1、我想做事认真。希望事情能够发展的完美一点。结果作一个高级系统分析与设计的作业,其实就是写需求分析,我却花了两天的时间认真的看UML和建模的方法,当然都是快餐的方式,结果做作业的时候才发现这些学习对作业没有什么帮助,作业还是要糊弄,还是体力活一个,因为所有的作业不过是无病呻吟,做没有意义的努力,没有意义的工作又花了我2整天时间。所以对于没有意义的工作我为什么要追求完美呢?我有嗲强迫症的倾向了。
2、翻译,三个人一块儿翻译,语音联系中进行翻译。每个人的翻译有自己的思维烙印,强迫统一真的很难。我觉得大部分精力都花在沟通上了。其实每个人翻译一部分也就差不多了。准备翻译的是这本书John Wiley & Sons – Software Testing Fundamentals,也许要花3个月,前提是出版社同意的话。这一小段只是表达想法,这个并不是不快。
3、然后是最烦的。在周六早上发现钱包不见了,一直放在我的小背包里面的,这两天没有用到。本来以为是掉在哪里了,可是没有找到,心里想也许……没那么倒霉吧。着急出去找ZZ,就走了。正巧,钱包里没有现金,本来有100的,周四给ZZ买了张电话充值卡花掉了,她还我的钱放到兜里面了,还在。路上想到应该先查一下卡的钱。到ZZ家,马上上网查我的一卡通,这个最担心,因
为密码是生日(倒霉,我爸爸开的户结果用了这个……,一直没有改),卡里有800块货款,前一段时间卖命挣的1600的一半。结果吃惊的发现只有7.20了(损失800),一网通里的钱还在,我本能的马上网上挂失了。然后马上登陆淘宝,刚买了个东西把钱从支付宝划到招行账户了,结果发现幸好淘宝效率很低,2天还没有到账,所以钱没被提走。
4、然后就是马上通知我爸爸去挂失掉工商银行的卡,不过还好这个卡密码不是什么生日,放心一些。我爸爸在工商银行拿户口本等一大堆证件挂失,结果不知道卡号,用存折查确不知道存折密码(存折是北航给办的,我不知道密码,或者是我爸爸输入错了)。结果咨询以后人家告知没法挂失……办事效率极低……人家说要到开户行挂失。我想明天再说,因为北航太远了。
5、晚上回家,我想起这个牡丹灵通卡是前不久换过的,有手续的内容。找到卡号,上网登陆工商行网络银行(型号前一段时间用过,开通了),然后察看钱没有被取走,然后马上也网上挂失了。但是接到提示,说这是临时挂失,还需要去储蓄所重新挂失。
6、我去了储蓄所,带上了户口本和那个手续,还有存折。结果工商行的人说要挂失一定要知道卡号、存折号、两个的密码才可以挂失,要我必须要到开户行才可以。我说我只是想保证我的钱的安全就可以了,他们表示没有办法保证。我很生气!
7、回家,打95588,工商行服务。我想投诉,电话占线了半天以后他们告知储蓄所说的不对,在电话里挂失就可以保证钱的安全,而且只需指导卡的密码就可以挂失。然后我就电话挂失,结果又被告知已经网上挂失了,不用再挂失了,说已经保证钱的安全了。我问他们有我的身份证能不能给我消户,他们告知不能,七天以内可以代办挂失,但是必须要代办人的身份整,而且不能把钱取走
,其它情况一定要本人办理,我放心了。过程很复杂,我觉得安全得到一定的保证,可是我对储蓄所非常的不满意,他们就不能告知我可以电话挂失和保证安全??!!
8、然后继续接受折磨……我去了厂桥派出所,准备报案,这是个错误的决定。到了派出所的接待处,根本没人,听远处的办公室有说笑的声音,我壮胆走过去。我跟警察讲了所有的情况,然后那些警察一个个都用鄙视/歧视的眼光扫着我,然后要我说出钱包在哪里丢的什么时间丢的等等要求一定要非常的详细……我跟他们说周四晚上我见过钱包,周六早上发现丢了,周五中午我还发现卡里的钱还在这些情况。结果警察一下子就非常生气要我要非常的严肃,说已定要告诉他们钱包到底在哪里丢的,准确的丢失时间,然后我说我要是知道不就不会丢了么?找不到才来报案的,况且被取走了钱都是可以查监控录像的。他们就轮流教育我(这个时候大约有6、7个警察在喝茶抽烟,都七扭八歪的坐在椅子上),教育我一定要清楚他们才能调查、才能立案、才能抓小偷等等……教育完我说可能是公共汽车吧,这两天坐过115、13公共汽车,卡是招商银行的等等。然后可爱的警察叔叔又用不耐烦地语气教育我一定要严肃,确定哪路车哪一站丢的,哪天……我晕菜了……而且他们告诉我哪里丢的他们会告诉我去哪里报案,而且暗示我不要烦他们了,也不要在这里报案!我很无奈,问能不能报案?他们说他们没法逼我报案或者不报案,而且强调我一定要严肃对待这个问题,不要耍他们……我,我干脆问,我身份证丢了,我不报案了,我想办个身份证。他们更不耐烦了,问你那儿的?我说就长桥的,他们笑了,去旁边办吧。我脚底抹油直接溜了,我一点都不想说再见!我们可是纳税人,你们……我爸爸说他们不愿意让我报案,是因为在哪里保安那里的发案率会上升,影响他们的绩效,所以尽力推托。
9、重新办身份证。正好要办二代身份证呢。交钱照相。一头汗,头发也有点乱,这次的身份证照片依然不怎么入目。
10、继续散心,和ZZ,基本上希望由此忘记这个丢钱包的噩梦。不过心里是接受了教训了:证件要和银行卡分开存放,不要用弱密码、上车包更加注意、小案件不要报案或者编好瞎话再报案、经常检查钱包丢了马上挂失、挂失可以通过电话/网上且越快越好。
11、损失列表:钱包一个、Diablo人物卡片一张、身份证、零钱2.xx元、几张过期的票、四张银行卡(两张没钱的废卡),招商银行卡里的800元,还有几张纸片。

Eclipse3.1和Myeclipse 4.0M2

今天听说这两个都更新了,我就去马上下载下来试验了一下。(Eclipse是一个很好的IDE,特有超强的插件结构……,Eclipse的直接发行版本进行Java开发很好。Myeclipse是一个Eclipse插件,支持J2EE开发,整合了Struts、Hibernate支持等等,开发J2EE的非常好用的平台。)
地址如下,Eclipse Release Build: 3.1:
http://download.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/index.php
MyEclipse Enterprise Workbench 4.0 M2 for Windows 98/2000/XP (6/28/2005):
http://www.myeclipseide.com/Downloads%2Bindex-req-viewsdownload-sid-10.html刚才试验了一下,EC的界面相应速度明显变快了。Myec运行也很正常,部分图标改变了,能够正常代开以前的工程,也不许要额外的设置,一会儿看看注册是否正常,估计问题不大。
大家有时间可以来试验一下。

Lost in UML

为什么我们小组这周都没有动静呢?
原因是高级系统分析与设计的倒霉作业,哎,痛苦奋战了3天有余……
哎,不认真学习和听课还有看书就是不行,什么概念都不清楚……
我对UML的认识就是几张图,别B4我。
不过花了些时间研究UML Modeling工具:
1、Rose这个不说,ZH说体积达到2G,靠我可不愿意和这种巨无霸为伍,想起来就晕。而且听我一些Buddy说这东西比较容易死机的

2、以前用过Visio,我觉得很好用。不过一些朋友说不标准等等,而且仅限于画图,我就准备学个新的。
3、然后就学习了停很多人说的非常伟大的Borland公司的Together,而且学习了其中和时髦的Eclipse结合的Together for
Eclipse的版本……
4、然后,下载了最新的版本Together fo EC 7.0,然后找了破解,因为这个东西不注册连界面都看不到。结果伟大的Shock(一个
0Day,破解了很多Java应用)的破解居然不能Work,搜寻多方结果大家说Together for VS.NET的ROR(我们国内的骄傲,世界范围
内都受到尊敬,推荐ZH加入)的注册机可以用过来,然后破解“成功”。
5、Together for EC 7.0居然没有画图的图例……我就特别天真的用树模型建模,企图表示用力关联,结果怎么也搞不定,大约花
了我5、6小时研究,都不可能,下载了很多资料也找不到帮助,我气馁了……
6、柳暗花明,我又装了Together for EC 6.3,带破解,可以运行。一进去发现明显有图例工具的!这时候我才发现也许我用的
7.0的破解有问题,真是后悔……
7、研究Togther 6.3,先画了用例图,同时写作业前面的内容,画好了,要导出到Word,结果傻眼了,倒霉的Together居然只支持
输出.svg……
8、说起SVG,那是当初ADOBE为了和Micromedia的Flash对抗推出的一种适量图像标准,文件基于XML,架构优良……不过哪里架得
住Flash的牛势……后来基本上比较惨,境地和VRML差不多……其实最大问题还在于支持太少,连Adobe的Photoshop都不支持它…
…而我就栽在这里了,输出的.svg如何能够转成其它格式?
9、话说我也倒霉,我就妥协了。我干脆去截图……花了很久时间截图,就为了赶在上课前交作业……
10、结果很简单,这种效率下,没有按时完成作业,硬着头皮去上课了……
11、结果很幸运,宋同学和郑同学还有王庆华同学都没有完成作业,心里窃喜,嘿嘿,法不敌众呀,哈哈哈哈:D……
12、又受刺激,听了ZH同学说,原来作业里不只需要用力图,还要用例规约、类图、顺序图、写作图……我考,我当场眼冒金星险
些晕过去……
13、回家我发誓我要搞定它!这里的它指Together for EC生成的.svg文件。首先解决默认.svg中文乱码的问题(考,这么到处都
有这种问题!)。去下载了一个中文的SVG Viewer解决问题了,同时还找到另一种解决方法,就是把原来文件里的font=&oaps宋体
&oaps修改为font="SimSun",这两种法方都可以。
14、然后继续努力,发现原来ADOBE的illustrator(就是我画美事同盟LOGO那个软件)可以打开.svg的,有了它就可以转换格式了
,结果发现illustrator只能存放矢量格式……不过我们有Photoshop呢,从illustrator分离图形,然后粘贴到Photoshop,另存为
……格式转化成功了。
15、先把这些用力图搞定,然后画了顺序图、类图什么的把作业搞定了。
16、然后我觉得Together不过如此,可能比较偏向于Team的过程的解决或者说MDA的解决,它并不是最关注建模本身还有画图这个
重要功能。所以决定抛弃它。我认为下一次完全可以考虑Visio了。
17、宋同学给我推荐了一个获得Jolt大奖的建模工具,说它很有可能很牛。回去查了一下,它就是这个东西:“Smart
Development Environment最终在设计工具类总共8个提名中胜出。其竞争对手包括BM Rational Software Architect, Borland
Together Designer 2005, MagicDraw UML 9.0 和SmartDraw 2.0。”
18、关于Smart Development Environment
Smart Development Environment ( SDE ),是赢得该荣誉的UML建模工具,它是可以应用于各种IDE如Visual Studio .Net,
Eclipse/IBM WebSphere, Borland JBuilder, NetBeans/Sun One Studio, IntelliJ IDEA, Oracle JDeveloper and BEA
WebLogic Workshop上的方便易用的插件,可视化地提供统一的建模和开发环境……
http://www.umlchina.com/News/Content/200.htm
19、恩,要试验一下,搜索到这个东西是visual-paradigm开发的,官方网站在这里,我给一下下载的页面:
http://www.visual-paradigm.com/download/
20、我下载了Visual Paradigm Suite 2.0,里面包括所有需要的东西,包括一个主程序和各个IDE的插件。我下载并安装了,看起
来画画绿绿,且支持输出多种格式的图形,这个看起来不错,而且很多朋友都说很好用。
到这里这个Lost in UML就写完了,我真的是迷茫了,看了高级系统分析与设计的课件、谭火彬的UML课间、下载了基本Java UML的
书不过还没看……其实一个好的工具太重要了,在这里发一下感慨。
BTW:写这个时我键盘旁边的杯子又倒了,真是和前几天的经历一样倒霉,这次键盘没有遭殃,我的床彻底湿了……这里善意的劝
和电脑天天打交道的朋友们一定不要在键盘旁边放水杯、牛奶杯、咖啡杯、可乐杯(他们的破坏力依次增强),否则后果很严重…
…我这次是第多少次了呢?我也记不清楚了,但是真的太多次了……

Eclipse和UTF-8及Unicode的研究

说研究就研究,尽量一丝不苟。
仔细研究了一下我们那个Properties的过程,发现原理是这个样子的。
首先对比了一下文件的Hex的编码情况:
使用记事本存储“我是人”三个字,发现如下:
首先可以发现Unicode、Unicode-Bigendin前面都有辨别码,分别是FF EF、EF FF,以此区别编码序列,也同时声明了这是一个Unicode的文件。每一个汉字使用两个字节。也就是说用的是UCS-4。
而UTF-8也使用了辨别码,但所有UTF-8字符都是3个字节的,辩证码是EF BB BF,和Unicode的辩证码其实是一个字符。每个汉字用3个字节表示。学习相关知识可知Unicode和UTF-8是可以直接映射的,两者影射其实是兼容的。
而Ansi模式其实应该使用的是GB2312编码,没有辨别码,所以需要默认的编码,中文Windows就默认GB2312。编码每个中文用2个字节,编码以后的内容和Unicode不同。
继续分析我们开发所用的环境的过程:
首先,分析Eclipse写出来的文件,此时我设置的工作空间编码为UTF-8,发现文件没有辨别码,也就是说这个文件被其他编辑器打开不可能知道这是什么编码。而文件里面其实根本就没有使用UTF-8编码,因为所有的中文都是2个字节的编码。我怀疑是UCS-4,所以分析一下,在刚才用记事本写的文件里面写入“美食同盟网”察看Hex状态的编码。
在Eclipse的文件里面“美”编码0xC3C0。Unicode里面是0x8E7F。Ansi里面是0xC3C0。Unicode-big里面肯定是0X7F8E,和Unicode那个反过来没的说。
所以,呵呵,我想一切旋疑都解开了。我们敬爱的Eclipse不管如何设置,其实他还是使用了你的操作系统的默认编码,而我们这里就是GB2312了,即使我们设置了UTF-8。其实问题是这样的,本来Eclipse默认latin-1编码,如果用那个方式,写了中文的双字节字符以后再打开就会造成乱码,而设置了UTF-8以后能解决以多字节(2个、3个)的方式打开文件的问题,不过其实还是用GB2312打开,这个可能是Eclipse对Properties文件未知格式的原因,因为用Eclipse打开存储UTF-8的XML文件是没有问题的,这个大家都有经验。由于Eclipse的多字节文件没有存储识别码,所以XML文件还有JSP文件的Charset一定要声明UTF-8,否则还是有可能出问题。
然后到这里已经真相大白了,这样再解释一下前几天出现的那些问题:
1、由于单字节多字节的问题和Eclipse不存储识别码的问题,我们最好把工作环境强行换到一个多字节环境,比如UTF-8。防止互相出现乱码,大家最好都用中文的Windows,否则估计还有可能出现问题。
2、解释上次native2ascii -encoding gb2312 ApplicationResources.properties ApplicationResources_zh.properties这个命令,网上那位老兄还说为什么Encoding改成UTF-8不行呢,因为你的Windows默认的就是gb2312,设UTF-8当然乱码。
3、解释native2ascii。其实这个过程和UTF-8没有任何关系,而且编码出来的文件的确是Unicode的转义字符。其实编出来的文件根本本就是最普通的单字节Ascii文件,只不过它把双字节的Hex方式直接用明文存储为单字节Ascii文件了,转换明文使用Big endian方式,也就是高位在后。为什么这样呢,因为Java多字节只支持Unicode,或者说是遗留,反正Java没有直接支持UTF-8,内部传输都使用Unicode。这不是问题,因为映射相同输出的时候Java很容易把Unicode转为UTF-8。而我们转那个文件只不过为了让Java可以轻松的把你的文件从转义字符转化为Unicode,过成就比如把“/uC3C0”这样的自符串转化为“美”的编码0xC3C0了。这么说有点乱,过程其实如下:
“美”在Eclipse存,然后在文件中如果用Hex察看是[C3 C0]。
然后用Native2ascii转,你看不到“美”只能看到\u7f8e,而这时候如果用Hex察看是[5C 75 37 66 38 65]这么大一长串Ascii了。
这次明白了吧。
4、关于UTF-8和Unicode还有UCS的东西大家看看资料吧,一搜一大把。
UTF-8 and Unicode FAQ(中文,这个很官方,很有价值)
http://www.linuxfans.org/nuke/modules.php?name=News&file=article&op=view&sid=1749
谈谈Unicode编码 简要解释UCS/UTF/BMP/BOM(说的很通俗,而且涉及到的细节多,帮助大)
http://news.onlinedown.net/info/13164-1.htm