上班写Blog是一件很悠闲的事情

一个多月前,那个晚上,我写了一个Blog阐述我忐忑的心情,不知人生向什么方向发展了,同时对马上要工作有一种紧张感。
而后就是进入公司开始干活,发现原来挣钱也不是那么难。
而后就是十一去了沈阳-丹东-东港-本溪,吃了很多好吃的,还游览了不少没去过的地方。给我留下最重要印象的是,我的GF和我在一起真的很快乐,即使在满是乘客的火车上,一个眼神也能给我无比的温暖,这样的旅行虽然说不上丰富多彩,但是却依然经常在梦中重温。
十一回来后的工作就变得越发的繁杂,在公司也基本上熟了,每天喝水上厕所,还有干手底下的活。还好有朋友罩着,没有什么不舒服的,但是比起上学的随心所欲,这样的生活有点机械,我不喜欢,因为我喜欢每天上进。也就是那个谁谁谁说的,每天写Blog的时候会发现收获。
而后,在我们自己的Conflunce上面的打拼也基本上停止了,因为生活变得忙碌,主要是上半之前的一个小时和下班之后的数个小时的时间都非常零散,很难有效率用,所以没有时间看帖子,没有时间学习,没有时间看电影。还好,吃饭和给GF打电话的时间还是有的,否则这种生活就真的不快乐了。
而后,在公司,慢慢的活变多起来了,我也就忙起来了。当我终于接触到公司程序源码的时候,还是吃了一惊,因为使用的框架都很全面,可惜代码非常丑陋,很多地方完全就是反模式,为了麻烦而麻烦,真是想不通。把Struts+Hibernate用成这个样子真是难以理解。还好技术主管让我用自己的技术,只要快就可以。我就偷懒使用了大量JSP+Scriptlet,还好,虽然是去年在用的技术,现在用起来依然很顺手。
其实,最近忙活的事很多。山东有个朋友开网吧,我在北京这边寻价格、找人、定配置,虽然这都是我的老强项了,可是被夹在中间再受资金限制,这些事情运作起来就不那么顺滑了,凭空耗费了大量精力去解除两边的冲突。今天一个朋友评价山东这位朋友“该清楚的地方弄神秘,该通过诚信关系的地方却较真”,弄得我很不好做人。还好,忙活过这几天就好了。
同时,这周发生的最震撼的事情就是,我辞职了。虽然是意料之中,但是还有点留恋,这里离我家很近,可以方便在我爸妈身边,这样很快乐。可是公司改在9:30-18:00的作息时间我不习惯(当然这个并不是主要原因),再说下面的工作要去,这边的工作就要辞。虽然是男孩,但是也应该有点男人的魄力,很顺畅的辞职了。
我的爸爸妈妈对我很支持,他们说只要我快乐,随便我怎样他们都支持我。只是我要离开他们身边一段时间,谁都有点不舍。
GF的爸爸听到我辞职感觉很诧异,感叹现在的年轻人……,哎,我没觉得怎样,没钱怎么生活,如果现在的工作阻碍了我的发展,那么我就应该果断地选择离开,没什么留恋的。工作可以勤换,家人却不会变,他们的爱也不会变!所以换换工作又怎样。
想到上周开始在BJUG的Groups里面跟贴,虽然最近作的技术实践很少,但是眼睛还是盯着技术的发展的,我准备认真的学习一下Webwork,还有Javascript和Ajax,离开这里以后还要继续看。本来在公司一开始每天还有时间学习的,后来忙起来就不行了,我计算了一下,其实是可以的,只要利用好这些时间。
还有,感慨一下,每周在北京拥堵的交通上耗费的时间真多呀,总要赶很远的路去看GF,每次都要赶公车真是很苦,希望以后有个直达的什么什么车。现在花了第一个月工资的两倍办了张浩沙会所健身卡,上周和GF去体验了一下,这样的生活感觉会健康一些。以后有时间很想过去,可是路这么远,再快的车也不是办法呀,所以,终极的解决方案就是结婚。
在这里偷偷和我家宝贝说一声:你愿意嫁给我么?你什么时候嫁给我?什么时候能够不要我受长长的孤单行程的困扰?
嗯,越说越多,我现在很会跑题呀,哈哈哈哈哈哈

