<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>笑熬浆糊</title>
    <description>干嘛要谈Java，我偏偏就说.NET，Microsoft一统江湖，千秋万代。</description>
    <link>http://raylinn.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>C# 利用范型与扩展方法重构代码</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/179257" style="color:red;">http://raylinn.javaeye.com/blog/179257</a>&nbsp;
          发表时间: 2008年04月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在一些C#代码中常常可以看到<br /><pre name="code" class="java">
//An Simple Example By Ray Linn
class CarCollection :ICollection
{
    IList list;
    
    public void Add(Car car)
    {
         list.Add(car);
    }
    .... function list for ICollection...
    
    public  void listPrice()
    {
       foreach(Car car in list)
           System.Console.WriteLin(car.Price);
    }
    ......more specifical function list...
}

class PetCollection :ICollection
{
    IList list;

    public void Add(Pet pet)
    {
         list.Add(pet);
    }
    .... function list for ICollection...
    
    public  void FeedPet()
    {
       foreach(Pet pet in list)
           System.Console.WriteLin(pet.Eating());
    }
    ......more specifical function list...
}
</pre><br /><br />这样的代码在很多Open Source项目中是很经常看到的,比如Cecil，其共同特点是:某种特定类型的Collection+该Collection特殊的操作，在一个项目中可能充斥着数十个类似的Collection,类似的代码在Java中很难被重构，但是在C#中，却可以借助扩展方法与范型进行代码的精减。 <br /><br />首先创建范型的Collection，该例子可以用List&lt;T>来代替，但作为例子，我们假设该List&lt;T>是特殊的（可能有一些delegate) <br />Java代码 <br />  <br /><pre name="code" class="java">
public CommonCollection&lt;T>:ICollection&lt;T>   
{   
   IList&lt;T> list   
  
    .... function list for ICollection...   
}  

public CommonCollection&lt;T>:ICollection&lt;T>
{
   IList&lt;T> list

    .... function list for ICollection...
}

</pre><br /><br />对于Car和Pet的特殊操作，我们通过扩展方法来实现 <br /><pre name="code" class="java">
  

public static class CarExt
{
    //Ext Function For CommonCollection&lt;Car> by Ray Linn
    public static void listPrice(this CommonCollection&lt;Car> collection)
    {
       foreach(Car car in collection)
           System.Console.WriteLin(car.Price);
    }
    ......more specifical function list...
}

