<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>逝者如斯 不舍昼夜</title>
    <description></description>
    <link>http://shaka.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>女人真烦</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/208811" style="color:red;">http://shaka.javaeye.com/blog/208811</a>&nbsp;
          发表时间: 2008年06月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          发些牢骚。<br />没女朋友的时候寂寞，想找女朋友。<br />有了女朋友，又时常觉得烦。<br />两个人不在一起的时候会想，天天在一起的时候又口角不断。<br />一丁点的事也能把人心情搞坏。<br />片段一：<br />就说昨天晚上，回到家，饭摆在桌上，人坐在旁边。因为下雨，回来晚，她还等我回来一起吃。<br />饭菜做的还能吃，吃完了，困意袭来，就倒在床上瞌睡，朦胧看见她在收拾碗筷，该扔的扔，该剩的剩，最后剩下几个碗，碟。我以为她看我这么困倦，自己拿去洗了。<br />她以前约法N章，其中之一便是：如果她做饭，那么我洗碗。<br />我也不是不洗，只是太困，不想动，想休息会再去洗。<br />于是数落声伴随着洗碗的命令来了。<br />我没动，于是脚上来了。<br />于是，我烦了，心想，我在外面吃的还舒服，还没人催。回家不就是省了点钱。<br />带着怒气去洗碗，耳边依然是‘洗几个碗还这么磨唧’之类的话。<br /><br />片段二<br />原来她住的地方可以收有限电视，搬来以后，房东楞是说接不了有限信号，（其实是不愿给接，死板的一个人）。于是电视一直放着，<br /> 她：今天学了个法，电视倒过来晃晃就能看了（没听说过）。<br /> 我：晃吧。<br />于是搬了下来，倒过来晃。。<br />打开还是一片蓝屏。<br />我：没信号<br />她：没信号也得有个台，或者刺拉拉的，不是蓝屏啊，肯定是坏了，我明天去修，如果花钱多，就卖了。<br />我：旁边就有修电视的。<br />于是去了，人把信号接上，节目都清晰的出来。。<br /><br />晚上还是困，休息会，看会书，就这样，她看不过去了，开始数落。<br />‘谁白天不工作啊，都像你这样？’，我想说‘你现在就没工作’忍住了，她正工作期间，而且发愁，因为找不到好工作。<br />‘你再啥都不干,都成吃干饭的了’<br />女人。。
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/208811#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 27 Jun 2008 20:59:02 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/208811</link>
        <guid>http://shaka.javaeye.com/blog/208811</guid>
      </item>
      <item>
        <title>终于找到一份Ruby开发的工作</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/174398" style="color:red;">http://shaka.javaeye.com/blog/174398</a>&nbsp;
          发表时间: 2008年03月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          找工作有一段时间了，前几天终于拿到一个Ruby开发的offer。<br />对方是一家新兴公司，好像是做传媒和机顶盒相关业务，据说是一个外籍华人投资创建的。<br />公司位置不错，办公环境也不错，办公区很大。<br />三个人面试，前两个都是技术，没谈多久，也没问多少技术问题。最后和人事谈的时间稍长一些。<br />后来人事问我什么时候能来，我说了个时间，却没想到她的意思是已经录用我了，随后她确认了这点。<br />我虽然比较开心，但总觉得太顺了，有点不踏实，对公司也不了解。<br />虽然也倾向于找Ruby方面的工作，但是找到了，却犯嘀咕：就这么倒向Ruby了？在这边干三年，会做成什么样？<br />在现在的公司，都待怕了，遇上个公司就怕人不诚信，拖欠工资怎么办，给了offer到时候变卦怎么办，凡此种种，也许我多虑了，但是在现在这个社会，真是没什么安全感可言。。。<img src="/images/smiles/icon_sad.gif"/>
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/174398#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 21 Mar 2008 10:20:01 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/174398</link>
        <guid>http://shaka.javaeye.com/blog/174398</guid>
      </item>
      <item>
        <title>nodeType属性</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/173018" style="color:red;">http://shaka.javaeye.com/blog/173018</a>&nbsp;
          发表时间: 2008年03月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          上Google查nodeType属性，看到个比较全的，录在Blog里供日后查看<br /><strong><span style="color: orange">作 用</span> </strong><br />辨识节点的DOM 型态。 　 <br />基本语法 <br />numNodeType ＝ xmlDocNode.nodeType ; <br /><strong><span style="color: orange">说 明 </span></strong><br />此属性只读且传回一个数值。 <br /><br />有效的数值符合以下的型别： <br />1-ELEMENT <br />2-ATTRIBUTE <br />3-TEXT <br />4-CDATA <br />5-ENTITY REFERENCE <br />6-ENTITY <br />7-PI (processing instruction) <br />8-COMMENT <br />9-DOCUMENT <br />10-DOCUMENT TYPE <br />11-DOCUMENT FRAGMENT <br />12-NOTATION <br /><br />转摘自『IT学习者』http://www.itlearner.com/article/2006/3218.shtml<br /><br />刚看到JavaEye的新功能（以前没注意），从某处copy过来，发现底端自动加了一条，就是上面这段：本文转载自。。。太智能了，稍后再看怎么实现的<img src="/images/smiles/icon_wink.gif"/>
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/173018#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 17 Mar 2008 15:24:06 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/173018</link>
        <guid>http://shaka.javaeye.com/blog/173018</guid>
      </item>
      <item>
        <title>又闻华为员工跳楼事件</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/165344" style="color:red;">http://shaka.javaeye.com/blog/165344</a>&nbsp;
          发表时间: 2008年02月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          昨天QQ群里爆出新闻，成都华为某员工跳楼自杀，有人还放出相关图片，引起群友一番议论，起初以为是空穴来风，后来渐渐相信这是事实。<br /><br /> 今天打开QQ，群里还在议论，更有群友放出搜狐上的新闻链接。<br /><a href="http://news.sohu.com/20080227/n255382674.shtml" target="_blank">http://news.sohu.com/20080227/n255382674.shtml</a><br /><br /><div class="quote_title">引用</div><div class="quote_div">据知情人士透露，这位自杀员工为男性，1981年出生，毕业于川大计算机学院，属于华为微波项目组。关于自杀原因，有人称缘于炒股亏损巨大，也有人称是华为将撤掉微波项目组。消息称，该员工家里好像有数十万债务；而且本人能力有限，所以压力很大。</div><br /><br /> 这个世界上每天都在发生意外事故，自杀等事件，引得人们都见怪不怪了，顶多发一两声感叹，生命无常。而身在IT业内，如此近距离的接触同行的事故，或自杀，或过劳，而这些事件又冠以“华为”二字，仍然引起轩然大波。<br /><br /> 当群里爆出这条消息时，当即就有群友表示要放弃去华为面试。在慨叹华为的声誉即将不保的同时，似乎我们也该好好想想自己的人生，生活再苦再累再多磨难，也是美好的，请珍惜生命，珍视人生。<br /> <br /> 为死去的同胞默哀。。。
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/165344#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 27 Feb 2008 10:01:24 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/165344</link>
        <guid>http://shaka.javaeye.com/blog/165344</guid>
      </item>
      <item>
        <title>Ruby的作者和由来</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/162985" style="color:red;">http://shaka.javaeye.com/blog/162985</a>&nbsp;
          发表时间: 2008年02月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Matz是一个专业的软件工程师，在日本有名的open source公司netlab.JP工作，而且他在日本也是一个高姿态的open source 布道者。他参与了几个开源软件项目，包括cmail，这是一个基于emacs的邮件用户代理，完全用emacs lisp 编写。Ruby也是他的第一个在日本以外的国家如此出名的作品。<br /> <br /> 在1993年的时候，有一次他和同事们谈论关于脚本语言（scripting language）的事情，Matz深深的认识到了脚本语言的强大和可行性，他想也许脚本语言是他的方向。<br /><br /> 由于Matz很早以前就对面向对象编程很感兴趣，所以他认为面向对象也会适合脚本语言编程。然后，他到网络上去找了一些相关的东西，并且发现了perl 5，当时它还没有发布，并且打算支持面向对象的特点，但是Matz发现这并不是他想找的东西，所以他放弃了把perl当作一个面向对象的脚本语言。<br /><br /> 然后Matz转向了Python。Python是一个解释型的、面向对象 语言，但是Matz发现它并不能完全算作“脚本”语言。Matz认为Python是面向对象和程序化语言（procedural programming）的混合产物。<br /><br /> Matz希望的是一种比Perl强大，比Python更面向对象的语言，所以，他打算设计一个全新的自己的语言。Matz的开发从1993年2月24日开始，同年夏天，第一个Ruby语言的Hello World程序成功运行，第一个alpha版本在1994年12月发布。<br /><br />直到1996年都是Matz一个人在开发，从这时候开始Ruby社区也渐渐形成，尽管现在大部分的开发还是Matz自己来开发，但很多人都给了Matz有意义的帮助，包括提交bug和patch等。<br /><br />    Ruby这个名字意为珍贵的宝石，千万不要认为是什么缩写，比如PERL。当作者开始写ruby的时候，跟一个同事开玩笑说这个项目要以一个宝石的名字命名。那个同事就说”ruby”，就是一种美丽贵重的宝石的名字。所以作者用了这个名字，并且最后在官方发布版本中，也延续了这个名字。后来，作者发现珍珠（pearl）是六月的诞生石（birthstone，这个我不懂），ruby是七月的诞生石，所以作者相信ruby是perl之后自己语言的一个好的名字。
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/162985#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 18 Feb 2008 15:20:56 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/162985</link>
        <guid>http://shaka.javaeye.com/blog/162985</guid>
      </item>
      <item>
        <title>Ruby和Rails：朴实而深远的朋友</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/162960" style="color:red;">http://shaka.javaeye.com/blog/162960</a>&nbsp;
          发表时间: 2008年02月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          看到一篇关于Ruby和Rails微妙关系的文章，摘了下来，在此奇文共赏！<br /><br />原文作者David A. Black系《Ruby for Rails》一书的作者，同时是Ruby Central, Inc.的共同主管。<br /><br /><span style="color: darkblue">原文（中译文）如下：</span><br /><br />许多人都说，Ruby和Rails的入门门槛很低——而且大家都是不约而同地表达了同样的观点。“Ruby语言帮你解决了很多事情，”这些年我听到的都是这样的话语，“因此你可以专注于实现你的目标。”而你也常常会听见人们用相似的好评褒扬Rails。<br /><br />对于这两种情况的说法，我恰好都表示赞同。<br /><br />当然，这并不是说，写出能正常工作的代码或者让一个Rails应用程序启动并正常运转这样的事情，是你从街边随便揪出来的一个人就可以做的。门槛低只是相对的说法；你得先对习惯于程序开发的过程，才能体会到透明编程技术所带来的好处。你得先入道，才能借助Ruby或者Rails在原有的“道”上取得突破。<br /><br />对于用户来说，易用性同样也是相对的。数十年来，从Usenet和其它在线评论中，我们可以发现，人们对于编程工具一直没有一致认可的选择。所有这些希望说服对方改变自己所用的工具集合的高谈阔论都是在浪费时间——没错，浪费时间，这些话里面的每一个字都在浪费时间——想想都让人觉得对不起自己的胃。（我从1990年就开始关注Usenet和其它在线论坛了，但从没看见有谁成功说服另外一个人转投某个语言或者工具。） 因此，费尽心机宣称某个语言或者框架比起另一个更透明或者组织得更为良好，或者更容易使用，根本没有意义。<br /><br />不过，要是你听见哪些技术被人们以同样的语气不停赞扬着的话，那么你至少得好好留意并且讨论一下这些技术了。<br /><br />至少，在理论上像Ruby和Rails这样的编程语言和系统都是为了帮助你解决某方面具体问题的，也就是说，像乐器一样，它们是让你达到结果和完成目标的工具，而它们本身并不是目的。不过，音乐家把自己乐器的历史、文化和技术特性视为一个整体，而程序员们正如他们一样，对于自己所用的语言和系统也存在同样的认同感。没错，你用算法就可以描述出一个编程任务，然后可以任选几百种编程语言中的一种来把任务实现出来——这和你可以使用数百种乐器中的任意一种演奏出一个特定的曲调是一个道理。不过使用了哪种乐器并不是最终的结局。<br /><br />将音乐家和程序员做类比的例子简直是不胜枚举，而其中有一些类比，与手头的问题还有易于入门的问题是有关系的。<br /><br /><div class="quote_title">引用</div><div class="quote_div">小提琴大师Itzhak Perlman（伊扎克·帕尔曼）就恰如其分地点评了小提琴和钢琴的区别——从长远角度看，两者没有哪个更难也没有哪个更简单，但具体说起来，和小提琴还是不一样，钢琴上手还是更容易一些。Perlman如是说：<br />和钢琴演奏者相比，小提琴演奏者要度过一段更为艰苦的历程才能演奏出真正的音乐，因为钢琴演奏者[……]一上手就得照着乐谱练曲子，依葫芦画瓢。他们[钢琴演奏者]不用处理颤音（vibrato），不用操心换把（shifting），不用对付滑音（sliding），也无须顾虑弓速（bow-speed）[……]你只要[在钢琴上]摁下一个键就能听到声音[……]你一开始就得把音乐弹出来。 </div><br />正因如此，钢琴就成了乐器王国中的Ruby或者Rails一样脱颖而出。<br /><br />Perlman把低入门门槛描述成一种责任：钢琴演奏者没办法拖延自己演奏动人音乐的责任，因为他们无法以钢琴在器械操作上有难度为借口。（我们当然不是说你轻而易举就可以把钢琴弹得行云流水，而只是说在你面前扔一本乐谱你就能弹出一点什么，而初用小提琴你是做不到这样的。）<br /><br />于是，自我夸耀——当然不是说Perlman在自夸，不过他开玩笑地把这个未决的问题抛给了更多的人——就成了演奏高难度乐器的音乐家专属的权利了，这些人能用“奇技淫巧”演奏出悠扬的乐章。但是，在计算机世界中，显摆的权利则属于使用能让自己效率更高的工具的人们，而Ruby和Rails则成为人们“吹牛显摆”所用的扩音大喇叭。<br /><br />但是，我们应该分开讨论Ruby和Rails，它们入手的难易度可不能直接就划上等号——这也是和我们文章主基调像对应的说法。这个说法也代表人们常会表达的疑虑：到底Rails开发人员该不该花时间掌握Ruby呢？<br /><br />从某个角度讲，这个问题是可以理解的。Rails和Ruby“门槛低”的美名并不意味着它们对于同一群人来说都很容易，或者说不意味着它们容易的方式是相同的。S系统并不因为使用L语言写的，就一定和L语言具备相同的难度。比如说，Ruby是使用C语言写的，不管人们对C语言如何褒扬贬抑，要说得上C语言入门通常是没那么简单的。<br /><br />对熟练掌握Ruby语言的反驳，我见过两种情况，分别基于不同的立场：<br /><br /><ul><li>Rails很简单，但Ruby就高深得多了（从难度的意义上说，级别太高）。 </li><li>Rails是一个系统；而Ruby则是原材料（不从简单的意义上讲，级别过低）。</li></ul> <br />对于这两种立场，就未来的Ruby框架或者还没有问世的类库来说，任意一种都可以说是正确的——而且也可能确实是正确的，但不管哪一个都没能正确描述Ruby和Rails之间的关系。<br /><br />这里的关键点在于Rails设计的方式。Rails让开发人员用到Ruby语言中的许多资源。是的，在许多方面，Rails都是自成一套系统的。然而在许许多多其它的方面，Rails暴露、探索并且发掘了它和Ruby的联系，而不是将这些联系隐藏或者掩盖起来。<br /><br />举一个例子：helper文件。在你每生成一个控制器（controller）的时候，helper文件也会相应为你创建出来。Helper文件里面什么也没有：你可以在里面放入自己写的Ruby方法，并可以从视图模板中调用这些方法。<br /><br />这里并没有什么和Ruby无关的抽象，也没有将Ruby封装成一个单独的领域特定语言，更没有“只能通过向导生成（Wizard Only）”的标志。有的只是空位，由Rails提供的空位，可以让你放入定制的Ruby代码，也就是提供给你让你可以为应用程序加入Ruby代码的空位。<br /><br />Rails鼓励你使用Ruby，鼓励你去了解Ruby。Ruby既不会过于难以使用，也不会过于底层，而使得你无法给Rails项目带来直接迅速的帮助。<br /><br />Ruby和Rails是不是两个平级的搭档，二者之间只是一个平行的关系？答案是否定的，要更加复杂一些。Ruby是一项先行的基础技术；而在某些层面上，Rails则为你提供一个经过量体裁衣的、以目的驱动的Ruby环境。<br /><br />尽管如此，在你编写Rails应用的时候，Ruby看起来确实像一个辅助技术。试想一下XML和XHTML（或者任何其它的XML应用）之间的关系吧。一个是系统，另外一个则是使用第一个系统写出来的系统。尽管二者都被称为“标记语言（markup languages）”，但是它们的命名方案将其中的一个间接层（indirection）给隐藏起来了。<br /><br />对于Ruby和Rails来说，事情有点儿倒过来了。名字是不一样，但是技术上的关系倒是比较平级（egalitarian）。<br /><br />可能“平级”这个词用得并不是很准确，可能根本不存在描述Ruby和Rails之间比值的正确用词。可能这就是duck typing的一个例子，duck typing所代表的原则是，无论对象属于什么类或者模块，关系都不大，关键在于它做些什么。当你开发一个Rails程序，并且你决定要写一个Ruby方法来帮你解决问题的时候，你是否能给语言和框架的关系下个定义其实并不重要。你要的只是能给出结果的东西：Rails的配备、Ruby的核心类、插件、Ruby类库、你自己写的方法，等等。<br /><br />这也正和“百川汇于海”是一个道理。
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/162960#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 18 Feb 2008 14:17:13 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/162960</link>
        <guid>http://shaka.javaeye.com/blog/162960</guid>
      </item>
      <item>
        <title>讨厌填表格</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/162493" style="color:red;">http://shaka.javaeye.com/blog/162493</a>&nbsp;
          发表时间: 2008年02月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          面试过几家外包公司，动不动就发一简历模版过来让填表格，都是英文的。<br /><br /> 我就讨厌填这些东西，明明简历都写好了的，非让重写一遍。<br /><br /> 虽说是外包公司，面试的一般可都是中国人，非要看英文吗，难不成是在考查英文水平？还是统一规范，方便他们看？<br /><br /> 好像很多大公司也喜欢搞这套。<br /><br /> 没办法啊，填就填呗，谁让咱是求职者呢（‘求’人家给个职位，嘿嘿），只好忍了。<br /><br /> 发个牢骚，实在不爽..<br /><br /> 不过客观点说，找工作确是个费时费力的活，折腾一通，成了还行，不成真就白折腾了，又耗费时间又耗费钱，人生苦短
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/162493#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 15 Feb 2008 15:20:24 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/162493</link>
        <guid>http://shaka.javaeye.com/blog/162493</guid>
      </item>
      <item>
        <title>调侃技术</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/161282" style="color:red;">http://shaka.javaeye.com/blog/161282</a>&nbsp;
          发表时间: 2008年02月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          昨天出去，遇到一个比较牛的人，攀谈之后了解到，此人毕业于某名校，曾经在IBM中国研发中心工作，开发过一系列eclipse插件，并参与IBM SOA架构的研发工作。<br /><br />  比较和善的一个人，一点也不咄咄逼人，但谈到当今主流技术，他却说，IBM很多人称“现在的Java程序员应改名为SSH程序员”，言谈之间似乎对spring+struts+hibernate这套框架大为不屑。他还开玩笑说“java程序员是configer(配置员)，做.net开发的连配置都谈不上，只是一帮画图的”。<br /><br />  说到平台，他说 “最牛的是大机（即IBM大型机）上的研发，用cobol之类的语言，JAVA顶多只能写点外围的程序，其次是Unix/linux，最次是Windows上的开发”，很不幸，我就在Windows平台上。<br /><br /> 说到软件，他说“最牛的是做SAP,还有SOA”。你能想象到一个桌面软件，外壳用java，里面用C, 进去以后发现还有C++...，SOA就能做到这些，它能把各种技术糅合到一块，让它们协同工作。<br /> <br /> 问我看过struts源码没有，我说看过，<br />他：看了struts源码以后，自己照着写了个框架，感觉比struts还好用。<br />我：那你怎么不贡献出来。。<br />他：自己用了，struts设计不太好，一个请求传过来，Action不怎么处理就转发了，问题很多。中间应该再加一层。<br />我：那叫拦截，现在新的Web框架都有这个<br />他：对，现在叫拦截，我们那时候都还不叫拦截。<br />我：。。。<br /><br /><br /> 说到javascript，说这才是考较真功夫的东西，因为你要一行一行的写，很多算法包含在里面，可现在很多人都不重视js. 说罢摇头。<br /><br /> 旁边一年轻哥们，说他一同学毕业两年跳了12次槽，现在一月两万，我吃惊的问：跳槽这么频繁，单位敢要？ 他说：现在IT流行跳槽，而且跳槽是加薪的最好手段。<br /><br /> 我骇然，想想牛人还真多。。。
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/161282#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 03 Feb 2008 11:35:58 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/161282</link>
        <guid>http://shaka.javaeye.com/blog/161282</guid>
      </item>
      <item>
        <title>DHH访谈：Rails 2.0新特性</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/158055" style="color:red;">http://shaka.javaeye.com/blog/158055</a>&nbsp;
          发表时间: 2008年01月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          看到一篇InfoQ对DHH关于Rails 2.0的访谈录,摘了下来.<br /><br />英文原文： <a href="http://www.infoq.com/articles/ruby20-dhh-interview " target="_blank">http://www.infoq.com/articles/ruby20-dhh-interview </a><br />中文译文： <a href="http://www.infoq.com/cn/articles/ruby20-dhh-interview" target="_blank">http://www.infoq.com/cn/articles/ruby20-dhh-interview</a><br /><br />历经数月开发，Ruby on Rails 2.0终于正式发布。InfoQ有机会就Rails 2.0与Ruby on Rails之父和最有影响力的支持者——David Heinemeier Hansson进行了交流。<br /><strong><br />David Heinemeier Hansson</strong>作为web应用框架Ruby on Rails的创始人而声名鹊起。Ruby on Rails是我们用来构建37signals所有应用的基础软件。David Heinemeier Hansson1979年出生于丹麦哥本哈根。在2005年从哥本哈根商学院毕业后，他移居到了美国芝加哥市。他是37signals的合伙人之一，这家公司拥有Basecamp、Highrise、Backpack、Writeboard和Ta-da List等一系列web应用。由于在Rails方面的工作，David在2005年被Google和O'Reilly合办的OSCON大会授予最佳 Hacker大奖。而2006年他又凭借Rails 1.0获得了年度卓越web开发工具震撼大奖（译注：2006年Rails 1.0获得了Jolt大奖中WEB DEVELOPMENT TOOLS类的Jolt Winner）。<br /><br /><strong>Rob Bazinet (RB)</strong>：Rails 2.0.1已经发布，你如何评价Rails团队的成果？<br /><br />David Heinemeier Hansson (DHH)：大家的聪明才智能够汇聚在一起，这让我感到非常骄傲。来自全世界各地的人们能够在一起为发布一个被广泛使用的框架而工作，这听起来好像很不切实际。然而，我们确实做到了。像Ruby on Rails这样的大型开源项目为我们勾勒出了这样一个美妙图景：程序员们超越时间、国家和语言的障碍，通过远程协同的方式一起工作。<br /><br />最后的成果同样令人印象深刻。Rails 2.0经过了精心的设计，其妙处很难用言语表达清楚（众多细微的修改到底意味着什么呢？），但开发者在使用过程中会明显的感觉到。<br /><br /><strong>RB</strong>：如果请你回到Rails发展的初始时间点上，重新审视你和Rails社区一路走来的历程，你能够想象会取得今天的成就吗？我的意思是，今天Rails所拥有的开发者、产品、培训课程、书籍、会议和其他社区支持。<br /><strong><br />DHH</strong>：其实还好。那时候我想，如果我喜欢用Ruby on Rails，其他人也很可能会的。我的编程品味和美学并不怪异，很多人都和我拥有一些共同的赏鉴观。不过，自Rails发展伊始，我们确实已经在非常短的时间内取得了激动人心的巨大进步。<br /><br />也许我那时候有一点悲观，我并没有料想到这样一个由奉献业余时间的志愿者们所开发的开源项目会产生如此大的影响。当然，看到当初估计的种种困难最终被克服，确实令我欢欣鼓舞。<br /><br /><strong>RB</strong>：你认为Rails世界在未来几年中会如何发展？也许让你做出预测可能比较难，我只是想知道你对于未来发展的期望是怎样的？<br /><br /><strong>DHH</strong>：我希望我们继续通力合作，不断解决Rails本身存在的各种问题。我们会继续坚持我们的愿景和理念，吸引更多的人们进入Rails世界。当然，并不是每个人都得用Rails。Rails是一个技术框架，但它同时也体现着风格和偏好。试想如果每个人都喜欢同样的餐厅或穿着出自同一位设计师之手的衣着，这个世界将会变得多么乏味？我们需要选择和差异来保持生活的趣味性。<br /><br />所以如果我们能沿着现在的轨道继续前行，我就心满意足了。<br /><br /><strong>RB</strong>: Rails 2.0所做的更新相当多，考虑到这些之中可能存在的破坏性变更，你认为从之前版本向Rails 2.0的过渡会很容易吗？一些编程约定的变化也在需要考虑的范围内，包括将一些功能从框架的一部分移入到gem中。<br /><br /><strong>DHH</strong>：我们已经花费了很长时间来保证从Rails1.2.x到2.0版本的迁移不会过于痛苦。在Rails 1.2.6中，我们已经加入了许多警告信息，使得编程者能循着一种可控的方式逐渐为2.0版本做好准备。如果你的应用可以很好的在Rails 1.2.6上运行，那么到2.0的过渡就是水到渠成之事。而那些被从框架内核移到插件的功能也可以通过几句简单的命令重新加入到应用中。<br /><br /><strong>RB</strong>: 可否为我们概述一下本次发布的2.0版本相对于1.2.6有什么变化？其中的哪些重大变化使得Rails团队将版本编号做出了如此大的升级？<br /><br /><strong>DHH</strong>: 主干版本通常意味着向后兼容性不再被保证。这也是为什么我们在版本上会有此一跃。我们之前一直在整理各种应该被清理的特性，而迈向2.0版本正是顺理成章之举。<br /><br /><strong>RB</strong>: 我听说Rails的代码库规模已经从上一版本的5万4千行增加到了现在的近9万4千行。你怎么看这样一个变化？对于保持一个框架的简单性来说，这是一个需要注意的问题吗？也许这不是一个相关的问题，不过我个人确实觉得这一组前后对比的数字很有意思，不知道你是否也有此感觉？<br /><br /><strong>DHH</strong>: 我想说随着代码行数的增加，Rails在很多方面其实变得更加简单。许多关注点被抽象成了这样一种方式：如果你不想另辟蹊径，那么你就不需要担心它们。这也是合情合理的做法。对于我来说，代码行数本身并不说明什么问题，而使用者用这些代码所能够表达出什么样的内容才是意义重大的事情。因此如果框架的用户能通过10行而不是100行代码完成一个功能描述，这才是这个框架简单性的真正体现。这也使很多人们觉得Ruby比起像Java或C#这样的语言更加吸引人的一个原因。<br /><br /><strong>RB</strong>: 请告诉我你眼中Rails 2.0最重要的特性和那些最可能让开发者笑逐颜开的特性?<br /><br /><strong>DHH</strong>: 我认为我们对于RESTful应用开发的侧重是Rails 2.0的第一主题。它包含了一组相关特性，从如何能在routing.rb中影射资源到我们为respond_to提供的多是土支持，再到HTTP基本认证等等。用RESTful的方式开发web应用确实是一个让人欢欣鼓舞的转变。虽然理解这一转变可能会花些时间，但一旦你经过这一阶段，你就会适应并享受它。<br /><br />我知道Rails被用来开发像Twitter这样拥有大量用户的应用，不过.....<br /><br /><strong>RB</strong>: 新引入的特性和更新中是否有面向企业级应用可伸缩性问题的解决方案？<br /><br /><strong>DHH</strong>: 我们所确定的任何简化开发的特性都会为大型应用带来更显著的好处。如果你你将一个应用所需的代码量减少20%，那么对于一千行代码规模的项目可以减少200行，而2万行代码规模的项目则可以减少4000行。<br /><br />当应用的处理负载增加时，应用本身没有什么变化。因为对于应用本身来说，没有什么需要变化。一直以来，人们通常增加线性量级的硬件来保证应用能够处理更多的用户请求（这也使应用可伸缩性的定义）。当然，我们已经对Rails的性能进行了显著的改进，所以每一个服务器将可以处理更大的负载（代码中加入了大量的缓存优化）。<br /><br />同时，我们还改进了HTTP的使用，因此对于客户端来说，所感觉到Rails应用性能也会更加好。（主要是采用了asset caching）。 <br /><strong><br />RB</strong>: 你认为Rails从Rubinius或Ruby 1.9这样的项目中获得了怎样的益处?<br /><br /><strong>DHH</strong>：所有人都希望速度能够更快。对于我来说，速度并不是一个Rails需要解决的需求，不过Ruby速度的提高的确是一个令人愉快的礼物吧。<br /><br /><strong>RB</strong>：微软已经在IronRuby方面做了许多工作，不久之后我们可能就会看到.NET上的Rails。与之相对应的是JRuby 和在Java虚拟机上运行的Rails。对我来说这听起来这些是将Rails应用到那些将.NET和Java作为标准的企业中。这些是否意味着Ruby和 Rails的胜利？你如何看待这一趋势？<br /><br /><strong>DHH</strong>：随着人们更多的接触像Rails这样的现代开发框架，他们在使用主流开发环境时遭受糟粕之害的可能性会越来越小。希望这样可以使得大家都能获益。所以我认为将Ruby on Rails吸收到现有的企业基础设施中是件好事。<br /><br /><strong>RB</strong>：David，谢谢你今天抽出时间为我们介绍Ruby on Rails的最新发布版。[b][/b]
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/158055#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 21 Jan 2008 15:25:35 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/158055</link>
        <guid>http://shaka.javaeye.com/blog/158055</guid>
      </item>
      <item>
        <title>ruby singleton解析</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/157983" style="color:red;">http://shaka.javaeye.com/blog/157983</a>&nbsp;
          发表时间: 2008年01月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          搜索了一下，发现JE上还没有关于Ruby singleton的帖子，自己来写个<br />引用《Programming Ruby》书中的一例<br /><br /><div class="quote_title">引用</div><div class="quote_div"><pre name="code" class="ruby">class Mylogger