全球最具影响力富豪名单公布 Google新贵上榜

北京时间10月9日,英国《金融时报》选出年度全球最具影响力富豪名单,除金钱外,这二十五名富豪的行为、思想及工作方式,都影响了人们的生活。微软主席盖茨蝉联冠军,长和系主席李嘉诚跻身第二十五位。

  1.盖茨(Bill Gates) 49岁

  微软主席 510亿美元

  2.乔布斯(Steve Jobs) 50岁

  苹果电脑行政总裁 30亿美元

  3.奥米耶(Pierre Omidyar) 38岁

  eBay创办人及主席 100亿美元

  4.布林(Sergey Brin)及佩奇(Larry Page) 32岁

  Google创办人 每人110亿美元

  5.默多克(Rupert Murdoch) 74岁

  新闻集团主席兼行政总裁 67亿美元

  6.米高彭博(Michael Bloomberg) 63岁

  彭博财经通讯创办人兼纽约市长 50亿美元

  7.贝鲁斯科尼(Silvio Berlusconi) 69岁

  Fininvest传媒集团创办人兼意大利总理 120亿美元

  8.索罗斯(George Soros) 75岁

  对冲基金经理 72亿美元

  9.Carlos Slim Helu 65岁

  墨西哥电讯界巨头 238亿美元

  10.Azim Premji 60岁

  印度软件公司Wipro主席 93亿美元

  11.米塔尔(Lakshmi Mittal) 55岁

  米塔尔钢铁公司主席 250亿美元

  12.巴菲特(Warren Buffett) 75岁

  Berkshire Hathaway主席、股神 440亿美元

  13.Richard Mellon Scaife 73岁

  美国出版人及右翼政治捐献者 12亿美元

  14.他信(Thaksin Shinawatra) 56岁

  泰国总理 13亿美元

  15.摩尔(Gordon Moore) 76岁

  英特尔荣誉主席 46亿美元

  16.阿布拉莫域(Roman Abramovich) 38岁

  俄罗斯石油大亨兼英超球队车路士班主 133亿美元

  17.特纳(Ted Turner) 66岁

  传媒巨子及慈善家 20亿美元

  18.Bernard Arnault 56岁

  LVMH集团主席及行政总裁 170亿美元

  19.德摩尔(John de Mol) 50岁

  荷兰电视制作人 20亿美元

  20.埃里森(Larry Ellison) 61岁

  甲骨文创办人及行政总裁 170亿美元

  21.戴尔 40岁

  戴尔电脑公司主席 180亿美元

  22.坎普拉德(Ingvar Kamprad) 79岁

  宜家家俬创办人 230亿美元

  23.李健熙 63岁

  三星集团主席 43亿美元

  24.普拉特纳(Hasso Plattner) 61岁

  SAP创办人 50亿美元

  25.李嘉诚 77岁

  长和系主席 130亿美元

来源:新浪

Java有些时候太Free了,也许这种左倾会成为麻烦,所以RoR之风又刮回来了,但是RoR其实也是个右派

恩,十一旅游回来,我们的单位在搬家,不得安宁。
今天抽空看了RoR中的表关系映射(many to one、one to many),使用has_one、belongs_to这样的限定,使用find_all等等那种RoR风格的自动反射的方法,真的很接近于自然语言,轻松舒适,非常优雅,而且节省时间。不过在改写我们的Level2项目的时候,发现需要改造的地方还是很多的,就是因为RoR的这个“约定优于配置”(Convention Over Configuration)的思想,很多地方我们都要手动制造遵从与约定的设计。比如Dish与Dishsort如果要映射,那么Dish里面就要有dishsort_id这样的字段,而不是dishtype……类似的情况很多。我的感想就是,如果系统是纯RoR实现,从头设计,那么用RoR会非常方便,而且可以得到震撼的结果。但是如果是遗留系统修改,或者是混合系统的开发,那么很多时候你就会感觉到约定带来的束缚是多么的不舒服。当初Java和.Net吵闹的时候就有很多JavaUser认为ASP.net里面的约定不爽……所以,我们只能说,Java有些时候太自由了,也许这种左倾会成为麻烦,所以RoR之风又刮回来了,但是RoR其实也是个右派。
真希望我们能走自己的路,自由欢快!