public static class PetExt
{
      //Ext Function For CommonCollection&lt;Pet> by Ray Linn
    public static void FeedPet(this CommonCollection&lt;Pet> collection)
    {
       foreach(Pet pet in list)
           System.Console.WriteLin(pet.Eating());
    }
}
</pre><br /><br />通过这样的方式，我们就实现了重构，两个Collection实现了求同存异。在我重构的Cecil之后,编译后的Assemly大小减小了一半.
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/179257#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Apr 2008 14:58:53 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/179257</link>
        <guid>http://raylinn.javaeye.com/blog/179257</guid>
      </item>
          <item>
        <title>几个C#的Design by Contract的工具</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/170039" style="color:red;">http://raylinn.javaeye.com/blog/170039</a>&nbsp;
          发表时间: 2008年03月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Microsoft Spec#: <br />http://research.microsoft.com/SpecSharp/<br /><br />C# AL: <br />http://www2.sys-con.com/ITSG/virtualcd/Dotnet/archives/0109/katrib/index.html<br /><br />XC#:<br />http://www.resolvecorp.com/default.aspx<br /><br />ncontact: http://puzzleware.net/nContract/nContract.html#ConfiguringContractChecks
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/170039#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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>Tue, 11 Mar 2008 09:43:27 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/170039</link>
        <guid>http://raylinn.javaeye.com/blog/170039</guid>
      </item>
          <item>
        <title>这篇谈钢琴的帖子</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/161829" style="color:red;">http://raylinn.javaeye.com/blog/161829</a>&nbsp;
          发表时间: 2008年02月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这篇谈钢琴的帖子，是在一年多以前写的。本来是专为耳机的一位朋友写的，因为家电联盟网站相约，给了他们。我看还是很多朋友关心钢琴的声音，现在发在这里。<br /><br />当今最著名的钢琴很多，我们可以听到有：斯坦威（Steinway & Sons）、贝森多夫（Bosendorfer）、法奇奥里（Fazioli）和贝切斯坦 (Bechstein)。在过去的一年里，也许是我的执着感动了上苍，结果很幸运、也很意外地都能在现场认认真真听过至少一次。<br /><br />一个老话题立即涌了出来，这些名琴他们的声音有什么区别，到底谁的声音更好听？<br /><br />前些日子，我看到有人对其中三种琴声作了描述，尽管他的描述与我的现场聆听感受很不一样，但我觉得还是有必要先简要概括他人的描述，略做一点介绍如下。<br /><br />斯坦威对音色追求近乎变态的，出场之前都要经过苛刻的检查，以确保每一架斯坦威钢琴都有一种独一无二的声音。从音色上说，斯坦威的声音很难用语言来表达，感觉是一种雍容华贵，极具帝王气质的声音。每当人们第一次听到斯坦威的声音，无不为其高贵的气质所折服。斯坦威的钢琴低音浑厚无比，中音温暖而宽厚，高音明亮而华丽。但是就中音来说，斯坦威是最出众的，具有很强的感染力和表现力，不过笔者认为最有杀伤力的还是斯坦威那种天生的帝王气质。<br /><br />贝森多夫采用和斯坦威不同的标准，因此，音色侧重上也有所不同。贝森多夫的声音含蓄，但是极具底蕴。可以很明显地听出是德奥系的声音。贝森多夫最有特点的地方在于低音区域，其在低音区音色清晰而圆润，而且不失浑厚。可以营造一种奇特的音色氛围。不少钢琴家称其为“意境深沉，含蓄不发”。感觉大有“重剑无锋，大巧不工”的意思。<br /><br /><br />关于斯坦威和贝森多夫琴声的差异，有位朋友专门从杂志上摘录了一段琴声对比的文章，很值得一读。<br /><br />“美国产斯坦威和欧洲产还是有区别的，前者的音质明亮一些，后者则圆润些。大多数钢琴家都说它的钢琴能适应多方面的要求，音质纯净而音域宽广，高音明亮，低音饱满丰富。很多钢琴家不认为贝森多夫琴比得上斯坦威琴那么面面俱到，但它的低音至中音部分声音丰满，高音部音色甜美而绝不带金属声，这些都可与斯坦威相比。贝森多夫琴也是演奏莫扎特和舒伯特那些优雅的维也纳风格作品的理想乐器。钢琴家巴克豪斯在一篇著名的谈话中提到，他发现贝森多夫琴具有自己独特的弹奏效果，它对钢琴家在声音和触键方面的任何意图都完全顺从顺。”<br /><br />非常谢谢这位朋友的关心！这本杂志我没有订阅了，转摘的文章也是第一次读到。但我觉得这是一个真正听过、也认真比较过二种琴声的人说的，或者说他与我听过后的感受很相似。我尤其欣赏他说的这二句话：<br /><br />大多数钢琴家都说斯坦威能适应多方面的要求，音质纯净而音域宽广，高音明亮，低音饱满丰富；很多钢琴家不认为贝森多夫比得上斯坦威琴那么面面俱到，但它的低音至中音部分声音丰满，高音部音色甜美而绝不带金属声，这些都可与斯坦威相比。<br /><br />特别注解一下这句话的含义：高音部音色甜美而绝不带金属声，这些都可与斯坦威相比。说的更准确点，贝森多夫就是声音非常圆润，感觉高音似乎少了一点，其实未必是少了。<br /><br />斯坦威的高音带有非常明显的一种特殊的金属声，显得声音很开扬。如果以人声来比喻，一个是壮年人发出的声音，一个是青年人发出的声音。从表现音乐来说，德奥的作品用贝森多夫的琴很好听，但很多的作品，尤其是现代作品用斯坦威更合适，他的表现力更全面。所以，我要补充的是，其实唯有高音的金属声不可比斯坦威。<br /><br />欧洲琴都有个大特点，就是感觉很沉重，弹奏时间长了显得很吃力。贝森多夫的琴也是这样，比较沉，很多人弹不动。法籍越南钢琴家邓太松弹奏贝森多夫，琴声异常靓美，国内没有钢琴家可以发出这种靓声；旅美钢琴家许斐平身前就坚决拒绝用他录音。在一次音乐会结束后，我请在场一位学琴的男孩子试比较过他家的雅马哈三角琴与他的不同。男孩子很惊讶问，为什么这架琴特别重？童言无忌，他的问题引得哄堂大笑。<br /><br />我这么说，引起一位朋友的怀疑：他说无论如何都是顶尖的名琴，如此难弹，缺陷如此明显，难道还不如“雅马哈”或“珠江”更能反映钢琴的本质声音？<br /><br />这位朋友误解我的意思，说难弹，不是说他有多少明显的缺陷！这里说的难是与其他的琴比较而言说他的琴键显得沉，触键比较费劲。不是说没有一点声音，而是发出的琴声不堪入耳，缺少了美感，没有反映钢琴的本质声音。如果学习时都是用“雅马哈”“卡瓦依”这类的钢琴，以后一定弹不好真正的好琴。因为习惯了那些“轻浮”琴的感觉，往往控制不住这些好琴的声音。不要说贝森多夫这么沉的琴，我第一次试斯坦威的演奏琴，也是觉得弹了几乎没声音。<br /><br />听过贝森多夫的朋友，一定不敢再说什么“最有杀伤力的还是斯坦威那种天生的帝王气质”这样的话。什么叫帝王气？请好好听一听贝森多夫吧！他的高音之靓，可以说是自然、甜美、润泽，基音和低音的泛音都十分突出，低音特别厚实，光是他独门多出来的那四个低音黑键，发出的可不是一般的气概，他显示的英雄气概是真正的王气，无人可比；请记住,贝森多夫的琴声，自1850年以来就约享有“维也纳音色”的美誉，它更因为经受了李斯特的“暴风雨”的洗礼，名扬天下，他最著名的演奏琴290se就称做“帝王”！<br /><br />有人说从席夫、彼得森的唱片中仔细听过二种琴声不同，感觉正是贝森多夫的高音更圆润，有种玲珑的感觉。而斯坦威明亮些。因此有人猜想在发烧录音中可能贝森多夫的声音更讨好人！不管如何，肯定说贝森多夫比斯坦威更靓声也好，不同意的也好，关键要看演奏的作品是什么，一味强调汹涌澎湃的作品，当然还是要斯坦威更靓，这个也是斯坦威全面表现的拿手戏。<br /><br />发烧录音中，那种钢琴的琴声录音更靓不好说，开始也感觉很少听到贝森多夫的录音，可能更不好捕捉他的声音之美？其实是我们的资讯不灵、视野不宽。贝森多夫还是有些发烧等级的录音，如MIT出的“动态琴皇”，PMG 出的那张的“Naum Starkman 弹肖邦”等。贝森多夫最好的的琴声录音，我认为是Phlilps录的“布伦德尔在萨尔茨堡独奏音乐会” 那张碟片，几乎可以说不仅是贝森多夫最好的录音之一，也是钢琴现场录音的第一天碟。<br /><br />有人说1828年在维也纳设立的贝森多夫钢琴厂，现已为美国的Kimball公司所有。即使如此，金色大厅的音乐会还是继续用他。<br /><br /><br /><br /><br />豪华漂亮的意大利名琴法奇奥里终于也走入我的视听线了。他的声音非常“年轻”，历史也非常年轻，1978年才创立。他的琴声非常艳丽，色彩的变化很大，难怪总有人说法奇奥里与生俱来具有地中海浪漫的气质,。<br /><br />法奇奥里这些年来，陆续得到了一些钢琴家的大力推荐，甚至被人誉为是“数码录音的最佳用琴”；“音色性感撩人，在近距离内具有很强杀伤力和穿透力，少男少女禁不起这种声音的诱惑，很难春心不动。”<br />听法奇奥里，让我情不自禁联想起的是地中海的阳光，他的变化似乎比地中海还要婀娜多姿。琴声最大优势是，高音清脆而明亮。特别令人难忘的是琴声的流畅性，就像大海的波浪，衔接非常柔顺自然。如果演奏德彪西等人的作品用这个琴，的确太迷人了！<br /><br />我觉得用他演奏很多抒情小品、室内乐，都是最好的用琴，但德奥作品可能不大适合，即使是舒曼等人的钢琴作品，可能也会少了点那种隽永的高贵味道。对于现代的轻音乐，爵士和New Age，法奇奥里能够很好的表现，市场上升势头极快，偏爱者认为他大有成为新一代盟主的意思。<br /><br /><br /><br /><br />凡是名琴，似乎都有独门绝技。法奇奥里琴也有自己独门绝活，他有四个踏瓣，就是在最左边的位置，比其他钢琴多了一个叫“柔音”的踏瓣。当你用脚踩这个踏瓣时候，整个键盘会降低一半的高度，这样使用起来，琴键触击到底部的距离就减少一半，力度受到限制，发出的声音因此受到限制，琴声听来显得柔顺了不少。为了避免演奏家误踩这个踏瓣，他的位置设置的与其他三个踏瓣距离较大，不是向前伸出的踏瓣，而是特意向左侧外面弯曲。所以，当我看到《音响论坛》上有人曾经对他的描述时，我立刻想到这位写手本人，其实并没有实际注意过这个细节。<br /><br />法奇奥里琴听来让人激动和兴奋，就像意大利的音响产品，比如世霸音箱，他的声音色彩浓郁，音色十分华贵。在一场音乐会开始前，我与练琴的演奏者交流时，演奏者对他的琴声赞不绝口。由于兴致太高，演奏者一再放弃休息和消费点心的时间在琴上过足琴瘾。按这位演奏者的描述，他的声音歌唱性显得特别突出，琴键触感特别好，显得非常顺手。他的音乐会演奏琴F308，号称是目前世界上尺寸最大的钢琴，总长308CM。可惜我在现场聆听时没带相机，不能提供照片了。<br /><br />如果还要列举国际上影响较大的著名钢琴，那一定少不了贝切斯坦。贝切斯坦的琴的历史和斯坦威一样，都是1853年。这个琴对于年纪大一些的朋友并不陌生，他也是除了斯坦威以外，在国内知名度较高的欧洲琴，据说还是傅聪先生现在家里的二种钢琴之一。在现场听傅聪先生弹贝切斯坦，不论练习和演奏，琴声都给我美妙之感受，很难挥去啊。那种纯净又不干涩，安静又不轻浮的声音，的确是颗粒感与重量感的一致。为了凑个数，我大胆地把他也列为入欧美的四款名琴了。<br /><br />我总觉得他的声音，明显不同于其他的名琴，他的高音透彻而纯净度极高，低音的基音色彩很浓，有一种独特的美感。我很愿意把他声音的取向联想到施奈德汉那样的维也纳学派小提琴声音：天生富有那种贵气，让你很想去拥有他的声音。<br /><br /><br /><br /><br />如果要比喻他与其他名琴的声音不同点，我想似乎可以用四个方向来表示，尽管不一定非常准确，但更容易让大家明白。即斯坦威（Steinway）是东方希望和未来，贝森多夫（Bosendorfer）像西方神秘和神圣，法奇奥里（Fazioli）总有南方的阳光和浪漫，贝切斯坦(Bechstein)少不了北方的大气与单纯。<br /><br /><br /><br /><br />说到钢琴的名琴，不能不提那些知名的欧美名厂名琴。其中德国的名琴真是不少，如1853年创立的德国名琴布鲁兹纳（Bluthner），琴声特点是玲珑典雅，略带暖意，曾经是欧洲最大的钢琴厂，他与Bechstein和 Bosendorfer 并称为欧洲钢琴“3 B”。<br /><br />1885年创立的希米尔（Schimmel ）是目前欧洲最大的钢琴厂，这家德国厂，产品做工精细，标准苛刻，价格适宜，它也是欧洲一些名琴的主要配件提供厂家。<br /><br />名声与Bechstein、Bosendorfer相当的，还有葛洛特里安（Grotrian） 这个德国著名钢琴，此外还有1849年创立的赛乐尔（Seiler） ，1819年创立的沙儿特（Sauter） ，1859年创立的奥古斯特·弗斯特（August Forster） ，以及霍夫曼（Hoffmann）等名琴。仅德国布伦瑞克（Braunschweig）一个地方，就生产有斯坦威格（Steinweg）和希米尔（Schimmel）等一批著名品牌的纲琴，因此被誉为“钢琴城”。<br /><br />法国琴的名声独树一帜，其中最有代表的是1795年的法国名琴普莱耶尔 （pleyel）， 因为肖邦用他举办沙龙音乐会而名声雀起，被认为是演奏肖邦作品最佳的钢琴之一；另一家法国名琴鲍德温 · 乌尔欣（D·H·Baldwin & L· Wulsin） 1900年获法国政府颁发的荣誉十字奖章；还有1796年制造的法国名琴萨巴斯汀 · 伊拉德（Sebastian Erard）都非等闲之辈。<br /><br />一些最著名品牌的钢琴，在业界可谓名声如雷贯耳，如1752年制造的布罗德伍德（Broadwood Sons），号称是英国、甚至是世界上最好的钢琴。他们接受过贝多芬的的提议，加强了琴声共鸣；正是这个琴，激发贝多芬完成了著名的２９号＂槌子键琴＂奏鸣曲。现在1824年开始制造的“布罗德伍德”琴早已成为收藏家的宠物。<br /><br />与贝森多夫同属于奥地利名琴佩卓夫（Petrof ）钢琴，创立于1864年，一战后领土划归捷克，从此变为捷克国宝。 1854年创立的M&H是美国钢琴名厂之一；波音（Balawin ）则是美国最大的钢琴制造厂；还有1853年制造的查克林（Chickering），曾被誉为是美国最好的钢琴；1893制造的美国爱奥里安（Aolian）也是知名度不低的名琴......<br /><br />这么多知名钢琴，有的不生产了，但很多仍在生产。可惜啊，我们都无缘分一睹它的美声！<br /><br />如果按市场的角度，众多名琴中，第一不能不说是斯坦威，第二就不能不提日产的雅马哈（Yamaha）和卡瓦依（Kawai）这二个品牌。日本钢琴的知名以及大家对他的了解，更多的是从世界各地那些大大小小那些赞助性演奏活动中而来的。<br /><br />雅马哈1887年就已经开始制造钢琴，过去我也认为他的出名是搞赞助活动，其实他的名声第一招，是打造钢琴的高贵外形。据说正是他们大胆地把传统的原木钢琴，刷上黝黑亮发光的油漆，从而在视觉上把钢琴打扮的成了高级古董艺术品，大大提高了钢琴的身价。<br /><br />有关这项技术，我一直认为这是东洋人窃取了我国传统工艺美术脱胎油漆的秘诀，并非雅马哈他们的创造发明。因为从二个事物的发展时间上就可以看出来。很遗憾，现在大家习惯叫钢琴漆，不是中国脱胎漆。这种油漆其实改变了原木钢琴的声音，不少著名的钢琴家都认为，这种改变，把原本更靓声的钢琴变得琴声不够好听了。<br /><br />日产的雅马哈（Yamaha）和卡瓦依（Kawai）是目前国内学琴人家最喜爱的钢琴。<br /><br /><br /><br /><br />我在现场多次听过雅马哈的演奏琴，雅马哈的延音较短，音色明亮，感觉还是通俗的，尤其适合爵士乐演奏。声音最好听的一次聆听，却不是在正式的音乐会演出听到的，而且用的只是中号的演奏琴。他的声音总的说，与欧洲琴很不一样，如果要比较音质，他们的距离似乎不只一点。我想起电视大赛上的青年歌手，不管他们的声音有多美，离评委的距离也很近，也许只有一二步了，可真要迈出这么一二步，还得寄托给辛苦努力后的未来。<br /><br />对于日产的雅马哈和卡瓦依二个品牌，他们的琴声，大家其实早已形成了一个共识。雅马哈的琴特点是手感轻快、音色亮丽，但琴声的柔软性、流畅性都不如1928年后出现的卡瓦依。我曾经遇到一位中央音乐学院学习钢琴的姑娘，她就明确表示喜好卡瓦依，不仅琴声胜过雅马哈，而且也不像斯坦威那么明亮，尤其是练习时间长了以后，耳朵更容易接受。<br /><br />去年夏天，旅美钢琴家殷成宗在国内成功策划组织了第二次俄罗斯柴可夫斯基青少年音乐比赛。第一次在日本，就是郎朗获大奖那次。这次据说因为策划组织者是厦门籍，故乡的企业慷慨解囊相助，也有一些日本企业赞助。根据媒体的介绍，比赛之所以最后选择日本钢琴卡瓦依，没有选用国际上那些著名的“好琴”，正是考虑到青少年的力量问题。<br /><br />如果问我现场聆听名琴的体验，就是二个字：有趣！<br /><br />直接的联想是，音响系统试听和校声，一定要试试钢琴！<br /><br />一定不能听你家隔壁的练琴声啊！一定要选张录音好的名琴来做测试！<br /><br />好好听一听重播的钢琴声，听听不同的名琴声音的差异性，不仅有趣还有意义
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/161829#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 10 Feb 2008 22:05:32 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/161829</link>
        <guid>http://raylinn.javaeye.com/blog/161829</guid>
      </item>
          <item>
        <title>[备忘]安装/删除Windows服务的方法</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/158415" style="color:red;">http://raylinn.javaeye.com/blog/158415</a>&nbsp;
          发表时间: 2008年01月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          操作windows服务的方法。 <br /><br />1. 普通的Windows服务<br /><br />如下： <br />=============================================== <br />语法：sc create | delete | config 服务名 [参数] <br />主要参数列表： <br />　　start= demand|boot|system|auto|disabled|delayed-auto　　//启动类型 <br />　　binPath= BinaryPathName　　　　　　　　　　　　　　　　//可执行文件路径 <br />　　depend= 依存关系(以 / (斜杠) 分隔) <br />　　DisplayName= &lt;显示名称> 　　　　　　　　　　　　　　　//屏幕显示名称 <br /><br />作用依次是：新建、移除、重配置服务。 <br /><br />例如：重新配置服务mysql的执行路径的方法是： <br />sc config mysql binPath= "新路径" <br /><br /><br />2. .net windows服务<br /><br />installutil 可执行文件<br />installutil /u 可执行文件
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/158415#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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>Tue, 22 Jan 2008 20:17:45 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/158415</link>
        <guid>http://raylinn.javaeye.com/blog/158415</guid>
      </item>
          <item>
        <title>WPF/E is Ajax</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/156847" style="color:red;">http://raylinn.javaeye.com/blog/156847</a>&nbsp;
          发表时间: 2008年01月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          做一个从数据库读取数据然后在页面展示出来的矩阵图谱。<br />  <br />对应的WebForm1.xaml的XAML文件。<br /><pre name="code" class="java"> 