private_class_method :new 
@@logger=nil
def Mylogger.create
@@logger = new unless @@logger 
@@logger
end
end</pre></div><br /><br />观察这段代码，@@logger对象是在方法调用后被创建，所以这个是典型的单例“懒汉”模式。<br /> <br />某些代码注解：<br /> private_class_method :new <br />#private_class_method是Module的一个方法，用于将一个已经存在的类方法定义成私有。这里是将new方法定义成私有。<br /><br />方法<br /><pre name="code" class="ruby">def Mylogger.create
@@logger = new unless @@logger 
@@logger
end</pre><br /><br />此方法判断@@logger对象实例是否存在，不存在则调用new创建之，存在则直接返回。。<br /><br />我也“懒汉”，写“懒汉”单例，先写这么多罢
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/157983#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 21 Jan 2008 13:05:40 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/157983</link>
        <guid>http://shaka.javaeye.com/blog/157983</guid>
      </item>
      <item>
        <title>写博客时发现的一个问题</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/157973" style="color:red;">http://shaka.javaeye.com/blog/157973</a>&nbsp;
          发表时间: 2008年01月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          刚才写博客，发现一个问题。写完以后提交，浏览器出错，刷新，东西没了，返回，编辑栏已经清空了，只好重写。<br /><br />不知道 这是JE网站的bug,还是我浏览器的问题，我使用的是IE7。<br /><br />早上删过一篇文章，想找回来，却没有，也是重写，感觉很浪费时间，不知道JE是不是未提供类似回收站的功能，删掉的东西就永远没了。
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/157973#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 21 Jan 2008 12:09:45 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/157973</link>
        <guid>http://shaka.javaeye.com/blog/157973</guid>
      </item>
      <item>
        <title>今天又被通知工资再次拖欠</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/157953" style="color:red;">http://shaka.javaeye.com/blog/157953</a>&nbsp;
          发表时间: 2008年01月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天是大寒，我的心同样寒。。<br /> <br /> 拖欠了数月的工资，上月终于得到要发下来的消息，领导是这么说的：最早这个月底，最迟下月底就能发下来。。<br /><br /> 上月已过，虽然我满怀信心的等待，终于没能如我所期待的那样，工资没下来<br /><br /> 转眼到了这月底，说定的期限，前几天领导还透露消息说，XX号一定能发下来，可我感觉的到，他的语气不是那么肯定。<br /><br /> 结果我的感觉被证实，今天一早，他宣布：某董已经拿到几百万，可是由于国家金融政策变了，有很多手续要批，所以这笔钱还没到，要等一两周。。<br /><br /> 我当时骂了一句，可能声音小，他没听见。。<br /> <br /> 昨天刚看到一条新闻，说国家要在今年即08年全面解决拖欠工资问题，可按照他的说法，那国家不是有意无意的给这种恶劣的行为提供温床，手续，手续，估计是个托词罢。<br /><br /> 昨天还用身上仅有的一点钱请同学吃了顿饭，钱还是给家里要的。<br /><br /> 而我早该想到，实在不该信赖这家公司，更不该把手中的钱封装起来，而我的冬天确实犹如冬天那般严冷。。。
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/157953#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 21 Jan 2008 10:46:20 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/157953</link>
        <guid>http://shaka.javaeye.com/blog/157953</guid>
      </item>
      <item>
        <title>某次面试对ORM问题的回答</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/157354" style="color:red;">http://shaka.javaeye.com/blog/157354</a>&nbsp;
          发表时间: 2008年01月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          前几天某公司打电话来,说在招聘Java软件工程师,对我进行一番电话面试,其间问到一个ORM问题.最基本的,如何实现两个模型类的一对多/多对一映射.<br /> 我:"这是hibernate的问题"<br /> 面试官:"是的" <br /> 我:"在父类中使用has_many 子类,实现一对多映射,<br />     子类中使用belongs_to 父类,实现多对一映射<br /> 面试官:"..."<br /><br />  完事才想起来,给说成Rails里的映射了,哪儿是hibernate,遂一笑了之.看来中Rails的毒太深了<img src="/images/smiles/icon_smile.gif"/>
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/157354#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 18 Jan 2008 16:25:44 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/157354</link>
        <guid>http://shaka.javaeye.com/blog/157354</guid>
      </item>
      <item>
        <title>[转载]Rails常用表单</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/156919" style="color:red;">http://shaka.javaeye.com/blog/156919</a>&nbsp;
          发表时间: 2008年01月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          为了方便对rhtml中表单的学习和使用，整理了一部分rails常用表单用法。<br /><br /><span style="color: orange"><strong>表单开始标签:</strong></span><br />&lt;%= form_tag { :action => :save }, { :method => :post } %><br />#开始一个表单，相当于<br />#html表单&lt;input type="form" action="save",method="post"><br />Use :multipart => true to define a Mime-Multipart form (for file uploads) <br />#定义一个Mime-Multipart格式的表单，用于文件上传<br /><br /><span style="color: orange"><strong>表单结束标签:</strong></span><br />&lt;%= end_form_tag %><br /><br /><span style="color: orange"><strong>文本框 Text fields</strong></span><br />&lt;%= text_field :<span style="color: blue">modelname</span>, :<span style="color: blue">attribute_name</span>, <span style="color: blue">options</span>%><br />#这个是最常用的文本输入框，三个参数依次是模型名，模型的属性名，以及选项，诸如size,value等文本框属性。<br />生成:<br />&lt;input type="text" name="modelname[attribute_name]" id="attributename" /><br /><br />实例:<br />text_field "post", "title", "size" => 20<br />    &lt;input  type="text" id="post_title" name="post[title]" <br />            size="20" value="#{@post.title}" /><br /><br /><span style="color: red">隐藏框:</span><br />&lt;%= hidden_field ... %><br />#隐藏表单，类似&lt;input type="hidden"..><br /><br /><span style="color: red">密码框:</span><br />&lt;%= password_field ... %><br />#类似&lt;input type="password"..><br /><br /><span style="color: red">文件框:</span><br />&lt;%= file_field ... %><br /><br />Rails Textarea框:<br />&lt;%= text_area ... %><br /><br />实例:<br />text_area "post", "body", "cols" => 20, "rows" => 40<br />    &lt;textarea cols="20" rows="40" id="post_body" name="post[body]"><br />        #{@post.body}<br />    &lt;/textarea><br /><br /><span style="color: orange"><strong>单选框 Radio Buttons</strong></span><br />&lt;%= radio_button :modelname, :attribute, :tag_value, options %><br /><br />实例:<br />radio_button "post", "category", "rails"<br />radio_button "post", "category", "java"<br />    &lt;input type="radio" id="post_category" name="post[category]" value="rails" <br />           checked="checked" /><br />    &lt;input type="radio" id="post_category" name="post[category]" value="java" /><br /><br /><span style="color: orange"><strong>多选框 Check Box</strong></span><br />&lt;%= check_box :modelname, :attribute, options, on_value, off_value %><br /><br />实例:<br />check_box "post", "validated"   # post.validated? returns 1 or 0<br />    &lt;input type="checkbox" id="post_validate" name="post[validated]" <br />           value="1" checked="checked" /><br />    &lt;input name="post[validated]" type="hidden" value="0" /><br /><br />check_box "puppy", "gooddog", {}, "yes", "no"<br />    &lt;input type="checkbox" id="puppy_gooddog" name="puppy[gooddog]" value="yes" /><br />    &lt;input name="puppy[gooddog]" type="hidden" value="no" /><br /><br />&lt;%= select :variable, :attribute, choices, options, html_options %><br /><br /><span style="color: orange"><strong>下拉菜单框 Select Menu</strong></span><br />select  "post",         <br />        "person_id",    <br />        Person.find_all.collect {|p| [ p.name, p.id ] },<br />        { :include_blank => true } <br /><br /> &lt;select name="post[person_id]"><br />   &lt;option>&lt;/option><br />   &lt;option value="1" selected="selected">David&lt;/option><br />   &lt;option value="2">Sam&lt;/option><br />   &lt;option value="3">Tobias&lt;/option><br /> &lt;/select><br /><br />Collection Selection<br />&lt;%= collection_select :variable, :attribute, choices, :id, :value %><br /><br /><span style="color: orange"><strong>日期选择框:</strong></span><br />&lt;%= date_select :variable, :attribute, options %><br />&lt;%= datetime_select :variable, :attribute, options %><br /><br />实例:<br />date_select "post", "written_on"<br />date_select "user", "birthday", :start_year => 1910<br />date_select "user", "cc_date", :start_year => 2005,<br />                               :use_month_numbers => true,<br />                               :discard_day => true,<br />                               :order => [:year, :month]<br /><br />datetime_select "post", "written_on"
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/156919#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 17 Jan 2008 15:44:12 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/156919</link>
        <guid>http://shaka.javaeye.com/blog/156919</guid>
      </item>
      <item>
        <title>WebService的基本概念</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/156829" style="color:red;">http://shaka.javaeye.com/blog/156829</a>&nbsp;
          发表时间: 2008年01月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求，轻量级的独立的通讯技术。</strong><br /><br />这种技术允许网络上的所有系统进行交互。随着技术的发展，一个Web服务可以包含额外的指定功能并且可以在多个B2B应用中协作通讯。 Web服务可以理解请求中上下文的关系，并且在每一个特定的情况下产生动态的结果。这些服务会根据用户的身份，地点以及产生请求的原因来改变不同的处理，用以产生一个唯一的，定制的方案。这种协作机制对那些只对最终结果有兴趣的用户来说，是完全透明的。   <br /><br /><strong>UDDI </strong><br /><br />在用户能够调用Web服务之前，必须确定这个服务内包含哪些商务方法，找到被调用的接口定义，还要在服务端来编制软件。所以，我们需要一种方法来发布我们的Web服务。 <strong>UDDI (Universal Description, Discovery, and Integration)</strong> 是一个主要针对Web服务供应商和使用者的新项目。UDDI 项目中的成员可以通过UDDI Business Registry (UBR) 来操作Web服务的调用，UBR是一个全球性的服务。 Web服务供应商可以在UBR中描述并且注册他们的服务。 用户可以在UBR中查找并定位那些他们需要的服务。 UDDI是一种根据描述文档来引导系统查找相应服务的机制。 UDDI包含标准的“白皮书”类型的商业查询方式， “黄皮书”类型的局部查找，以及 “绿皮书”类型的服务类型查找。 UDDI利用SOAP消息机制（标准的XML/HTTP）来发布，编辑，浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据，并且发送到注册中心或者由注册中心来返回需要的数据。   <br /><br /><strong>WSDL </strong><br /><br />对于商业用户来说，要找到一个自己需要使用的服务，他必须知道如何来调用。 WSDL (Web Services Description Language) 规范是一个描述接口，语义以及Web服务为了响应请求需要经常处理的工作的XML文档。这将使简单地服务方便，快速地被描述和记录。以下是一个WSDL的样例： <br /><br /><br /><pre name="code" class="xml">&lt;?xml version="1.0"?>