BTW:看看那个Free,中文的这个词还是个禁句,MSN真可怜,被GFW了。

看得到我心在跳,最重要!

哎,不愿意写这个。
我睡得不怎么好,昨天。
首先,我想和她在一起,聊一下天再睡,她就在隔壁。
其次,一个人睡一个屋子,有那么一点冷清,有一点无助,显然我还是个男孩,自己独处会怕黑,所以我开着灯睡。
再,我离我家很远,有一点空。
再,心里有点乱,下午没去参加小学的聚会,看来大家都很快乐,而我却没能和他们相聚,有一点失落。
再,胃里有一点不舒服,吃了太多油腻,吹了点风,有那么一点点泛酸。
而后,怕这个孤独的夜会寂寞、冷清……
当然,以我现在的坚强,这种不快也可以通过心理调节变成一种快乐,我想知道自己的阿Q精神是不是可能有个限度?我一直关这种感觉叫做心理暗示……
又扯远了。其实,心里的空和乱有一点点是因为周一要去上班了。以前已经挣过很多次钱了,但都不是给某个单位打工,而这次要来真的了。
其实这个过程挺奇怪,我没有想到我自己的责任心已经会推动我做体检、准备资料,主动联系,等等。长大看来大多是因为被动原因呀。
不愿说为这个而心乱,但我觉得大部分人要工作前都回觉得有一点乱。没有那么自由的假期了,哎,没什么,以后给GF埋单就不手软了,哈哈。
所以,还是鸵鸟一次,不说这个乱。但是我承认,本篇拉出来的一大堆就是因为这个乱,而已。
然后拉出一位天王——黎明。
标题就来自他的一首歌。
因为我不喜欢他的歌的。但是陪她去个冷的地方却让我突然愿意听听黎明的新专辑《一个故事》。因为专辑选出时说有不少温暖的情歌。说实话黎明的慢情歌就像山楂炖肉,虽然酸但是暖,颤颤巍巍的给你一种羊肚肚毛巾般的舒适。昨晚一个人在床上翻动我的Mp3里面,搜索着黎明新专辑中的歌曲,听听那种以前被窝认为有毒的弱歌,居然能够让胃舒服一点。
其实在我的心中,回响的只有他那句:“听得到你心在跳,最重要!”。我在幻想那个MTV中的那个情节,如果我和她被雪崩埋没,我愿用我的体温在冰雪中溶化出一个世界,只有你我,能够听到心跳!最重要!

intel和amd谁的cpu视频处理好

出于对Q3ACN一个讨论的回复。

视频……
你也不说清楚。
你说的视频压缩和视频是两码事。因为视频压缩属于单指令多数据流典型应用,也叫矢量运算,所以sse这样的指令扩展就很有用。但是怎么说AMD和Intel都不是矢量计算机,差距本质上不大,只不过AMD支持sse还是遮遮掩掩,受制于专利呀,所以优化后的程序Intel比较快。
但是关于视频渲染可就不是这个样子了,压缩器都是在具体平台通过编译器优化过的,所以AMD的超强浮点性能就体现出来了。你看现在那些大片不还都是AMD平台么(当然是因为性价比)。

Intel再牛也干不过专业硬件,视频压缩完全可以通过压缩卡来完成,绝对比CPU快。通用的干不过专用的。

前两天去听Java的一个会议。Jams Gosling(Java之父)在谈起下一代计算机的时候还在说,多内核是方向,低主频的集群会是好的解决方案。

我靠,太郁闷了,Struts这破玩意儿!