&lt;Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Loaded="javascript:onLoaded" Name="MainCanvas">
&lt;Canvas Name="CanvasRisk" Background="#f8f8f8ff" Width="600" Height="500" >
&lt;TextBlock FontSize="20"
FontWeight="Bold"
Canvas.Top="20" Canvas.Left="20" Text="test">
&lt;TextBlock.Foreground>
&lt;LinearGradientBrush>
&lt;GradientStop Color="SlateBlue" Offset="0.0" />
&lt;GradientStop Color="Black" Offset="1.0" />
&lt;/LinearGradientBrush>
&lt;/TextBlock.Foreground>
&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="353" Text="0">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="320" Text="1">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="290" Text="2">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="260" Text="3">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="230" Text="4">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="200" Text="5">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="170" Text="6">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="140" Text="7">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="110" Text="8">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="40" Canvas.Top="80" Text="9">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="80" Canvas.Top="353" Text="1">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="110" Canvas.Top="353" Text="2">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="140" Canvas.Top="353" Text="3">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="170" Canvas.Top="353" Text="4">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="200" Canvas.Top="353" Text="5">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="230" Canvas.Top="353" Text="6">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="260" Canvas.Top="353" Text="7">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="290" Canvas.Top="353" Text="8">&lt;/TextBlock>
&lt;TextBlock FontSize="12" Canvas.Left="320" Canvas.Top="353" Text="9">&lt;/TextBlock>
&lt;Ellipse Height="10" Width="10" Canvas.Left="60" Canvas.Top="130"
Stroke="Red" StrokeThickness="1" Fill="Black"/>
&lt;!-- Create Rectange(300*300), top:50 left:50-->
&lt;Rectangle Stroke="#FF8E8E8E" StrokeThickness="2" RadiusX="2" RadiusY="2" Height="300" Width="300" Canvas.Left="50" Canvas.Top="50" Opacity="0.5">
&lt;Rectangle.Fill>
&lt;LinearGradientBrush StartPoint="0,1" EndPoint="1,0">
&lt;GradientStop Name="gradientStop1" Color="Green" Offset="0.0"/>
&lt;GradientStop Name="gradientStop2" Color="Yellow" Offset="0.5" />
&lt;GradientStop Name="gradientStop3" Color="Red" Offset="1.0"/>
&lt;/LinearGradientBrush>
&lt;/Rectangle.Fill>
&lt;/Rectangle>
&lt;/Canvas>
&lt;/Canvas>
</pre><br /><br />上面的代码准备好我们工作的画布。在顶部节点Loaded="javascript:onLoaded"中，代表在开始自动加载js脚本，这个脚本中我们要动态的获取应该在矩阵上点的点，而这些点是从数据库中读取的数值。上面一连串的TextBlock是在横纵坐标上点的值（1～9）。再下面的Rectangle试我们画的一个300*300的矩阵。坐标都将落在这个矩阵图上面，GradientStop有3个渐变过程，让我们直观的看到这些点落在什么颜色上，红色就为危险区域了。<br /><br />下面我们利用XMLHTTP与服务器上的Webservice通讯，WebService的程序从略。<br /><br /><pre name="code" class="java">
//获得XML方式一 XMLDOM
function initGetRisk1()
{
xmldoc =new ActiveXObject("Microsoft.XMLDOM");
xmldoc.async = false;
xmldoc.load("WebServiceRisk.asmx/GetRiskInfo?YearID=2");
alert(xmldoc.xml);
analyseXML(xmldoc);
}
</pre><br /><br /><pre name="code" class="java">
//获得XML方式二 XMLHTTP
function initGetRisk2()
{
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
var xmldoc =new ActiveXObject("Microsoft.XMLDOM");
var serverURL="WebServiceRisk.asmx/GetRiskInfo?YearID=2";
xmlhttp.Open("GET",serverURL, false);
xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=utf-8");
xmlhttp.SetRequestHeader ("SOAPAction","http://tempuri.org/WPFEJSApplication1");
xmlhttp.Send();
var result = xmlhttp.status;
if(result==200)
{
   
xmldoc.loadXML(xmlhttp.responseText);
//do some paint here
}
xmlhttp = null;
return xmldoc;
}
</pre><br /><br />除了SOAP外，事实上也可以利用JSON来传递数据。<br /><br /><pre name="code" class="java">
var wpfe;
var CanvasRisk;
function onLoaded(sender, args)
{
wpfe = document.getElementById("wpfeControl1");
CanvasRisk = sender.findName("CanvasRisk");
BuildRiskPoint();
}
function BuildRiskPoint()
{
xmldoc = initGetRisk2();
//alert(xmldoc.xml);
nodeList=xmldoc.documentElement.getElementsByTagName("Table");
for (i=0;i&lt;nodeList.length;i++)
{
var analyseID;
var riskTypeName;
var riskTypeDesc;
var frequency;
var effect;
var measure;
analyseID = nodeList(i).selectSingleNode("AnalyseID").text;
riskTypeName = nodeList(i).selectSingleNode("RiskTypeName").text;
riskTypeDesc = nodeList(i).selectSingleNode("RiskTypeDesc").text;
frequency = parseInt(nodeList(i).selectSingleNode("Frequency").text);
effect = parseInt(nodeList(i).selectSingleNode("Effect").text);
measure = nodeList(i).selectSingleNode("Measure").text;
var x = getXPoint(frequency);
var y = getYPoint(effect);
var riskPoint = "&lt;Ellipse Height='10' Width='10' Canvas.Left='" + x + "' Canvas.Top='" + y + "' Stroke='Red' StrokeThickness='1' Fill='Black'/>";
//var riskPoint = "&lt;Ellipse Height='10' Width='10' Canvas.Left='130' Canvas.Top='130' Stroke='Red' StrokeThickness='1' Fill='Black'/>";
var newOddPage = wpfe.createFromXaml(riskPoint);
CanvasRisk.children.add(newOddPage);
}
}
function getXPoint(x)
{
return (x*30 + 50)
}
function getYPoint(y)
{
return (y*30 + 50)
}
</pre><br /><br /><br />小结：WPE 事实上更象一种改良的Ajax，它提供了比HTML更好的表现元素，并可利用AJAX的技术取得更好的表现力。
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/156847#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 17 Jan 2008 11:22:17 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/156847</link>
        <guid>http://raylinn.javaeye.com/blog/156847</guid>
      </item>
          <item>
        <title>Some Dreams - Allan Taylor</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/142166" style="color:red;">http://raylinn.javaeye.com/blog/142166</a>&nbsp;
          发表时间: 2007年11月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div align="center">