&lt;definitions name="StockQuote"
                targetNamespace="http://example.com/stockquote.wsdl"
                xmlns:tns="http://example.com/stockquote.wsdl"
                xmlns:xsd1="http://example.com/stockquote.xsd"
                xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
                xmlns="http://schemas.xmlsoap.org/wsdl/">
&lt;types>
   &lt;schema targetNamespace=http://example.com/stockquote.xsd
                 xmlns="http://www.w3.org/2000/10/XMLSchema">
      &lt;element name="TradePriceRequest">
        &lt;complexType>
           &lt;all>
                &lt;element name="tickerSymbol" type="string"/>
              &lt;/all>
           &lt;/complexType>
        &lt;/element>
        &lt;element name="TradePrice">
            &lt;complexType>
                &lt;all>
                   &lt;element name="price" type="float"/>
                 &lt;/all>
              &lt;/complexType>
           &lt;/element>
        &lt;/schema>
     &lt;/types>
     &lt;message name="GetLastTradePriceInput">
         &lt;part name="body" element="xsd1:TradePriceRequest"/>
     &lt;/message>
     &lt;message name="GetLastTradePriceOutput">
         &lt;part name="body" element="xsd1:TradePrice"/>
    &lt;/message>
    &lt;portType name="StockQuotePortType">
        &lt;operation name="GetLastTradePrice">
            &lt;input message="tns:GetLastTradePriceInput"/>
            &lt;output message="tns:GetLastTradePriceOutput"/>
         &lt;/operation>
      &lt;/portType>
      &lt;binding name="StockQuoteSoapBinding"
                    type="tns:StockQuotePortType">
         &lt;soap:binding style="document"
                                 transport="http://schemas.xmlsoap.org/soap/http"/>
        &lt;operation name="GetLastTradePrice">
            &lt;soap:operation
                           soapAction="http://example.com/GetLastTradePrice"/>
            &lt;input>
               &lt;soap:body use="literal"/>
            &lt;/input>
            &lt;output>
                &lt;soap:body use="literal"/>
            &lt;/output>
         &lt;/operation>
      &lt;/binding>
     &lt;service name="StockQuoteService">
        &lt;documentation>My first service&lt;/documentation>
        &lt;port name="StockQuotePort" binding="tns:StockQuoteBinding">
            &lt;soap:address location="http://example.com/stockquote"/>
        &lt;/port>
     &lt;/service>
  &lt;/definitions></pre><br /><br />它包含了以下的关键信息： 消息的描述和格式定义可以通过XML文档中的&lt;types>和&lt;message> 标记来传送。 &lt;portType> 标记中表示了消息传送机制。 (e.g. request-only, request-response, response-only) 。 &lt;binding> 标记指定了编码的规范 。 &lt;service> 标记中表示服务所处的位置 (URL)。 WSDL在UDDI中总是作为一个接口描述文档。因为UDDI是一个通用的用来注册WSDL规范的地方，UDDI的规范并不限制任何类型或者格式描述文档。这些文档可能是一个WSDL文档，或者是一个正规的包含导向文档的Web页面，也可能只是一个包含联系信息的电子邮件地址。现在Java提供了一个 Java API for WSDL (JWSDL)规范。它提供了一套能快速处理WSDL文档的方法，并且不用直接对XML文档进行操作，它会比JAXP更方便，更快速。   <br /><br /><strong>SOAP </strong><br /><br />当商业用户通过UDDI找到你的WSDL描述文档后，他通过可以Simple Object Access Protocol (SOAP) 调用你建立的Web服务中的一个或多个操作。 SOAP是XML文档形式的调用商业方法的规范，它可以支持不同的底层接口，象HTTP(S)或者SMTP。 之所以使用XML是因为它的独立于编程语言，良好的可扩展性以及强大的工业支持。之所以使用HTTP是因为几乎所有的网络系统都可以用这种协议来通信，由于它是一种简单协议，所以可以与任何系统结合，还有一个原因就是它可以利用80端口来穿越过防火墙。 SOAP的强大是因为它简单。SOAP是一种轻量级的，非常容易理解的技术，并且很容易实现。它有工业支持，可以从各主要的电子商务平台供应商那里获得。从技术角度来看，SOAP详细指明了如何响应不同的请求以及如何对参数编码。一个SOAP封装了可选的头信息和正文，并且通常使用HTTP POST方法来传送到一个HTTP 服务器，当然其他方法也是可以的，例如SMTP。SOAP同时支持消息传送和远程过程调用。以下是一个SOAP请求。 <br /><br /><br /><pre name="code" class="xml">POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn 