1、倒霉的Mysql-front,UTF-8支持太烂!!!!!!!
我这里凡是有中文的行,任何更新都回出错。以前是某些有中文的出错,看来中文支持肯定有问题。而且它的出错提示是德语的,真晕!!!
而且出错以后会奇怪的跳出新窗口,不停,必须用TaskManager关掉它。
我用phpMyAdmin就没有任何问题,很好用。
下午看看这个Mysql-front还有没有救药,如果不行就彻底抛弃。
2、我恨死Struts的ActionForm了!!!!!!!!
昨天我还只是觉得这个东西脱了裤子放屁,多此一举的利害。但是心想不过是浪费一些代码而已。
不过今天我继续发现,这个东西简直就是个隐藏的炸弹。
我本来没有在ActionForm里面写log做记录。心想如果里面发生了exception会抱错,因为我没有写try catch。但是后来我调试一个Action怎么都搞不定,明明在Action里面写了log,却怎么也不输出,我是异常郁闷!
大约浪费了两个小时后,我才明白,我这个Action调用了这个ActionForm,而ActionForm如果property匹配发生错误不会抱错的,也就是说如果那个request里面没有那个property它就会默认为null,而不报错。检查只发生在validate()方法,而这个方法非常恶心,如果发生了错误它会返回input的page,而不会报任何错误!(当然它存了ActionError在session)但是我却在log系统看不到,而且没有exception。就造成了程序中的一个黑洞,我什么都看不到。
而且ActionForm和input Page里面的html:text….那些标记的名称匹配非常费时,根本就不自动化,全部售动写非常容易出错,而且出错还有隐蔽性(没有的peroperty会null,前面说了),而又不能把所有null都到validate()检测,因为有些属性允许null,所以……
我快被ActionForm搞疯了!
所以,我越来越觉得Webwork2中那种Action和Model在一起的方式非常优秀,而且它使用了ongl,model的属性和前端页面通过命名规则自动绑定,省事多了。
所以,可以这么说,费了九牛二虎之力,ActionForm只能浪费时间和精力(Struts本意是使验证变得方便,容易测试),并且实际上测试起来非常困难,绝对是糟粕。记得有人说,既然Struts所有东西里都传了request、session这些东西,那么完全可以舍弃ActionForm,而把数据初始化写到Action里,如xxx=request.getParameter("xxx"),就和JSP里的Scriptlet一个样子,哈哈,不过这样Struts就不再是Struts了,只有形式了。如果伪需求要求必须用Struts,我们可以绕过(不用ActionForm,用request),或者小心点用。所以反过来说就是,我不想用这样的残废了。

关于MVC框架的一个好讨论

http://forum.hibernate.org.cn/viewtopic.php?t=6947&postdays=0&postorder=asc&start=0&sid=19cfb9f49ed6092478ad38654751f38c
叫做struts和webwork双体验。
这里讨论的非常好。
虽然很长,但是值得认真看,里面讨论了很多MVC的核心问题,让框架一下子便得扁平了,那些复杂的东西其实不过是非常简单的概念。你也就理解了Struts的思想,还有Webwork的思想,以及他们的优缺点。不过本贴似乎都比较偏向于Webwork2。

不过说句公道话,ActionForm的确烂,写得恶心。Webwork那种Model-Driven真是看其来简单,而且Xwork有是IoC,还支持AOP(Inteceptor),所以我也希望摆脱Webwork。而转观Tapestry,虽然我以前评价过这个东西的view层非常有特点,但是Tapestry后面的东西还是非常丑陋的(Tape3后面很复杂,而Tape4用了HiveMind以后更复杂),而且Tapestry这个东西有严重的Apache通病,自己家东西杂烩,还特别乱七八糟的,代码一塌糊涂……

所以,看完这篇评论,你会非常清楚Struts应该怎么用可以避开它的弱点。
还有,坚定了由时间一定要学习Webwork2的信念。很多人说懂了Struts,学会Webwork2只需要一个下午

关于Hibernate,小发现