<div style="LINE-HEIGHT: 150%"><span style="LETTER-SPACING: 1px">Some dreams are big, some dreams are small <br />
有些梦想很大，有些很小 <br />
Some dreams are carried away on the wind and never dreamed at all <br />
有些随风而去，不再想起 <br />
Some dreams tell lies, some dreams come true <br />
有些如同谎言，有些成真 <br />
I've got a whole lot of dreams and I can dream for you <br />
我做过了很多的梦，却总是梦见你</span></div>
</div>
<br />
<br />
<br />
<div style="LINE-HEIGHT: 150%"><span style="LETTER-SPACING: 1px">&middot;轻柔、稳重、温暖而抒情，Allan Taylor和煦的歌声与纯熟的吉他技巧，搭配其它优秀乐手的简单乐器伴奏，清澈而透明，特别适合夜深人静时候轻松欣赏 </span></div>
<span style="LETTER-SPACING: 1px">
<div style="LINE-HEIGHT: 150%"><br />
&middot;60年代就已红便英国民谣乐坛的Allan Taylor，以吉他和民谣风征服了英国及爱尔兰，他的乐风影响了Dire Straitv、Fairport Convention、Steeleye Span等民谣摇滚巨将，他在乐坛的地位是无庸置疑的。 <br />
&middot;神似Mark Knofler的低沉醇厚的嗓音、深受Jack Kerouac影响充满Beat Generation风格的诗意歌词、耐听优美的曲调，与稳健幽雅的吉他演奏，这些特色造就了Allan Taylor独特的魅力。听他的歌曲犹如在时间与空间中尽情悠游，充满了柔软弹性与充满金属光泽的美感，于充满空间中的残影，像是阅读一本精彩的回忆录。</div>
<div style="LINE-HEIGHT: 150%"><img alt="" src="http://space.flash8.net/space/attachments/2007/01/19/18713_200701191404302.jpg" /><img style="WIDTH: 329px; HEIGHT: 300px" height="257" width="298" alt="" src="http://space.flash8.net/space/attachments/2007/01/19/18713_200701191404301.jpg" /></div>
<div style="LINE-HEIGHT: 150%">这张专辑，共收录了Allan Taylor自己创作的11首令人回味无穷的歌曲，歌曲内容非常有意思&mdash;11首歌曲记录和歌唱了一位旅游者多年来在流浪中是怎样吃苦和上当受骗的经历。这些地方包括美国、墨西哥、摩洛哥和法国。 <br />
&middot;第一首The Beat Hotel就是在讲巴黎左岸极为著名，吸引许多诗人作家居住、聚集、切磋的旅店Beat Hotel，这个饭店代表了年轻艺术家的灵魂、梦想与才气，也代表了这张专辑的精神。Los Companeros则是讲述当年卡斯特罗、格瓦拉等人在古巴掀起的革命狂潮，与后来古巴所付出的代价。这些歌曲都可说是Allan Taylor多年来旅行演唱生涯沉淀下来的精华。 <br />
&middot;第九首SOME DREAMS里唱到&ldquo;有的梦想很小，有的根本不能称之为梦想&rdquo;，&ldquo;有的梦想破碎了，有的梦想成真&rdquo;为什么流浪的人在唱到梦想的时候，梦想这么真切，这么感人？其实，每个人都在流浪，在去它方的路上，在去自己精神祭坛的路上。</div>
</span>
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/142166#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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>Tue, 20 Nov 2007 22:24:23 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/142166</link>
        <guid>http://raylinn.javaeye.com/blog/142166</guid>
      </item>
          <item>
        <title>一季花开</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/131971" style="color:red;">http://raylinn.javaeye.com/blog/131971</a>&nbsp;
          发表时间: 2007年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="posthead">