SOAPAction: "Some-URI" &lt;SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    &lt;SOAP-ENV:Header>
        &lt;t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1">
           5
        &lt;/t:Transaction>
    &lt;/SOAP-ENV:Header>
    &lt;SOAP-ENV:Body>
        &lt;m:GetLastTradePrice xmlns:m="Some-URI">
            &lt;symbol>SUNW&lt;/symbol>
        &lt;/m:GetLastTradePrice>
    &lt;/SOAP-ENV:Body>
&lt;/SOAP-ENV:Envelope> </pre><br /><br /><strong>JAXR </strong><br /><br />为了支持UDDI在Java平台上的功能，Java APIs for XML Registries (JAXR)允许开发者来访问注册中心。 值得注意的是，JAXR并不是建立Web服务必需的，你可以利用其他常用的XML APIs来直接集成这些协议。 JAXR是一个方便的API，它提供了Java API来发布，查找以及编辑那些注册信息。它的重点在于基于XML的B2B应用，复杂的地址本查找以及对XML消息订阅的支持等Web服务。 它也可以用来访问其他类型的注册中心，象ebXML注册中心。这些对Web服务的注册信息进行的操作，可以使用当前的一些Web服务工具来完成（例如第三方的SOAP和ebXML消息工具）。另外，当JAXP提供了一致并具有针对性的API来完成这些操作，这将使开发变得更加容易。 <br />JAX/RPC <br />为了使开发人员专注于建立象SOAP那样的基于XML的请求，JCP正在开发基于RPC (JAX/RPC) 的Java API。JAX/RPC是用来发送和接收方法调用请求的，它基于XML协议，象SOAP，或者其他的象XMLP (XML Protocol，要了解更多可以参考<a href="http://www.w3.org/2000/xp/" target="_blank">http://www.w3.org/2000/xp/</a>)。JAX/RPC使你不用再关注这些协议的规范，使应用的开发更快速。不久，开发人员就不用直接以XML表示方法调用了。目前有很多第三方实现了SOAP，开发人员可以在不同的层次上调用SOAP，并选择使用哪一种。将来，JAX/RPC会取代这些APIs并提供一个统一的接口来构造以及处理SOAP RPC请求。在接收一个从商业伙伴那里过来的SOAP请求的时候，一个Java servlet用JAX/RPC来接收这个基于XML的请求。一旦接收到请求后，servlet会调用商务方法，并且把结果回复给商业伙伴。 <br /><strong>JAXM </strong><br /><br />当从商业合作伙伴那里接收一个Web服务的请求时，我们需要Java API实现一个Servlet来处理ebXML消息，就象我们用JAX/RPC来处理SOAP请求一样。 Java API for XML Messaging (JAXM) 是集成XML消息标准（象ebXML消息或者SOAP消息）的规范。 这个API是用来推动XML消息处理的，它检测那些预定单的消息格式以及约束。它控制了所有的消息封装机制，用一种直观的方式分割了消息中的信息，象路由信息，发货单。这样，开发人员只要关注消息的有效负载，而不用去担心那些消息的重复处理。目前的开发人员用JAXP来实现JAXM将要提供的功能，JAXM将会提供一套非常具有针对性的API来处理基于XML的消息传送。这将大大简化开发人员的代码，并使它们具有统一的接口。 JAXM和JAX/RPC的差别在于处理消息导向的中间件以及远程过程调用的不同。JAXM注重于消息导向，而JAX/RPC是用来完成远程过程调用的。<br /><br />请注意，在JAXM 和 JAX/RPC技术成熟之前，开发人员还是依赖于第三方的SOAP APIs，象Apache SOAP, IdooXOAP, 以及 GLUE。当JAXM 和 JAX/RPC正式发布后，它将为当前不同的SOAP和ebXML消息提供统一的接口。就象JDBC位多种不同的数据库提供统一的接口。   <br /><br /><strong>JAXB </strong><br /><br />XML绑定技术可以把XML文档和Java对象进行自由转换。 用JAXB，你可以在后台的EJB层，把XML文档转换成Java对象。同样你也可以把从EJB中取出的Java对象转换成XML文档返回给用户。 JAXB接口提供了比SAX和DOM更高级的方法来处理XML文档。它提供的特性可以在XML数据和Java类之间互相映射，提供了一个简单的方法来转换XML数据。它比逐个解析标记更简单。
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/156829#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 17 Jan 2008 10:42:40 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/156829</link>
        <guid>http://shaka.javaeye.com/blog/156829</guid>
      </item>
      <item>
        <title>Ruby&amp;Java比较之mixin</title>
        <author>shaka</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shaka.javaeye.com">shaka</a>&nbsp;
          链接：<a href="http://shaka.javaeye.com/blog/156177" style="color:red;">http://shaka.javaeye.com/blog/156177</a>&nbsp;
          发表时间: 2008年01月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          近日翻阅Rod Johnson的大作《J2EE Development without EJB》一书，在对AOP的阐述一章，看到如下内容。 <br />AOP定义： <br />  混入继承(mixin inheritance):一个“混入类”封装了一组功能，这组功能可以被“混入”到现有的类中，无须借助传统的继承。Java可以通过混入模拟多继承。混入通过“引介”实现。再看什么是“引介”。 <br />  引介(introduction)：为一个现有的类或接口添加方法或字段。相当于对类的扩展。（把新功能介绍给现有类，多么形象！） <br /><br /> 才接触java的mixin,一直以为mixin是ruby这类动态语言所特有的，看来是我错了，好东西谁都想拥有，没有可以借鉴别人的，只是不知道谁借鉴谁的。<br /><br />  说到mixin,不能不提接口,在"面向接口编程"被喊的铺天盖地的时候,mixin提供了更优雅的语言特性.<br /><br /> "面向接口编程"应该大力提倡,但接口的缺点也是众所周知,接口只是接口,没有具体实现,继承接口的类需要自己实现接口定义的各种方法，很多时候这些方法的实现是大同小异的，那就不得不一次次重复自己，repeat yourself已经是很痛苦的事情了，更不用说以后扩展维护的难度。<br /><br /> 所以又出现了范型，generic programming。范型还不错，实现了数据类型无关的编程，这对很大一类问题都是很简单直接的解决办法，但是范型并没有很直接的解决继承接口无法继承实现的问题。并且，Ruby这样的动态语言本身就是数据类型无关的，并不需要范型这种东西，所以范型只是用来解救Java,C++,C#之类的.<br /><br /> Ruby提供的Mixin可以说是最直接的解决了接口继承的缺点。Mixin就是带有实现的接口。举个简单的例子吧。<br /><br /><pre name="code" class="Ruby">module Mixin1
def fun1
print “I am fun1 from Mixin1″
end

def fun2
print “I am fun2 from Mixin1. I’ll call a member function of the class which includes me”
mem_fun
end

def fun3
print “I am fun3 from Mixin1. I’ll print out a member variable of the class which includes me”
print mem_var
end
end

class A
include Mixin1
def mem_fun
print “I am a member fun of class A”
end

def initialize
@mem_var =”I am a member varaible of class A
end
end

a = A.new
a.fun1
a.fun2
a.fun3</pre><br />其实对于动态语言来说，实现这些并不难，难的是Ruby把这些做的这么贴心，这么顺手，难怪Ruby能日益流行。
          <br/>
          <span style="color:red;">
            <a href="http://shaka.javaeye.com/blog/156177#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 15 Jan 2008 18:01:34 +0800</pubDate>
        <link>http://shaka.javaeye.com/blog/156177</link>
        <guid>http://shaka.javaeye.com/blog/156177</guid>
      </item>
  </channel>
</rss>