写login的时候记录login time。
结果遇到一大堆麻烦,搞了半天找不到问题所在。
然后把log4j里面的debug打开,发现还是捕捉不到exception然而tx却rollback了。
仔细看代码,发现在UserLoginAction里面catch(Exception e)然后做了log就结束了,忘记e.printStrackTrace()了,加上。然后发现了两个很严重的问题!

1、我跟踪了Hibernate的SQL,它里面的SQL的临时命名后面都加了“_”,这个东西造成我们的Domain的所有id在update时不管用,也就是说涉及存储和修改时,只有insert可以,因为这个时候的id是自动生成的,否则只要set Domain里面的id就会出错。
后来仔细察看,发现Mysql的字段名里面最好不要有“ _ ”,字符,否则Hibernate就会出问题。报告“could not execute query; bad SQL grammar”。解决方法就是把字段里面的“ _ ”去掉,比如我把user表里面的user_id改成了userid。
问题就解决了。2、解决了上面的问题还是有问题。我们的Manager的update方法不能用。会报告session里面不能有两个相同id的domain对象。
我写了个UnitTest却可以update。所以感觉很奇怪。
后来看到这里的解释:http://www.matrix.org.cn/thread.shtml?topicId=25286&forumId=23
搞明白了问题。因为我们有UserAuthenticationManager,它里面会检查登陆用户的个人信息。而我在LoginAction的生命周期中UserAuthenticationManager一直处于激活状态,所以Hibernate的session也一直打开,而LoginAction里面再调用UserManager的update方法保存时就会出现session中调出两个同id的Domain对象的情况,Hibernate就会报错,然后rollback……
正好那里有解决方法,用merge方法就不会在SaveorUpdate的时候检查冲突对象了,问题就解决了。

所以希望大家注意:
1、把目前数据库中的_id这样的命名修改为xxxid这样的命名。
2、大家写的DAO中涉及到update操作的地方请使用getHibernateTemplate().merge()方法。

Web2.0,说馒头是面包

前几天听说……
我不跟风的,喜欢视那些xx作为浮云……
今天本意再讨论Ajax和方法论,看到了个介绍,从技术上:
WikiPedia的Web 2.0条目下列出了这些条件:

* CSS 和语义相关的 XHTML 标记

* AJAX 技术

* Syndication of data in RSS/ATOM

* Aggregation of RSS/ATOM data

* 简洁而有意义的 URLs

* 支持发布为 weblog

* RESTian (preferred) 或者 XML Webservice APIs

* 一些社会性网络元素

嘿嘿,其实大家都注意到了,这些技术我们也在上手和使用中了,所以,看来没有那么可怕啦

有幸再次见到Michael Chen

昨天有幸再次见到Michael Chen,他这个人真的很平实。
他说,我这个东西不是想做个框架,就是想提供一个客户端的异步通讯的工具。
看了这篇文章,更加加深了我对他的认同,他也认为应用决定使用什么技术,Ajax再火,在目前的xmlhttp+javascript的不完全可靠实现下也只能用在一写改善用户体验的小地方,全局的应用只不过是被技术冲昏了头脑。
我昨天和郑浩也在讨论同样的问题,我们都同意两个重要的标准:
1、技术要改变用户体验。如更好、更快捷、更清晰。这是一种功能指标。
2、技术要带来性能的提升,或者硬件的节省。因为性能我们觉得是技术的重要评价指标。当然首先要保证稳定。
而现在更多看到戴着幽雅帽子的编程技术,总是充斥着复用的话题,但是说实话,感觉真正的复用太少了,更多的是一种技术狂热,或者Open狂热。
所以我想用一个名词形容他们,“OpenMania”,开源综合症,中间还是有不少可怕的狂热症状的,不过郑浩说的很好,患了此症的人都是好人,而且是大好人。

这是闲话。
上午花了些时间把buffalo的js给精简了一下,成果不算很明显:
buffalo.js(12,007Byte) ->> buffalo_shrink.js(8,725byte)
xmlcallback.js(3,732Byte) ->> xmlcallback_shrink.js(2,785byte)

等测试完毕发给Michael Chen。
要这么想,接近缩小了1/3,也就是说带宽可以……我已经OpenMania了