<h2 style="PADDING-BOTTOM: 4px; PADDING-TOP: 4px"><a id="_ctl0_pageBody-0_HomePageDays_DaysList__ctl9_DayItem_DayList__ctl0_TitleUrl" href="http://wenqu.mblogger.cn/comanes/posts/36589.aspx"></a>&nbsp;</h2>
</div>
<div class="postbody"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">五月末，突然生病，在医院里迁延了许久。</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'sөũ,taipei'; mso-hansi-font-family: 'sөũ,taipei'">落，落寞，落单，落落寡欢。</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">那些时节我突然很想很想离开这个地方。我无法让自己在这种奇怪的漂浮感里停下来。</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">很多时候，我知道应该做什么不应该做什么，我知道怎样可以快乐怎样可以规避艰难。但是，我不知道这样有什么用。我知道方向在那里，知道有无数条路通到那里，却总在迟疑</span><span lang="EN-US"><font face="Times New Roman">-----</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在迟疑，即使我踏上去了，又能怎么样？</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在厦大附近有间</span><span lang="EN-US"><font face="Times New Roman">PUB</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，名字是&ldquo;黑糖</span><span lang="EN-US"><font face="Times New Roman">&rdquo;</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。病好的时候常去坐坐。</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下午通常没什么客人，或者说，除了我，只有另外一两桌。几张简单的木桌，规则的排列，因此房间里显得很空旷。</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US" style="FONT-FAMILY: sөũ,taipei"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一切都显得简单朴素，甚至有些粗砺。在落地窗外可以看到大簇大簇新开的玫瑰，已经乍然在风中道旁街边成片成片的摇曳张扬着。。</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'sөũ,taipei'; mso-hansi-font-family: 'sөũ,taipei'">我常靠在玻璃窗边，想着一些极琐碎的事，沈湎在一些感觉里。</span><span lang="EN-US" style="FONT-FAMILY: sөũ,taipei"><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US" style="FONT-FAMILY: sөũ,taipei"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'sөũ,taipei'; mso-hansi-font-family: 'sөũ,taipei'">午后也照例会有阳光。</span><span lang="EN-US" style="FONT-FAMILY: sөũ,taipei"><o:p></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US" style="FONT-FAMILY: sөũ,taipei"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上个夏天出海玩的时候，黄昏里回航的时候，阳光洒在我的身上，我可以清楚看见眼前展开又后退的一切景象</span><span lang="EN-US"><font face="Times New Roman">----</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">海水波光粼粼。阳光是倾泻下来的，竟奇怪的具有着水的质地，清澈透明，如水洗过般的、清澈的阳光。</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span lang="EN-US"><br />
</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">　　无论如何，阳光还是令我很快乐，我喜欢，真的喜欢这种清澈的感觉，一切都历历在目，简单而且纯朴。</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt"><span lang="EN-US"><br />
</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">呵，又是一年盛夏，又是一季花开。</span></p>
</span></div>
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/131971#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 15 Oct 2007 15:28:53 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/131971</link>
        <guid>http://raylinn.javaeye.com/blog/131971</guid>
      </item>
          <item>
        <title>土笋冻</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/125897" style="color:red;">http://raylinn.javaeye.com/blog/125897</a>&nbsp;
          发表时间: 2007年09月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <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://raylinn.javaeye.com/blog/125897#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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>Fri, 21 Sep 2007 12:23:06 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/125897</link>
        <guid>http://raylinn.javaeye.com/blog/125897</guid>
      </item>
          <item>
        <title>银光1.0快速入门之二  创建XAML</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/124649" style="color:red;">http://raylinn.javaeye.com/blog/124649</a>&nbsp;
          发表时间: 2007年09月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          英文原文参见:http://silverlight.net/quickstarts/silverlight10/xaml.aspx<br /><br />第一步：创建Canvas元素和名称空间宣告<br /><br />紧接着上一篇的内容，打开上面创建的myxaml.xaml文件。把下面几行拷贝到这个文件中，以便创建一个Canvas（画布）以及Silverlight和XAML的名称空间宣告。<br /><br /><pre name="code" class="java">
&lt;Canvas 
   xmlns="http://schemas.microsoft.com/client/2007"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
&lt;/Canvas>
</pre><br /><br />每一个Silverlight的XAML文件都以&lt;Canvas>标签开头，该标签里用xmlns属性来宣告Silverlight的名称空间，同时用xmlns:x属性来宣告XAML的名称空间。 &lt;Canvas> 是一个XAML元素，这个元素可以用来绘制徒刑，可以用它来画图、合成图象、或做简单的(和不那么简单的)动画。<br /><br />第二步：画点东西<br /><br />把下面几行粘贴到这个XAML文件的&lt;Canvas>中间，然后保存文件。<br /><br /><pre name="code" class="java">
 &lt;Ellipse
    Height="200" Width="200"
    Stroke="Black" StrokeThickness="10" Fill="SlateBlue" />
</pre><br /><br />第三步：浏览XAML的内容<br /><br />双击我们编写的HTML文件就可以浏览XAML的内容：一个蓝色的有黑边的圆圈。<br />整个XAML文件如下所示：<br /><pre name="code" class="java">
&lt;Canvas
   xmlns="http://schemas.microsoft.com/client/2007"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
  &lt;Ellipse 
     Height="200" Width="200"
     Stroke="Black" StrokeThickness="10" Fill="SlateBlue" />
&lt;/Canvas>
</pre><br /><br />如果你的机器上安装了WPF，双击XAML文件会启动WPF而不是Silverlight。双击XAML文件这种方式可不是Silverlight的客户体验，因为基于Silverlight应用默认是以同服务器的HTML页面来展示XAML的。<br /><br />至此，我们已经创建了第一个银光项目。
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/124649#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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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, 17 Sep 2007 09:49:28 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/124649</link>
        <guid>http://raylinn.javaeye.com/blog/124649</guid>
      </item>
          <item>
        <title>银光1.0 快速入门之一 创建SilverLight项目</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/123787" style="color:red;">http://raylinn.javaeye.com/blog/123787</a>&nbsp;
          发表时间: 2007年09月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>第一步：在HTML页面加入Javascript引用</strong><br /><br />这步主要是要在HTML页面中插入Silverlight.js和createSilverlight.js这两个文件的引用，并创建一个HTML元素来作为silverlight插件的宿主。<br /><br />Silverlight.js是跨平台浏览所需要的一个辅助性文件，你可以在Silverlight 1.0 SDK的Tools目录找到。<br /><br />首先打开HTML页面并在&lt;head>部分添加下列标签：<br /><pre name="code" class="java">
&lt;script type="text/javascript" src="Silverlight.js">&lt;/script>
</pre><br /><br />再创建一个空白的createSilverlight.js，我们随后会用到这个文件。在你的HTML页面中同样也添加这个脚本的引用，如下：<br /><pre name="code" class="java">
&lt;script type="text/javascript" src="createSilverlight.js">&lt;/script>
</pre><br /><br />最后得到这样一个HTML页面：<br /><br /><pre name="code" class="java">

&lt;!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  &lt;head>
    &lt;title>A Sample HTML page&lt;/title>
    &lt;script type="text/javascript" src="Silverlight.js">&lt;/script>
    &lt;script type="text/javascript" src="createSilverlight.js">&lt;/script>
  &lt;/head>
  &lt;body>
  &lt;/body>
&lt;/html>
</pre><br /><br /><strong>第二步 创建HTML宿主元素和初始化段</strong><br /><br />在HTML文件中添加下面三行就可以创建用来呈现Silverlight内容的HTML宿主元素，<br /><pre name="code" class="java">
&lt;!-- Where the Silverlight plug-in will go-->
&lt;div id="mySilverlightPluginHost">
&lt;/div>
</pre><br /><br />你可以根据需要修改&lt;div>标记的ID。重复上面的步骤就可以在同一页面内创建多个SilverLight的实例，不过要保证ID是唯一的。<br /><br /><br />创建初始化段：在刚添加的HTML标记之后加入下面的脚本。<br /><pre name="code" class="java">
&lt;script type="text/javascript">
        
        
        // Retrieve the div element you created in the previous step.
        var parentElement = 
            document.getElementById("mySilverlightPluginHost");
        
        // This function creates the Silverlight plug-in.
        createMySilverlightPlugin();
        
&lt;/script>
</pre><br /><br />对于页面中有多个SilverLight实例，则需重复上述步骤多次。你可以使用名称唯一的函数,或者你使用一个函数然后用唯一的ID来作为参数来创建这些实例。同时要保证每段脚本都紧跟在相关的DIV元素之后。<br /><br />现在我们得到下面的html<br /><pre name="code" class="java">
&lt;!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  &lt;head>
    &lt;title>A Sample HTML page&lt;/title>
    &lt;script type="text/javascript" src="Silverlight.js">&lt;/script>
    &lt;script type="text/javascript" src="createSilverlight.js">&lt;/script>
  &lt;/head>
  &lt;body>

    &lt;!-- Where the Silverlight plug-in will go-->
    &lt;div id="mySilverlightPluginHost">
    &lt;/div>
    &lt;script type="text/javascript">
        
        
        // Retrieve the div element you created in the previous step.
        var parentElement = 
            document.getElementById("mySilverlightPluginHost");
        
        // This function creates the Silverlight plug-in.
        createMySilverlightPlugin();
        
    &lt;/script>

  &lt;/body>
&lt;/html>
</pre><br /><br /><strong>第三步：定义创建函数来初始化插件的实例</strong><br />打开第一步创建的 createSilverlight.js 并添加下面的JavaScript函数。<br /><br /><pre name="code" class="java">      
function createMySilverlightPlugin()
{  
    Silverlight.createObject(
        "myxaml.xaml",                  // Source property value.
        parentElement,                  // DOM reference to hosting DIV tag.
        "mySilverlightPlugin",         // Unique plug-in ID value.
        {                               // Per-instance properties.
            width:'300',                // Width of rectangular region of 
                                        // plug-in area in pixels.
            height:'300',               // Height of rectangular region of 
                                        // plug-in area in pixels.
            inplaceInstallPrompt:false, // Determines whether to display 
                                        // in-place install prompt if 
                                        // invalid version detected.
            background:'#D6D6D6',       // Background color of plug-in.
            isWindowless:'false',       // Determines whether to display plug-in 
                                        // in Windowless mode.
            framerate:'24',             // MaxFrameRate property value.
            version:'1.0'               // Silverlight version to use.
        },
        {
            onError:null,               // OnError property value -- 
                                        // event handler function name.
            onLoad:null                 // OnLoad property value -- 
                                        // event handler function name.
        },
        null);                          // Context value -- event handler function name.
}
</pre><br /><br />这个脚本里包含许多你想定制的参数,比如插件的长宽(也可以用百分比), 包含呈现内容的XAML文件名, 是否使用Windowsless模式。<br /><br />在同一页面里如果有多个Silverlight插件，则要为每一个创建一个新的函数。或者比较简单的创建一个带参数的函数，然后根据插件的ID分别调用不同的代码。<br /><br /><strong>第四部 创建Silverlight呈现内容。</strong><br />现在HTML文件已经配置完毕，该创建呈现内容了。<br /><br />在这个HTML所在的目录下创建一个名叫"myxaml.xaml"的空白文件。如果你在上一步使用了不同的文件名，记得与之匹配。<br /><br />如果SliverLight项目要进行事件处理，或者与代码动态生成，或者与用户交互，它需要一些额外的javascript脚本，并在HTML页面中添加引用。下面的例子里我们引用了一个叫my-script.js的脚本<br /><pre name="code" class="java">
&lt;script type="text/javascript" src="my-script.js">&lt;/script>
</pre><br /><br />整个html如下：<br /><br /><pre name="code" class="java">

  &lt;!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  &lt;head>
    &lt;title>A Sample HTML page&lt;/title>
    &lt;script type="text/javascript" src="Silverlight.js">&lt;/script>
    &lt;script type="text/javascript" src="createSilverlight.js">&lt;/script>
    &lt;script type="text/javascript" src="my-script.js">&lt;/script>
  &lt;/head>
  &lt;body>

    &lt;!-- Where the Silverlight plug-in will go-->
    &lt;div id="mySilverlightPluginHost">
    &lt;/div>
    &lt;script type="text/javascript">
        
        
        // Retrieve the div element you created in the previous step.
        var parentElement = document.getElementById("mySilverlightPluginHost");
        createMySilverlightPlugin();
        
    &lt;/script>

  &lt;/body>
&lt;/html>
</pre><br /><br />创建多个插件须知：<br /><br /><ul>创建多个插件只需要重复上面的2,3,4步骤。<br /><br />每个宿主的&lt;div>标签需要有唯一的标示。<br /><br />每一段初始代码必须紧跟在对应的&lt;div>标签之后。<br /><br />每个插件的ID参数也必须是唯一的。</ul>
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/123787#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 14 Sep 2007 13:39:40 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/123787</link>
        <guid>http://raylinn.javaeye.com/blog/123787</guid>
      </item>
          <item>
        <title>[生活] 纪念</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/123506" style="color:red;">http://raylinn.javaeye.com/blog/123506</a>&nbsp;
          发表时间: 2007年09月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="postbody">
<p>病愈回来后，发了一阵呆，才动手清理邮箱里将近千封的email。我不需要知道这有什么意义。我回复了热衷于自己的工作，积极于各式各样的活动。上班，下班，上课，羽毛球，闲逛，发呆，编程。我变得很忙，忙得自己很不适应。直到有天突然觉得，忙就是一种堕落。我现在真是前所未有的堕落。 </p>
<p>于是开始休息，休养。接下来的日子，每一天都很悠闲。 </p>
<p>我住的地方离山很近，有个很陡的斜上坡，坡旁有个谷地，里面是绿色草地，面积其实不大，可因为视野里高低坡度上绿意的蔓延，竟然也有点世外桃源的趣味。绿地上，总能看到给各种玩具，秋千，滑梯，一幅爱心洋溢的模样。我常常去那里散步，看书，阳光会恰好照到孩子们玩耍的地方。一个下午就这样流淌而过。</p>
<p>充满宁静。&nbsp;</p>
<p>很多时候，有很多感触。比如，看到故宫外的夕阳，又比如，在丽江看到的星空。因为性格中的闲散，很多给我留下感动的地方，我反而是吝啬的，独自珍藏着那些记忆。我不知道该怎样与别人分享。</p>
<p>我只是个普通人，每一次的经历和感伤，我都在成长。我没有认真去设想过自己的将来，也未曾有过很高的人生期望，我只是不断的去接近，我应该到达的彼岸，可能就在前面。 </p>
<p>我开始认真地想留下一些文字和影象。再过两三年，我大概也应该有了自己的家庭和孩子，再过些时候，也许会在某地方有自己的一座面朝大海，春暖花开的房子。那个时候，我会坐下来，重新读起这些文字。 其实我不太在乎那时候我是否还能、和有必要读得懂自己现在的心情。</p>
<p>我写这些，就如同把叶子夹在旧书里一样。这些字句在将来的某一天，或许也会象失掉了颜色的那些叶子，见到我，微笑一下，或者，叹息一下。</p>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/123506#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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>Thu, 13 Sep 2007 11:27:27 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/123506</link>
        <guid>http://raylinn.javaeye.com/blog/123506</guid>
      </item>
          <item>
        <title>关于成熟</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/117269" style="color:red;">http://raylinn.javaeye.com/blog/117269</a>&nbsp;
          发表时间: 2007年08月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Arial">我觉得一个男人或者女人成熟了表现是<br />
<br />
能够比较好的控制自己的情绪<br />
<br />
能够让感性服从理性多一些<br />
<br />
能够多些一些责任感，少一些依赖感<br />
<br />
能够相信自己的抉择，并能去承担所有的后果</font></p>
<p><font face="Arial">能够尊重他人的选择的结果,哪怕自己很受伤.</font></p>
<p><font face="Arial">能够有自己的理想或者信念,并贯彻实施.</font></p>
<p><br />
</p>
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/117269#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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, 27 Aug 2007 20:34:16 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/117269</link>
        <guid>http://raylinn.javaeye.com/blog/117269</guid>
      </item>
          <item>
        <title>JSON 简介</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/78243" style="color:red;">http://raylinn.javaeye.com/blog/78243</a>&nbsp;
          发表时间: 2007年05月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          由 ray_linn 所撰寫。<br /><br />虽然XML已在不少应用程序中大显身手，但它并不是十全十美的，特别是遇到AJAX应用的时候，XMLHttpRequest会检查返回数据的MIME类型，如果是text/xml类型，XMLHttpRequest就会运行XML Parser来解析返回的文档，并在内存中构建出对应的DOM树，之后，你可以用JavaScript标准的DOM方法来操作DOM树。由于众所周知DOM的诟病，这显然不是有效率的方法。另外一个问题是，如果你想使用JavaScript对象而不是直接用XML数据的话，你还得自己遍历整个DOM树来创建相应对象。<br /><br />于是JSON出现在我们面前。<br /><br />JSON提供了一种更适合AJAX应用的标准数据交换格式。JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。<br /><br />XML和JSON都利用结构化来标记数据。我们将通过一个地址簿的例子来展示它们之间的不同。<br /><br />该地址簿用XML如下表示： <br /><br /><pre name="code" class="java">
&lt;?xml version='1.0' encoding='UTF-8'?>
&lt;card>
   &lt;fullname>Sean Kelly&lt;/fullname>
   &lt;org>SK Consulting&lt;/org>
   &lt;emailaddrs>
      &lt;address type='work'>kelly@seankelly.biz&lt;/address>
      &lt;address type='home' pref='1'>kelly@seankelly.tv&lt;/address>
   &lt;/emailaddrs>
   &lt;telephones>
      &lt;tel type='work' pref='1'>+1 214 555 1212&lt;/tel>
      &lt;tel type='fax'>+1 214 555 1213&lt;/tel>
      &lt;tel type='mobile'>+1 214 555 1214&lt;/tel>
   &lt;/telephones>
   &lt;addresses>
      &lt;address type='work' format='us'>1234 Main St
         Springfield, TX 78080-1216&lt;/address>
      &lt;address type='home' format='us'>5678 Main St
         Springfield, TX 78080-1316&lt;/address>
   &lt;/addresses>
   &lt;urls>
      &lt;address type='work'>http://seankelly.biz/ &lt;/address>
      &lt;address type='home'>http://seankelly.tv/ &lt;/address>
   &lt;/urls>
&lt;/card>
</pre><br /><br />在JSON中，则是：<br /><pre name="code" class="java">
{
   "fullname": "Sean Kelly",
   "org": "SK Consulting",
   "emailaddrs": [
      {"type": "work", "value": "kelly@seankelly.biz"},
      {"type": "home", "pref": 1, "value": "kelly@seankelly.tv"}
   ],
    "telephones": [
      {"type": "work", "pref": 1, "value": "+1 214 555 1212"},
      {"type": "fax", "value": "+1 214 555 1213"},
      {"type": "mobile", "value": "+1 214 555 1214"}
   ],
   "addresses": [
      {"type": "work", "format": "us",
       "value": "1234 Main StnSpringfield, TX 78080-1216"},
      {"type": "home", "format": "us",
       "value": "5678 Main StnSpringfield, TX 78080-1316"}
   ],
    "urls": [
      {"type": "work", "value": "http://seankelly.biz/"},
      {"type": "home", "value": "http://seankelly.tv/"}
   ]
}
</pre><br /><br />JSON提供了两种结构： <br /><ul><br />名/值对，其格式如下 {"名":"值", ...} 如：{"fullname": "Sean Kelly"}，你可以把它理解为对象，或者哈希表，字典等等。 <br /><br />数组，它是值的有序列表。一个数组以“[”开始，“]”结束。值之间使用“,”分隔。<br /></ul><br /><br />JSON的值（value）可以是双引号括起来的字符串（string）、数值(number)、true、false、 null、对象（object）或者数组（array）。这些结构可以嵌套。<br /><br />事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。 <br /><br /><strong>在AJAX中的XML与JSON之战 </strong><br /><br />在AJAX应用中，你可以用XMLHttpRequest读取XML或者JSON文件。一个典型的AJAX调用如下：<br /><br /><pre name="code" class="java">
var req = new XMLHttpRequest();
req.open("GET", "http://localhost/addr?cardID=32", /*async*/true);
req.onreadystatechange = myHandler;
req.send(/*no params*/null);
</pre><br /><br />Web服务器应答的时候，处理子程序(例子中的myHandler)会反复被调用。<br /><br />处理地址簿的一个XML的程序片断可能是：<br /><pre name="code" class="java">
function myHandler() {
   if (req.readyState == 4 /*complete*/) {
       // Update address field in a form with first street address
       var addrField   = document.getElementById('addr');
       var root        = req.responseXML;
       var addrsElem   = root.getElementsByTagName('addresses')[0];
       var firstAddr   = addrsElem.getElementsByTagName('address')[0];
       var addrText    = fistAddr.firstChild;
       var addrValue   = addrText.nodeValue;
       addrField.value = addrValue;
   }
}
</pre><br /><br />注意：XMLHttpRequest自动创建了DOM树，你可以通过responseXML属性访问树并进行一系列处理，比如通过getElementsByTagName访问元素。但对于复杂的XML，这是个烦琐无味的活儿！<br /><br />再看JSON：<br /><pre name="code" class="java">
function myHandler() {
   if (req.readyState == 4 /*complete*/) {
       var addrField = document.getElementById('addr');
       var card = eval('(' + req.responseText + ')');
       addrField.value = card.addresses[0].value;
   }
}
</pre><br /><br />使用JSON的第一件事，你要手工解析JSON响应，但是请记住，JSON是JavaScript的子集，事实上你只需要调用一行 eval就可以完成解析工作。接下来访问JSON的对象就和访问任何JavaScript对象完全一样：<br /><br /><pre name="code" class="java">
card.addresses[0].value  即"1234 Main Stb &" 
card.addresses[0].type   即"work" 
card.addresses[1]        即home address；
card.fullname            即 "Sean Kelly"
</pre><br /><br />上千次的测试之后表明，JSON的速度几乎是XML解析的10倍！<br /><br />JSON要普及，这里有两个问题： <br /><br />1. 有多少服务器愿意提供JSON格式的输出？随着JSON的速度优势得到大家的认可，相信会越来越多。<br /> <br />2. 执行eval操作可能会导致安全漏洞。所以最好还是使用一个JSON解析器，不过幸运的是。你可以在http://www.json.org找到一个。未来JSON的支持可能会被包括在ECMAScript标准中。
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/78243#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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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>Wed, 09 May 2007 15:18:58 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/78243</link>
        <guid>http://raylinn.javaeye.com/blog/78243</guid>
      </item>
          <item>
        <title>MYSQL与JPOX 汉字问题的解决方案</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/48724" style="color:red;">http://raylinn.javaeye.com/blog/48724</a>&nbsp;
          发表时间: 2007年01月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span class="javascript" id="text90988">JPOX 是open source 的JDO解决方案,目前JPOX 1.1部分支持JDO 2的规格, 是Sun的JDO2实现参考方案. 如果在<font style="BACKGROUND-COLOR: #ffff00"><strong>mySQL</strong></font>环境下遇到汉字问题可以参考以下方法: <br />
<br />
1. </span></p>
<p><span class="javascript">C:\MySQL\Bin\Mysql -u root -p<br />
<font style="BACKGROUND-COLOR: #ffff00"><strong>mysql</strong></font>&gt;SET character_set_client = gb2312; <br />
<font style="BACKGROUND-COLOR: #ffff00"><strong>mysql</strong></font>&gt;SET character_set_results = gb2312; <br />
<font style="BACKGROUND-COLOR: #ffff00"><strong>mysql</strong></font>&gt;SET character_set_connection = gb2312; <br />
<br />
2. <font style="BACKGROUND-COLOR: #ffff00"><strong>mysql</strong></font> jdbc url参数说明 <br />
url格式：jdbc:<font style="BACKGROUND-COLOR: #ffff00"><strong>mysql</strong></font>://[hostname][:port]/dbname[?param1=value1][&para;m2=value2]... <br />
参数名 取值 缺省 <br />
user 数据库用户名 无 <br />
password 数据库用户口令 无 <br />
autoReconnect 当数据库连接丢失时是否自动连接，取值true/false false <br />
maxReconnects 如果autoReconnect为true,此参数为重试次数，缺省为3次 3 <br />
initialTimeout 如果autoReconnect为true,此参数为重新连接前等待的秒数 2 <br />
maxRows 设置查询时返回的行数，0表示全部 0 <br />
useUnicode 是否使用unicode输出，true/false false <br />
characterEncoding 如果useUnicode,该参数制定encoding类型，建议使用8859_1 无 <br />
<br />
同时使用useUnicode,characterEncoding,能解决数据库输出时的中文问题 <br />
如:jdbc:<font style="BACKGROUND-COLOR: #ffff00"><strong>mysql</strong></font>://localhost/test?user=root&amp;useUnicode=true;characterEncoding=8859_1 <br />
对于简体中文,可用 <br />
<br />
jdbc:<font style="BACKGROUND-COLOR: #ffff00"><strong>mysql</strong></font>://localhost/test?useUnicode=true&amp;characterEncoding=GB2312 <br />
<br />
在JPOX中则如下设置 <br />
</span></p>
<table cellspacing="1" cellpadding="3" bgcolor="#999999" border="0" class="java">
    <tbody>
        <tr>
            <td valign="top" align="left" width="1" bgcolor="#dddddd">
            <pre><font color="#555555">1<br /></font></pre>
            </td>
            <td valign="top" align="left" bgcolor="#ffffff">
            <pre>properties.setProperty(<font class="java-string">&quot;javax.jdo.option.ConnectionURL&quot;</font>,<font class="java-string">&quot;jdbc:<font style="BACKGROUND-COLOR: #ffff00"><strong>mysql</strong></font>://localhost/examples?useUnicode=true&amp;characterEncoding=GB2312&quot;</font>);
</pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
这个方法应该对Hibernate也是有效的.
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/48724#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><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/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 20 Jan 2007 10:24:07 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/48724</link>
        <guid>http://raylinn.javaeye.com/blog/48724</guid>
      </item>
          <item>
        <title>青年旅舍的静静的午后</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/48274" style="color:red;">http://raylinn.javaeye.com/blog/48274</a>&nbsp;
          发表时间: 2007年01月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="posthead" style="PADDING-BOTTOM: 4px; PADDING-TOP: 4px">从鼓浪屿的码头左转，沿着鹿礁路，那儿个很陡的斜上坡，坡旁有个院子，淡黄的墙，疏疏的几株老树，就是国际青年旅舍。面积其实不大，推门进去，院子里树阴下放着几张简单的木桌，随意的排列，一圈爬满藤蔓的围墙相隔，簇拥着一座简洁的欧式建筑，竟然也有点曲径通幽的趣味。 </p>
<p class="postbody">这是我旅中寄居的地方。 </p>
<p class="postbody">这儿原本是德国领事馆，一座二层的建筑，黄的墙，蓝的柱。当年也该是个车水马龙的繁华所在。现在草缝间还可以找到些盖着青苔的片瓦，许是当年留下的吧。周遭都是一溜儿的一样古老的红砖建筑，爬满了绿色的藤蔓。旅舍据说是典型日尔曼民居，不是很懂，但我喜欢那些简单朴素的线条，那微微尖耸盖着红瓦的三角屋顶。 </p>
<p class="postbody">旅舍的院子不大，铺着细密的砖，撑了两把遮阳伞。坐在树下，院子里就是静止的冬天，阳光绚烂而静美，一方庭院静谧幽幽，树的枝桠的缝隙有一角蓝色的天，树下的草，带着点黄，有点光阴荏苒的味道。旁边有对白发老外，静静地坐着，脸上露出悠闲满足的神情。 </p>
<p class="postbody">因为是午后，阳光就在院子里打转。正对椅子的地方有个拱门，欧式的，装饰着些铁的栏杆，修饰着细致的花纹，透过拱门&mdash;&mdash;阳光斜斜地照进来，就投在闽南那种细腻的红砖上，把铁栏杆在地板上的投影越拉越长，那样和谐与静谧的感觉让大自然也要静下心来观看。有细小的灰尘在阳光下游来游去，你可以什么都不做，就看着椽子上木头奇幻变化的纹斑，看着自己的童稚时候，也在这灰尘中嬉戏，那些少年的稚气 ，年少的春梦似乎就是昨天的。刹那间，我在交错的时空中呈现失重状态。无人的四周，我听不见任何梦境里热闹的对话。 </p>
<p class="postbody">有千百个喜欢她的理由，但我只因为这个。</p>
<p class="postbody">穿过拱门右转，沿着吱嘎作响的楼梯上了二楼，可以找到那个小小的露台，正对着几株苍翠的龙眼树。龙眼很高，有点华盖的感觉。有绿色的植物，露台才有生气，再配上简单的木桌和藤椅，就是一个舒适惬意的放松空间。接近大自然温暖的阳光和种种植物的丝丝绿色，坐在阳台上，我可以听见周围植物汁液流淌的声音。意识徜徉在深沉的混沌海中，体味那份宁静的心情。</p>
<p class="postbody">年少时候，我梦想自己能够飞翔，我深深地，深深地热爱着那种心境的旷远与无所羁绊。所以这些年奔跑在不同的城市，所以迷恋着一些美丽的绚烂的东西。灯红酒绿，衣香鬓影。但现在这个城市却有着一种非同寻常的闲散慵懒气氛，会令人情不自禁的留步。这种感觉细腻柔软却难以分说。</p>
<p class="postbody">应该就如这个午后吧，小睡起来，身上干净而暖和，床单洁白而舒适。被子松软还带着太阳的味道。阳光斜斜的穿进来，温暖的覆盖在在窗台上，映射到镜子上就仿佛是海水的波纹在闪闪发光， 清澈而透明。风从窗外进来，撩动起白色的窗纱，清凉而新鲜。蓝天与阳光，晴朗与明媚，远处隐隐传来轮船的汽笛声。突然我就那么柔软地被触动了---- 虽然是在异域，却让我想起小家碧玉的她，仿佛就在我身边，仿佛一起沐浴在阳光下，感受到的是恬静与安然。而我们的家，也犹如她的人，宽敞明亮、干净素雅，让人想起蓝蓝的天。其实人生要的是什么呢？无非也是这样一种放松的生活，有可亲爱的人，有自己的兴趣与爱好，有简单而充盈的生活节奏。有温暖的阳光，孩子在旁边嬉闹，丈夫在桌前看报纸，妻子用力地抖着刚洗好的衣服&hellip;&hellip;那种感觉，就是叫&ldquo;幸福&rdquo;吧？</p>
<p class="postbody">比如眼前这对白发老外，就象我常常能碰到的那样，相濡以沫，至亲至爱。</p>
<p class="postbody">喜欢这个地方，就像很久很久以前有个叫桃花源的地方。</p>
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/48274#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 18 Jan 2007 08:51:00 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/48274</link>
        <guid>http://raylinn.javaeye.com/blog/48274</guid>
      </item>
          <item>
        <title>VS 2005的一个怪毛病</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/47600" style="color:red;">http://raylinn.javaeye.com/blog/47600</a>&nbsp;
          发表时间: 2007年01月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在公司的中文windows 2003上装了个英文的virsual studio 2005,然后跟着就装ajax extension, .net 3.0 extension, workflow extesion,之后打开vs 2005,呵呵, 所有原来2.0的模板都不见了,删了重新来过,还是一样.....<br /><br /><br />最后在setting里头,把international setting (中文叫区域设置)改成了从"the same as windows"改成了"english", 最后回复正常了.
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/47600#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 15 Jan 2007 23:43:11 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/47600</link>
        <guid>http://raylinn.javaeye.com/blog/47600</guid>
      </item>
          <item>
        <title>Log4net Easy as 1-2-3</title>
        <author>ray_linn</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://raylinn.javaeye.com">ray_linn</a>&nbsp;
                    链接：<a href="http://raylinn.javaeye.com/blog/32623" style="color:red;">http://raylinn.javaeye.com/blog/32623</a>&nbsp;
          发表时间: 2006年11月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          几乎所有的项目都需要以 log 的形式保留一些系统纪录，实现这类功能的API又以Log4J最为出名。对于.NET平台上，值得庆幸的是，Apache组织已经把Log4J迁移到.NET平台上，从而诞生了:og4j的姐妹-Log4net.下面的文字仅仅作为快速入门的参考，更详细的应用可以访问apache的站点。 <br /><br />1. 首先你应该下载log4net.dll并引入到你的项目References中. <br /><br />2. 需要修改你的global.asa.cs. 配置application对象启动的时候加载log4net配置. 这一步是不可以缺少的. <br /><br /><pre name="code" class="java">
 protected void Application_Start(Object sender, EventArgs e)
{
   log4net.Config.XmlConfigurator.Configure();
}
</pre><br /><br />对于Application程式，则在main入口点加载配置。 <br /><br />3. Log4net 的配置应设置于web.config或App.config中，以Web.Config为例在根节点 configuration 中加入如下section: <br /><pre name="code" class="java">
&lt;configSections>
  &lt;section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
&lt;/configSections>
</pre><br /><br />4. 该config section 声明了名为 log4net的一个Section，其必须位于web.config根节点 configuration 下。 <br />以下是一个sample: <br /><br /><pre name="code" class="java">
 &lt;log4net debug="false">
    &lt;appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
        &lt;param name="File" value="XxxxApplication.log.txt" />
        &lt;param name="datePattern" value="MM-dd HH:mm" />
        &lt;param name="AppendToFile" value="true" />
        &lt;layout type="log4net.Layout.PatternLayout">
            &lt;param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
        &lt;/layout>
    &lt;/appender>
    &lt;appender name="HttpTraceAppender" type="log4net.Appender.ASPNetTraceAppender" >
        &lt;layout type="log4net.Layout.PatternLayout">
            &lt;param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
        &lt;/layout>
    &lt;/appender>
    &lt;appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
        &lt;layout type="log4net.Layout.PatternLayout">
            &lt;param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
        &lt;/layout>
    &lt;/appender>
    &lt;appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
        &lt;param name="File" value="_LogData\Log.txt" />
        &lt;param name="AppendToFile" value="true" />
        &lt;param name="MaxSizeRollBackups" value="10" />
        &lt;param name="MaximumFileSize" value="5MB" />
        &lt;param name="RollingStyle" value="Size" />
        &lt;param name="StaticLogFileName" value="true" />
        &lt;layout type="log4net.Layout.PatternLayout">
            &lt;param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
        &lt;/layout>
    &lt;/appender>
    &lt;root>
        &lt;level value="DEBUG" />
        &lt;appender-ref ref="LogFileAppender" />
    &lt;/root>
&lt;/log4net>
</pre><br /><br />5. 上面的配置定义了多个appender. 简单来说, 每一个 appender 都是一个输出管道。 <br /><br />6. root节点指定了选用的 appender. 本例选用了LogFileAppender. (文本文件输出). <br /><br />在Appender定义中定义了输出的格式. 和目标文本文件所在位置. (起始位置是应用程序根目录. (web.config所在目录). <br /><br />7. 到目前位置就配置好了log4net. 可以在我们的应用中直接使用了. <br /><br />8. 以下说明应用方法: <br />要输出日志, 必须首先得到带有一个别名的logger. 使用以下命令： <br /><pre name="code" class="java">
 log4net.ILog Logger logger = log4net.LogManager.GetLogger(typeof(XXXX));
</pre><br /><br />之后调用 <br /><br /><pre name="code" class="java">
logger.Info(string message);
logger.Error(string message);
logger.Debug(string message);
...
</pre><br /> <br /><br /><br />即可输出日志.
          <br/>
          <span style="color:red;">
            <a href="http://raylinn.javaeye.com/blog/32623#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 06 Nov 2006 15:07:16 +0800</pubDate>
        <link>http://raylinn.javaeye.com/blog/32623</link>
        <guid>http://raylinn.javaeye.com/blog/32623</guid>
      </item>
      </channel>
</rss>