<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>权记</title>
	<atom:link href="http://www.quanlei.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.quanlei.com</link>
	<description>一个关于我们生活点滴的网站，一个记录我们酸甜苦辣的日志。</description>
	<lastBuildDate>Sun, 06 Jun 2010 01:10:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>[10/22 周主题] – 强悍的JQuery Validate 插件</title>
		<link>http://www.quanlei.com/2010/06/1022-week-subject-jquery-validate-plugin/</link>
		<comments>http://www.quanlei.com/2010/06/1022-week-subject-jquery-validate-plugin/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 01:10:00 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[周主题]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Validate]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[验证]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1630</guid>
		<description><![CDATA[对于JQuery Validate，只有相见恨晚的感触，恐怕在表单验证领域这是目前我见过最好的插件了，可以很方便的使用，极大的提高表单验证的效率。 下面就介绍下简单的使用方法： 1、下载地址：http://bassistance.de/jquery-plugins/jquery-plugin-validation/，本文章发布时最新版是1.7。 2、在页面里面加载JQuery和JQuery Validate &#60;script type=&#34;text/javascript&#34; src=&#34;theme/default/js/jquery-1.4.2.min.js&#34;&#62;&#60;/script&#62; &#60;script type=&#34;text/javascript&#34; src=&#34;theme/default/js/jquery.validate.min.js&#34;&#62;&#60;/script&#62; 3、写一个表单提交页面，form id 为 login，两个提交域email和password。域提供相应的id。为了完善demo，我在里面也提供了一个注册的form，同时提供了自定义验证方法和ajax提交。 4、在页面或者单独写个js文件，输入如下代码： $().ready(function() { //身份证验证 jQuery.validator.addMethod(&#34;isIdCardNo&#34;, function(value, element) { return this.optional(element) &#124;&#124; isIdCardNo(value); }, &#34;请正确输入您的身份证号码&#34;); // 电话号码验证 jQuery.validator.addMethod(&#34;isPhone&#34;, function(value, element) { var tel = /^(\d{3,4}-?)?\d{7,9}$/g; return this.optional(element) &#124;&#124; (tel.test(value)); }, &#34;请正确填写您的电话号码&#34;); //昵称验证 jQuery.validator.addMethod(&#34;nickName&#34;, function(value, element) { return this.optional(element) &#124;&#124; /^[\u0391-\uFFE5\w]+$/.test(value); [...]]]></description>
			<content:encoded><![CDATA[<p>对于JQuery Validate，只有相见恨晚的感触，恐怕在表单验证领域这是目前我见过最好的插件了，可以很方便的使用，极大的提高表单验证的效率。</p>
<p>下面就介绍下简单的使用方法：</p>
<p>1、下载地址：<a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">http://bassistance.de/jquery-plugins/jquery-plugin-validation/</a>，本文章发布时最新版是1.7。</p>
<p>2、在页面里面加载JQuery和JQuery Validate</p>
<pre class="brush: jscript;">
&lt;script type=&quot;text/javascript&quot; src=&quot;theme/default/js/jquery-1.4.2.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;theme/default/js/jquery.validate.min.js&quot;&gt;&lt;/script&gt;
</pre>
<p>3、写一个表单提交页面，form id 为 login，两个提交域email和password。域提供相应的id。为了完善demo，我在里面也提供了一个注册的form，同时提供了自定义验证方法和ajax提交。</p>
<p><span id="more-1630"></span></p>
<p>4、在页面或者单独写个js文件，输入如下代码：</p>
<pre class="brush: jscript;">
$().ready(function() {
    //身份证验证
    jQuery.validator.addMethod(&quot;isIdCardNo&quot;, function(value, element) {
        return this.optional(element) || isIdCardNo(value);
    }, &quot;请正确输入您的身份证号码&quot;);
    // 电话号码验证
    jQuery.validator.addMethod(&quot;isPhone&quot;, function(value, element) {
        var tel = /^(\d{3,4}-?)?\d{7,9}$/g;
        return this.optional(element) || (tel.test(value));
    }, &quot;请正确填写您的电话号码&quot;);
    //昵称验证
    jQuery.validator.addMethod(&quot;nickName&quot;, function(value, element) {
        return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);
    }, &quot;昵称只能由中文，英文字母、数字和下划线组成&quot;);
    //手机验证
    jQuery.validator.addMethod(&quot;isMobile&quot;, function(value, element) {
        var length = value.length;
        var mobile = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
        return this.optional(element) || (length == 11 &amp;&amp; mobile.test(value));
    }, &quot;请正确填写您的手机号码&quot;);
    // 邮政编码验证
    jQuery.validator.addMethod(&quot;isZipCode&quot;, function(value, element) {
        var tel = /^[0-9]{6}$/;
        return this.optional(element) || (tel.test(value));
    }, &quot;请正确填写您的邮政编码&quot;);

    $(&quot;#login&quot;).validate({
        //        submitHandler: function() {
        //            $(&quot;#error_tip&quot;).hide();
        //            $.ajax({
        //                data:$(&quot;#login&quot;).serialize(),
        //                // The url you are going to submit to
        //                url: &quot;login.action&quot;,
        //                dataType: 'json',
        //                timeout: 10000,
        //                // Sends a message to the console if it failed for testing purposes.
        //                error: function() {
        //                    $(&quot;#error_tip&quot;).html(&quot;&lt;span&gt;服务器忙，请稍后重试。&lt;/span&gt;&quot;)
        //                },
        //                // If successful you can do something here. You can change elements, update text, or  simply alert the response to first test to see if it worked.
        //                success: function(response) {
        //                        $(&quot;#error_tip&quot;).html(&quot;&lt;span&gt;&quot;+ response.result +&quot;&lt;/span&gt;&quot;)
        //                        $(&quot;#error_tip&quot;).show();
        //                }
        //            });
        //        },
        rules: {
            email: {
                required: true,
                email: true
            },
            password: {
                required: true
            }
        },
        messages: {
            password: {
                required: &quot;请输入密码&quot;
            },
            email: {
                required:&quot;请输入邮件地址&quot;,
                email:&quot;请输入有效的邮件地址&quot;
            }
        }
    });

    $(&quot;#reg&quot;).validate({
        rules: {
            email: {
                required: true,
                email: true,
                remote:&quot;checkEmail.action&quot;
            },
            password: {
                required: true,
                minlength: 6,
                maxlength:12
            },
            confirm_password: {
                required: true,
                minlength: 6,
                equalTo: &quot;#password&quot;
            },
            answer:{
                required: true
            },
            agree: &quot;required&quot;
        },
        messages: {
            password: {
                required: &quot;请输入密码&quot;,
                minlength: &quot;密码长度在6-12个字符之间&quot;,
                maxlength: &quot;密码长度在6-12个字符之间&quot;
            },
            confirm_password: {
                required: &quot;请输入密码&quot;,
                minlength: &quot;密码长度在6-12个字符之间&quot;,
                equalTo: &quot;你输入的密码不一致&quot;
            },
            email: {
                required:&quot;请输入有效的邮件地址&quot;,
                email: &quot;请输入有效的邮件地址&quot;,
                remote: &quot;邮件地址已存在&quot;
            },
            answer:&quot;请输入安全问题答案&quot;,
            agree: &quot;请接受我们的条款&quot;
        }
    });
}
</pre>
<p>上面的代码基本上包含了大部分JQuery Validate的使用功能：</p>
<blockquote><p>1、基本验证</p>
<p>2、自定义验证 &#8211; 自定义验证跟其他官方的验证类似，加入rules即可，message上面已经定义，可以不加。</p>
<p>3、页面ajax提交。</p>
<p>4、ajax验证Emai帐户是否可用，需要注意的是remote仅支持返回true和false，也就是checkEmail.php只能返回true和false代表Email是否可用
</p></blockquote>
<p>更多Demo，请查看JQuery Validate的官方文档，很好理解：<br />
1、<a href="http://docs.jquery.com/Plugins/Validation">http://docs.jquery.com/Plugins/Validation</a><br />
2、<a href="http://jquery.bassistance.de/validate/demo/">http://jquery.bassistance.de/validate/demo/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/06/1022-week-subject-jquery-validate-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>利用JSON插件进行数据交换格式(includeProperties和excludeProperties用法)</title>
		<link>http://www.quanlei.com/2010/06/struts2-json/</link>
		<comments>http://www.quanlei.com/2010/06/struts2-json/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 15:58:22 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[编程相关]]></category>
		<category><![CDATA[excludeProperties]]></category>
		<category><![CDATA[includeProperties]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[struts]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/2010/06/%e5%88%a9%e7%94%a8json%e6%8f%92%e4%bb%b6%e8%bf%9b%e8%a1%8c%e6%95%b0%e6%8d%ae%e4%ba%a4%e6%8d%a2%e6%a0%bc%e5%bc%8f/</guid>
		<description><![CDATA[JSON（Java Script Object Notation），是一种语言无关的数据交换格式。 JSON插件是Structs 2 的Ajax插件，通过利用JSON插件，开发者可以很方便，灵活的利用Ajax进行开发。 Json是一种轻量级的数据交换格式，JSon插件提供了一种名为json的Action ResultType 。一旦为Action指定了该结果处理类型，JSON插件就会自动将Action里的数据序列化成JSON格式的数据，并返回给客户端物理视图的JavaScript。简单的说，JSON插件允许我们在JavaScript中异步的调用Action。 而且Action不需要指定视图来显示Action的信息显示而是由JSON插件来负责具体将Action里面具体的信息返回给调用页面。Json的数据格式可简单如下形式： person = { name: &#8216;Jim&#8217;,age: 18,gender: &#8216;man&#8217;}。 如果action的属性很多，我们想要从Action返回到调用页面的数据。这个时候配置includeProperties或者 excludeProperties拦截器即可。而这2个拦截器的定义都在struts2的json-default包内，所以要使用该拦截器的包都要继承自json-default。 &#60;struts&#62; &#60;constant value=&#34;spring&#34; name=&#34;struts.objectFactory&#34; /&#62; &#60;include file=&#34;struts-admin.xml&#34;&#62;&#60;/include&#62; &#60;package name=&#34;default&#34; extends=&#34;json-default&#34;&#62; &#60;action class=&#34;com.person.PersonAction&#34; name=&#34;person&#34; method=&#34;view&#34;&#62; &#60;result type=&#34;json&#34;&#62; &#60;param name=&#34;includeProperties&#34;&#62;person\.name,persoon\.age,person\.gender &#60;/param&#62; &#60;/result&#62; &#60;/action&#62; &#60;/package&#62; &#60;/struts&#62; 经过测试，下面的设置也是可以的，就是在includeProperties里面直接写你所在Action的属性 &#60;struts&#62; &#60;constant value=&#34;spring&#34; name=&#34;struts.objectFactory&#34; /&#62; &#60;include file=&#34;struts-admin.xml&#34;&#62;&#60;/include&#62; &#60;package name=&#34;default&#34; extends=&#34;json-default&#34;&#62; &#60;action [...]]]></description>
			<content:encoded><![CDATA[<p>JSON（Java Script Object Notation），是一种语言无关的数据交换格式。 JSON插件是Structs 2 的Ajax插件，通过利用JSON插件，开发者可以很方便，灵活的利用Ajax进行开发。</p>
<p>Json是一种轻量级的数据交换格式，JSon插件提供了一种名为json的Action ResultType 。一旦为Action指定了该结果处理类型，JSON插件就会自动将Action里的数据序列化成JSON格式的数据，并返回给客户端物理视图的JavaScript。简单的说，JSON插件允许我们在JavaScript中异步的调用Action。</p>
<p>而且Action不需要指定视图来显示Action的信息显示而是由JSON插件来负责具体将Action里面具体的信息返回给调用页面。Json的数据格式可简单如下形式： person = { name: &#8216;Jim&#8217;,age: 18,gender: &#8216;man&#8217;}。</p>
<p>如果action的属性很多，我们想要从Action返回到调用页面的数据。这个时候配置includeProperties或者 excludeProperties拦截器即可。而这2个拦截器的定义都在struts2的json-default包内，所以要使用该拦截器的包都要继承自json-default。</p>
<pre class="brush: xml;">
&lt;struts&gt;
    &lt;constant value=&quot;spring&quot; name=&quot;struts.objectFactory&quot; /&gt;
    &lt;include file=&quot;struts-admin.xml&quot;&gt;&lt;/include&gt;
    &lt;package name=&quot;default&quot; extends=&quot;json-default&quot;&gt;
        &lt;action class=&quot;com.person.PersonAction&quot; name=&quot;person&quot; method=&quot;view&quot;&gt;
            &lt;result type=&quot;json&quot;&gt;
                &lt;param name=&quot;includeProperties&quot;&gt;person\.name,persoon\.age,person\.gender &lt;/param&gt;
            &lt;/result&gt;
        &lt;/action&gt;
    &lt;/package&gt;
&lt;/struts&gt;
</pre>
<p><span id="more-1626"></span><br />
<span style="color: #800000;">经过测试，下面的设置也是可以的，就是在includeProperties里面直接写你所在Action的属性</span></p>
<pre class="brush: xml;">
&lt;struts&gt;
    &lt;constant value=&quot;spring&quot; name=&quot;struts.objectFactory&quot; /&gt;
    &lt;include file=&quot;struts-admin.xml&quot;&gt;&lt;/include&gt;
    &lt;package name=&quot;default&quot; extends=&quot;json-default&quot;&gt;
        &lt;action class=&quot;com.person.PersonAction&quot; name=&quot;person&quot; method=&quot;view&quot;&gt;
            &lt;result type=&quot;json&quot;&gt;
                &lt;param name=&quot;includeProperties&quot;&gt;name,age,gender &lt;/param&gt;
            &lt;/result&gt;
        &lt;/action&gt;
    &lt;/package&gt;
&lt;/struts&gt;
</pre>
<p>利用Struts 2的支持的可配置结果，可以达到过滤器的效果。Action的处理结果配置支持正则表达式。但是如果返回的对象是一个数组格式的Json数据。比如 peson Bean中有对象persion1&#8230;person9，而我只要JSON插件，则可以用如下的正则表达式。</p>
<pre class="brush: xml;">
&lt;struts&gt;
    &lt;constant value=&quot;spring&quot; name=&quot;struts.objectFactory&quot; /&gt;
    &lt;include file=&quot;struts-admin.xml&quot;&gt;&lt;/include&gt;
    &lt;package name=&quot;default&quot; extends=&quot;json-default&quot;&gt;
        &lt;action class=&quot;com.person.PersonAction&quot; name=&quot;person&quot; method=&quot;view&quot;&gt;
            &lt;result type=&quot;json&quot;&gt;
                &lt;param name=&quot;includeProperties&quot;&gt;person\.name,persoon\.age,person\.gender &lt;/param&gt;
            &lt;/result&gt;
        &lt;/action&gt;
    &lt;/package&gt;
&lt;/struts&gt;
&lt;!--利用Struts 2的支持的可配置结果，可以达到过滤器的效果。Action的处理结果配置支持正则表达式。 但是如果返回的对象是一个数组格式的Json数据。比如peson Bean中有对象persion1...person9，而我只要person1的json数据， 则可以用如下的正则表达式。 --&gt;
&lt;struts&gt;
    &lt;constant value=&quot;spring&quot; name=&quot;struts.objectFactory&quot; /&gt;
    &lt;include file=&quot;struts-admin.xml&quot;&gt;&lt;/include&gt;
    &lt;package name=&quot;default&quot; extends=&quot;json-default&quot;&gt;
        &lt;action class=&quot;com.person.PersonAction&quot; name=&quot;person&quot; method=&quot;view&quot;&gt;
            &lt;result type=&quot;json&quot;&gt;
                &lt;param name=&quot;includeProperties&quot;&gt;person\[\d+\]\.person1 &lt;/param&gt;
            &lt;/result&gt;
        &lt;/action&gt;
    &lt;/package&gt;
&lt;/struts&gt;
&lt;!--excludeProperties拦截器的用法与此类同，如果拦截的仅仅是一个对象，如果拦截掉person Bean的整个对象。 --&gt;
&lt;struts&gt;
    &lt;constant value=&quot;spring&quot; name=&quot;struts.objectFactory&quot; /&gt;
    &lt;include file=&quot;struts-admin.xml&quot;&gt;&lt;/include&gt;
    &lt;package name=&quot;default&quot; extends=&quot;json-default&quot;&gt;
        &lt;action class=&quot;com.person.PersonAction&quot; name=&quot;person&quot; method=&quot;view&quot;&gt;
            &lt;result type=&quot;json&quot;&gt;
                &lt;param name=&quot;excludeProperties&quot;&gt;person &lt;/param&gt;
            &lt;/result&gt;
        &lt;/action&gt;
    &lt;/package&gt;
&lt;/struts&gt;
</pre>
<p>需要注意的是,如果用JSON插件把返回结果定为JSON。而JSON的原理是在ACTION中的get方法都会序列化，所以前面是get的方法只要没指定不序列化，都会执行，那么可以在该方法的前面加注解声明该方法不做序列化。</p>
<pre class="brush: java;">
    @JSON(serialize = false)
    public User getUser() {
        return this.User;
    }

    @JSON(format = &quot;yyyy-MM-dd&quot;)
    public Date getStartDate() {
        return this.startDate;
    }
</pre>
<p>原文出处：http://developer.51cto.com/art/201001/176090.htm</p>
<p>Apache Struts Json 介绍：http://struts.apache.org/2.1.8/docs/json-plugin.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/06/struts2-json/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>早起7件事</title>
		<link>http://www.quanlei.com/2010/06/%e6%97%a9%e8%b5%b77%e4%bb%b6%e4%ba%8b/</link>
		<comments>http://www.quanlei.com/2010/06/%e6%97%a9%e8%b5%b77%e4%bb%b6%e4%ba%8b/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 00:52:53 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[随记]]></category>
		<category><![CDATA[上班]]></category>
		<category><![CDATA[手机]]></category>
		<category><![CDATA[电脑]]></category>
		<category><![CDATA[老婆]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/2010/06/%e6%97%a9%e8%b5%b77%e4%bb%b6%e4%ba%8b/</guid>
		<description><![CDATA[早上睡不着，早早起来开了电脑，想到了早起的几件事，于是画了出来，尤其夏季！]]></description>
			<content:encoded><![CDATA[<p>早上睡不着，早早起来开了电脑，想到了早起的几件事，于是画了出来，尤其夏季！</p>
<p><a href="http://www.quanlei.com/wp-content/uploads/2010/06/morning.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="morning" border="0" alt="morning" align="left" src="http://www.quanlei.com/wp-content/uploads/2010/06/morning_thumb.png" width="438" height="190" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/06/%e6%97%a9%e8%b5%b77%e4%bb%b6%e4%ba%8b/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>延庆 &#8211; 白河堡水库野营</title>
		<link>http://www.quanlei.com/2010/06/%e5%bb%b6%e5%ba%86-%e7%99%bd%e6%b2%b3%e5%a0%a1%e6%b0%b4%e5%ba%93%e9%87%8e%e8%90%a5/</link>
		<comments>http://www.quanlei.com/2010/06/%e5%bb%b6%e5%ba%86-%e7%99%bd%e6%b2%b3%e5%a0%a1%e6%b0%b4%e5%ba%93%e9%87%8e%e8%90%a5/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 01:28:15 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[随记]]></category>
		<category><![CDATA[北京]]></category>
		<category><![CDATA[延庆]]></category>
		<category><![CDATA[户外]]></category>
		<category><![CDATA[扎营]]></category>
		<category><![CDATA[朋友]]></category>
		<category><![CDATA[水库]]></category>
		<category><![CDATA[野营]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1612</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gowithus.cn/attachment/Mon_1005/8_122_6bc2f12e33a5a58.jpg" alt="集体照 - 1" /></p>
<p><span id="more-1612"></span></p>
<p><img src="http://www.gowithus.cn/attachment/Mon_1005/8_122_820c5b590b0047d.jpg" alt="集体照 - 2" /></p>
<p><img src="http://www.gowithus.cn/attachment/Mon_1005/8_122_8c14b9942fa50a9.jpg" alt="钓鱼" /></p>
<p><img src="http://www.gowithus.cn/attachment/Mon_1005/8_1293_a8a1d202d343422.jpg" width="600px"  alt="扎营" /></p>
<p><img src="http://www.gowithus.cn/attachment/Mon_1005/8_1293_00c8a35e62fa2e1.jpg" width="600px" alt="光身老外" /></p>
<p><img src="http://fleet1.footbig.com/f/00/00/65/be/l/88/fa/88fa6e6fb6cb8a47f9025c70de8072d0-8149.jpg" width="600px"  alt="扎营 - 2" /></p>
<p><img src="http://www.gowithus.cn/attachment/Mon_1005/8_1293_bb24729cbbdf4c6.jpg" width="600px" alt="扎营 - 3" /></p>
<p><img src="http://www.gowithus.cn/attachment/Mon_1005/8_122_f0e5d1724ec9155.jpg" alt="腐败的人啊" /></p>
<p><img src="http://www.gowithus.cn/attachment/Mon_1005/8_122_7bd9dcfa0ad57a4.jpg" alt="清晨" /></p>
<p><img src="http://www.gowithus.cn/attachment/Mon_1005/8_122_6b3184f8a3ae5d0.jpg" alt="傍晚" /></p>
<p><img src="http://www.gowithus.cn/attachment/Mon_1005/8_122_eee930b8862c667.jpg" alt="牛在钓鱼" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/06/%e5%bb%b6%e5%ba%86-%e7%99%bd%e6%b2%b3%e5%a0%a1%e6%b0%b4%e5%ba%93%e9%87%8e%e8%90%a5/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[10/21 周主题] – 安装和配置Nginx</title>
		<link>http://www.quanlei.com/2010/05/1021-week-subject-install-and-config-nginx/</link>
		<comments>http://www.quanlei.com/2010/05/1021-week-subject-install-and-config-nginx/#comments</comments>
		<pubDate>Fri, 28 May 2010 04:02:13 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[Linux服务器相关]]></category>
		<category><![CDATA[周主题]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[脚本]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1567</guid>
		<description><![CDATA[马上Nginx将会应用到公司的第一个实战项目上，为了方便开发和运维人员安装和配置Nginx，整理了下面的内容。 我们的服务器全部采用CentOS，因此下面的配置也是基于CentOS来配置的。 安装流程： cd /opt/ yum install gcc openssl-devel pcre-devel zlib-devel wget http://nginx.org/download/nginx-0.8.38.tar.gz wget http://github.com/gnosek/nginx-upstream-fair/tarball/master tar –zxvf nginx-0.8.38.tar.gz tar –zxvf gnosek-nginx-upstream-fair-2131c73.tar.gz cd nginx-0.8.38 ./configure --with-http_stub_status_module --add-module=/opt/gnosek-nginx-upstream-fair-2131c73 make &#38; make install 正常一步步走下面是不会出问题的，前提确保你的服务器网络可用。 Nginx启动脚本： #!/bin/bash # Nginx Manage Script # # processname: nginx # pidfile: /var/run/nginx.pid # config: /usr/local/nginx/conf/nginx.conf nginxd=/usr/local/nginx/sbin/nginx nginx_config=/usr/local/nginx/conf/nginx.conf nginx_pid=/var/run/nginx.pid lockfile=/var/lock/subsys/nginx RETVAL=0 prog=&#34;nginx&#34; # Source [...]]]></description>
			<content:encoded><![CDATA[<p>马上Nginx将会应用到公司的第一个实战项目上，为了方便开发和运维人员安装和配置Nginx，整理了下面的内容。</p>
<p>我们的服务器全部采用CentOS，因此下面的配置也是基于CentOS来配置的。</p>
<h3>安装流程：</h3>
<pre class="brush: cpp;">
cd /opt/

yum install gcc openssl-devel pcre-devel zlib-devel

wget http://nginx.org/download/nginx-0.8.38.tar.gz

wget http://github.com/gnosek/nginx-upstream-fair/tarball/master

tar –zxvf nginx-0.8.38.tar.gz

tar –zxvf gnosek-nginx-upstream-fair-2131c73.tar.gz

cd nginx-0.8.38

./configure
--with-http_stub_status_module
--add-module=/opt/gnosek-nginx-upstream-fair-2131c73

make &amp; make install
</pre>
<p>正常一步步走下面是不会出问题的，前提确保你的服务器网络可用。</p>
<h3>Nginx启动脚本：</h3>
<p><span id="more-1567"></span></p>
<pre class="brush: cpp;">
#!/bin/bash
# Nginx Manage Script
#
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf

nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/var/run/nginx.pid
lockfile=/var/lock/subsys/nginx

RETVAL=0
prog=&quot;nginx&quot;

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = &quot;no&quot; ] &amp;&amp; exit 0

[ -x $nginxd ] || exit 0

# Start nginx daemons functions.
start() {

if [ -e $nginx_pid ];then
   echo &quot;nginx already running....&quot;
   exit 1
fi

   echo -n $&quot;Starting $prog: &quot;
   daemon $nginxd -c ${nginx_config}
   RETVAL=$?
   echo
   [ $RETVAL = 0 ] &amp;&amp; touch $lockfile
   return $RETVAL

}

# Stop nginx daemons functions.
stop() {
        echo -n $&quot;Stopping $prog: &quot;
        killproc $nginxd
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] &amp;&amp; rm -f $lockfile $nginx_pid
}

# reload nginx service functions.
reload() {

    echo -n $&quot;Reloading $prog: &quot;
    killproc $nginxd -HUP
    RETVAL=$?
    echo

}

# See how we were called.
case &quot;$1&quot; in
start)
        start
        ;;

stop)
        stop
        ;;

reload)
        reload
        ;;

restart)
        stop
        start
        ;;

status)
        status $prog
        RETVAL=$?
        ;;
*)
        echo $&quot;Usage: $prog {start|stop|restart|reload|status|help}&quot;
        exit 1
esac

exit $RETVAL
</pre>
<p>将上面的脚本放在 /etc/init.d/nginx 文件里面</p>
<pre class="brush: cpp;">
chmod +x /etc/init.d/nginx
</pre>
<pre class="brush: cpp;">
/etc/init.d/nginx start
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/05/1021-week-subject-install-and-config-nginx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring Filter Ordering</title>
		<link>http://www.quanlei.com/2010/05/spring-filter-ordering/</link>
		<comments>http://www.quanlei.com/2010/05/spring-filter-ordering/#comments</comments>
		<pubDate>Wed, 26 May 2010 11:29:27 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[编程相关]]></category>
		<category><![CDATA[Filter]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1592</guid>
		<description><![CDATA[相关介绍： Spring 官方英文：http://static.springsource.org/spring-security/site/docs/3.1.x/reference/security-filter-chain.html#d4e1307 中文翻译：http://www.family168.com/tutorial/springsecurity3/html/web-infrastructure.html#d0e2828 更多介绍：http://www.family168.com/oa/springsecurity/html/ch101-filters.html]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.quanlei.com/wp-content/uploads/2010/05/Spring_Filter_Order.png"><img class="size-full wp-image-1593  aligncenter" title="Spring_Filter_Order" src="http://www.quanlei.com/wp-content/uploads/2010/05/Spring_Filter_Order.png" alt="" width="428" height="738" /></a></p>
<p>相关介绍：</p>
<blockquote><p>Spring 官方英文：<a href="http://static.springsource.org/spring-security/site/docs/3.1.x/reference/security-filter-chain.html#d4e1307">http://static.springsource.org/spring-security/site/docs/3.1.x/reference/security-filter-chain.html#d4e1307</a></p>
<p>中文翻译：<a href="http://www.family168.com/tutorial/springsecurity3/html/web-infrastructure.html#d0e2828">http://www.family168.com/tutorial/springsecurity3/html/web-infrastructure.html#d0e2828</a></p>
<p>更多介绍：<a href="http://www.family168.com/oa/springsecurity/html/ch101-filters.html">http://www.family168.com/oa/springsecurity/html/ch101-filters.html</a>
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/05/spring-filter-ordering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[10/20 周主题] – GlassFish单机和多机集群的配置</title>
		<link>http://www.quanlei.com/2010/05/1020-week-subject-glassfish-cluster/</link>
		<comments>http://www.quanlei.com/2010/05/1020-week-subject-glassfish-cluster/#comments</comments>
		<pubDate>Mon, 24 May 2010 14:32:28 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[Linux服务器相关]]></category>
		<category><![CDATA[周主题]]></category>
		<category><![CDATA[GlassFish]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sun]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1566</guid>
		<description><![CDATA[GlassFish可以配置单机集群和多机集群（即普通意义上的真集群）。 单机集群和多机集群配置上大同小异，只是代理服务器不同而已，单机集群代理服务器和代理节点在一个机子上，而多机集群就是将代理服务器和代理节点分布在不同的机器上。 下面就一步步来配置GlassFish集群，我是在Linux上部署的，因此下面的部署方式是Linux下的部署方式，Windows下的差不多： 1、下载 GlassFish， 我选择的是 GlassFish Server Open Source Edition 2.1.1中的 glassfish-installer-v2.1.1-linux-ml.jar 多语言版； Linux Platform glassfish-installer-v2.1.1-linux.jar size 64MB glassfish-installer-v2.1.1-linux-ml.jar size 78MB 2、安装GlassFish，安装前确保你的Linux上安装了JDK5 或者 JDK6 java -Xmx256m -jar glassfish-installer-v2.1.1-b31g-linux-ml.jar cd glassfish chmod +x lib/ant/bin/ant lib/ant/bin/ant -f setup-cluster.xml (确定安装的是cluster) 3、启动GlassFish，创建Node Agent bin/asadmin start-domain (启动GlassFish)，正常情况下GlassFish就可以启动了，打开 http://localhost:4848 就可以访问了。 创建Node Agent 1，bin/asadmin create-node-agent &#8211;host 172.16.100.125 &#8211;port 4848 agent1， 创建Node [...]]]></description>
			<content:encoded><![CDATA[<p>GlassFish可以配置单机集群和多机集群（即普通意义上的真集群）。</p>
<p>单机集群和多机集群配置上大同小异，只是代理服务器不同而已，单机集群代理服务器和代理节点在一个机子上，而多机集群就是将代理服务器和代理节点分布在不同的机器上。</p>
<p>下面就一步步来配置GlassFish集群，我是在Linux上部署的，因此下面的部署方式是Linux下的部署方式，Windows下的差不多：</p>
<p><strong>1、<a href="https://glassfish.dev.java.net/public/downloadsindex.html">下载 GlassFish</a>， 我选择的是 GlassFish Server Open Source Edition 2.1.1中的</strong><a href="http://download.java.net/javaee5/v2.1.1_branch/promoted/Linux/glassfish-installer-v2.1.1-b31g-linux-ml.jar"> glassfish-installer-v2.1.1-linux-ml.jar</a><strong> 多语言版；</strong></p>
<p><strong>Linux Platform</strong></p>
<ul>
<li><a href="http://download.java.net/javaee5/v2.1.1_branch/promoted/Linux/glassfish-installer-v2.1.1-b31g-linux.jar">glassfish-installer-v2.1.1-linux.jar</a> size 64MB</li>
<li><a href="http://download.java.net/javaee5/v2.1.1_branch/promoted/Linux/glassfish-installer-v2.1.1-b31g-linux-ml.jar">glassfish-installer-v2.1.1-linux-ml.jar</a> size 78MB</li>
</ul>
<p><span id="more-1566"></span><br />
<strong>2、安装GlassFish，安装前确保你的Linux上安装了JDK5 或者 JDK6</strong></p>
<ul>
<li><span style="color: #008000;">java -Xmx256m -jar glassfish-installer-v2.1.1-b31g-linux-ml.jar</span></li>
<li><span style="color: #008000;">cd glassfish</span></li>
<li><span style="color: #008000;">chmod +x lib/ant/bin/ant</span></li>
<li><span style="color: #008000;">lib/ant/bin/ant -f setup-cluster.xml</span> (确定安装的是cluster)</li>
</ul>
<p><strong>3、启动GlassFish，创建Node Agent</strong></p>
<ul>
<li>bin/asadmin start-domain (启动GlassFish)，正常情况下GlassFish就可以启动了，打开 http://localhost:4848 就可以访问了。</li>
<li>创建Node Agent 1，<span style="color: #008000;">bin/asadmin create-node-agent &#8211;host 172.16.100.125 &#8211;port 4848 agent1</span>，</li>
<li>创建Node Agent 2,  <span style="color: #008000;">bin/asadmin create-node-agent &#8211;host 172.16.100.125 &#8211;port 4848 agent2</span>，</li>
<blockquote><p>说明：这里的172.16.100.125就是代理服务器的IP，如果你是多机集群，那就是在其他IP的机子上创建node agent</p></blockquote>
<li>分别启动Node Agent，<span style="color: #008000;">bin/asadmin start-node-agent agent1</span> 和 <span style="color: #008000;">bin/asadmin  start-node-agent agent2</span>,</li>
<blockquote><p>说明：这里需要输入代理服务器的用户名，密码和主密码，主密码默认是：changeit，未改动直接回车即可</p></blockquote>
</ul>
<p><strong>4、创建集群，启动集群</strong></p>
<ul>
<li>打开 http://localhost:4848，点击Cluster/集群左侧菜单，新建一个集群，</li>
<li>创建两个实例，节点分别选择之前创建的agent1和agent2，</li>
<li>启动集群，正常情况下，集群就可以正常启动，两个实例也会随之启动，</li>
<blockquote><p>说明：如果这里集群无法启动，那么需要更改下hosts，注释掉 127.0.0.1 localhost.localhostdomain localhost, 新增一条，将IP改为你的本机IP，比如 172.16.100.100 test.test localhost，</p></blockquote>
<li>集群启动后，就可以在集群里面，选择部署应用程序了，部署完应用程序(推荐GlassFish samples里面自带的clusterjsp例子)，会分别在node agent下面看到部署的应用程序，目录地址：<span style="color: #008000;">glassfish/nodeagents/&lt;节点名&gt;/&lt;实例名&gt;/applications/j2ee-modules/</span></li>
<blockquote><p>说明：默认集群的访问IP是38080和38081端口，通过你的IP:38080/project_name和IP:38081/project_name就可以访问你的应用。</p></blockquote>
</ul>
<p>参考文章：<br />
1、http://blogs.sun.com/anilam/entry/glassfish_v2_admin_console_series<br />
2、http://wlmouse.javaeye.com/blog/179637</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/05/1020-week-subject-glassfish-cluster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>打包达人是如何炼成的，出差旅人，必看</title>
		<link>http://www.quanlei.com/2010/05/%e6%89%93%e5%8c%85%e8%be%be%e4%ba%ba%e6%98%af%e5%a6%82%e4%bd%95%e7%82%bc%e6%88%90%e7%9a%84%ef%bc%8c%e5%87%ba%e5%b7%ae%e6%97%85%e4%ba%ba%ef%bc%8c%e5%bf%85%e7%9c%8b/</link>
		<comments>http://www.quanlei.com/2010/05/%e6%89%93%e5%8c%85%e8%be%be%e4%ba%ba%e6%98%af%e5%a6%82%e4%bd%95%e7%82%bc%e6%88%90%e7%9a%84%ef%bc%8c%e5%87%ba%e5%b7%ae%e6%97%85%e4%ba%ba%ef%bc%8c%e5%bf%85%e7%9c%8b/#comments</comments>
		<pubDate>Sun, 23 May 2010 10:07:46 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[随记]]></category>
		<category><![CDATA[出差]]></category>
		<category><![CDATA[户外]]></category>
		<category><![CDATA[旅游]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/2010/05/%e6%89%93%e5%8c%85%e8%be%be%e4%ba%ba%e6%98%af%e5%a6%82%e4%bd%95%e7%82%bc%e6%88%90%e7%9a%84%ef%bc%8c%e5%87%ba%e5%b7%ae%e6%97%85%e4%ba%ba%ef%bc%8c%e5%bf%85%e7%9c%8b/</guid>
		<description><![CDATA[美国洛杉 矶空姐 Heather Poole 同时也是一名打包达人，在纽约时报网站上的12张幻灯片中，她演示了如何在一个行李箱内装入10天内全部要穿的衣服 Poole 所要装下的衣物包括：三条短裤，三条正装长裤，一条裙子，三条休闲裤（或牛仔裤），三件睡衣，三件泳衣，一件布裙，三件轻毛衫，四件连衣裙，10件休闲 衫，六件正装衬衫，一个手包，化妆品若干和两双鞋 以下是步骤： 1.普通叠衣法太占空间，Poole首先将衣裤紧紧卷成轴 2. 将鞋子沿箱子边缘排放，然后将长裤放到底层的中间 3. 将卷好的重量稍轻的衣物紧密排列当上一层 4. 接着放重量最轻的上衣，这也是衣物的最上一层了 5. 最顶上放化妆品和手包，空间整整好，无需屁股坐上去压 如 果是常规叠法的结果是这样的 此 外，对于短途旅行，Poole也给出了如何最小程度减少褶皱的叠法： 1.将制服和长裤沿箱沿平铺，裤腿延伸至箱外 2. 易褶的衣物防止中间，然后化妆品和手包还是在最上面 3. 最后，将箱外的裤腿卷进来 happy trip&#8230;这样做的好处是，减少行李费，一个行李箱在传送带旁边你也不要浪费过多的时间等你的多个箱子了 转载出处：http://jandan.net/2010/05/22/suitcase-packing-ninja.html 来 源：http://www.boingboing.net/2010/05/21/secrets-of-a-suitcas.html]]></description>
			<content:encoded><![CDATA[<div>
<div id="read_tpc"><img onclick="if(this.width&gt;=800)  window.open('http://pic.yupoo.com/jdvip/9387195b5d4b/medium.jpg');" src="http://pic.yupoo.com/jdvip/9387195b5d4b/medium.jpg" border="0" alt="" /><br />
美国洛杉 矶空姐 Heather Poole 同时也是一名打包达人，在纽约时报网站上的12张幻灯片中，她演示了如何在一个行李箱内装入10天内全部要穿的衣服</p>
<p>Poole 所要装下的衣物包括：三条短裤，三条正装长裤，一条裙子，三条休闲裤（或牛仔裤），三件睡衣，三件泳衣，一件布裙，三件轻毛衫，四件连衣裙，10件休闲 衫，六件正装衬衫，一个手包，化妆品若干和两双鞋</p>
<p>以下是步骤：<br />
<span id="more-1561"></span><br />
1.普通叠衣法太占空间，Poole首先将衣裤紧紧卷成轴<br />
<img onclick="if(this.width&gt;=800)  window.open('http://pic.yupoo.com/jdvip/5910695b5d4c/medium.jpg');" src="http://pic.yupoo.com/jdvip/5910695b5d4c/medium.jpg" border="0" alt="" /><br />
<img onclick="if(this.width&gt;=800)  window.open('http://pic.yupoo.com/jdvip/9819195b5d4e/medium.jpg');" src="http://pic.yupoo.com/jdvip/9819195b5d4e/medium.jpg" border="0" alt="" /></p>
<p>2. 将鞋子沿箱子边缘排放，然后将长裤放到底层的中间<br />
<img onclick="if(this.width&gt;=800)  window.open('http://pic.yupoo.com/jdvip/8685295b5d4f/medium.jpg');" src="http://pic.yupoo.com/jdvip/8685295b5d4f/medium.jpg" border="0" alt="" /></p>
<p>3. 将卷好的重量稍轻的衣物紧密排列当上一层<br />
<img onclick="if(this.width&gt;=800)  window.open('http://pic.yupoo.com/jdvip/3483395b5d51/medium.jpg');" src="http://pic.yupoo.com/jdvip/3483395b5d51/medium.jpg" border="0" alt="" /></p>
<p>4. 接着放重量最轻的上衣，这也是衣物的最上一层了<br />
<img onclick="if(this.width&gt;=800)  window.open('http://pic.yupoo.com/jdvip/3516995b5d51/medium.jpg');" src="http://pic.yupoo.com/jdvip/3516995b5d51/medium.jpg" border="0" alt="" /></p>
<p>5. 最顶上放化妆品和手包，空间整整好，无需屁股坐上去压<br />
<img onclick="if(this.width&gt;=800)  window.open('http://pic.yupoo.com/jdvip/3564695b5d52/medium.jpg');" src="http://pic.yupoo.com/jdvip/3564695b5d52/medium.jpg" border="0" alt="" /></p>
<p>如 果是常规叠法的结果是这样的<br />
<img onclick="if(this.width&gt;=800)  window.open('http://pic.yupoo.com/jdvip/9529795b5d52/medium.jpg');" src="http://pic.yupoo.com/jdvip/9529795b5d52/medium.jpg" border="0" alt="" /></p>
<p>此 外，对于短途旅行，Poole也给出了如何最小程度减少褶皱的叠法：<br />
1.将制服和长裤沿箱沿平铺，裤腿延伸至箱外<br />
<img onclick="if(this.width&gt;=800)  window.open('http://pic.yupoo.com/jdvip/7862995b5d53/medium.jpg');" src="http://pic.yupoo.com/jdvip/7862995b5d53/medium.jpg" border="0" alt="" /></p>
<p>2. 易褶的衣物防止中间，然后化妆品和手包还是在最上面<br />
<img onclick="if(this.width&gt;=800)  window.open('http://pic.yupoo.com/jdvip/7101995b5d53/medium.jpg');" src="http://pic.yupoo.com/jdvip/7101995b5d53/medium.jpg" border="0" alt="" /></p>
<p>3. 最后，将箱外的裤腿卷进来<br />
<img onclick="if(this.width&gt;=800)  window.open('http://pic.yupoo.com/jdvip/6435295b5d54/medium.jpg');" src="http://pic.yupoo.com/jdvip/6435295b5d54/medium.jpg" border="0" alt="" /></p>
<p>happy  trip&#8230;这样做的好处是，减少行李费，一个行李箱在传送带旁边你也不要浪费过多的时间等你的多个箱子了<br />
<img onclick="if(this.width&gt;=800)  window.open('http://pic.yupoo.com/jdvip/4932595b5d55/medium.jpg');" src="http://pic.yupoo.com/jdvip/4932595b5d55/medium.jpg" border="0" alt="" /></p>
<p>转载出处：<a id="url_1" onclick="return checkUrl(this)" href="http://jandan.net/2010/05/22/suitcase-packing-ninja.html" target="_blank">http://jandan.net/2010/05/22/suitcase-packing-ninja.html</a><br />
来 源：<a id="url_2" onclick="return checkUrl(this)" href="http://www.boingboing.net/2010/05/21/secrets-of-a-suitcas.html" target="_blank">http://www.boingboing.net/2010/05/21/secrets-of-a-suitcas.html</a></p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/05/%e6%89%93%e5%8c%85%e8%be%be%e4%ba%ba%e6%98%af%e5%a6%82%e4%bd%95%e7%82%bc%e6%88%90%e7%9a%84%ef%bc%8c%e5%87%ba%e5%b7%ae%e6%97%85%e4%ba%ba%ef%bc%8c%e5%bf%85%e7%9c%8b/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VirtualBox VDI镜像的复制</title>
		<link>http://www.quanlei.com/2010/05/virtualbox-vdi%e9%95%9c%e5%83%8f%e7%9a%84%e5%a4%8d%e5%88%b6/</link>
		<comments>http://www.quanlei.com/2010/05/virtualbox-vdi%e9%95%9c%e5%83%8f%e7%9a%84%e5%a4%8d%e5%88%b6/#comments</comments>
		<pubDate>Fri, 21 May 2010 09:20:01 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[Linux服务器相关]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[VDI]]></category>
		<category><![CDATA[复制]]></category>
		<category><![CDATA[虚拟机]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1558</guid>
		<description><![CDATA[因为工作的需要，需要在不同的软件环境下做不同的事情，虚拟机这个时候就起了很大的作用，但是正常安装虚拟机还是比较麻烦的，如果已经有一个VDI文件系统了，只要复制一个就可以了！ 但是复制后不能直接使用的，VDI是携带UUID的，UUID不能重复，因此可以通过重置UUID来使用。好在VirtualBox有这方面的工具来直接使用： VBoxManage.exe internalcommands setvdiuuid disk.vdi 这样就重置了新VDI的UUID，然后就可以把这个新VDI注册进虚拟硬盘，避免了重新安装的烦恼！]]></description>
			<content:encoded><![CDATA[<p>因为工作的需要，需要在不同的软件环境下做不同的事情，虚拟机这个时候就起了很大的作用，但是正常安装虚拟机还是比较麻烦的，如果已经有一个VDI文件系统了，只要复制一个就可以了！</p>
<p>但是复制后不能直接使用的，VDI是携带UUID的，UUID不能重复，因此可以通过重置UUID来使用。好在VirtualBox有这方面的工具来直接使用：</p>
<p><code><br />
VBoxManage.exe internalcommands setvdiuuid disk.vdi<br />
</code></p>
<p>这样就重置了新VDI的UUID，然后就可以把这个新VDI注册进虚拟硬盘，避免了重新安装的烦恼！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/05/virtualbox-vdi%e9%95%9c%e5%83%8f%e7%9a%84%e5%a4%8d%e5%88%b6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>转载：支付宝浏览器与操作系统统计报告(2010.04)</title>
		<link>http://www.quanlei.com/2010/05/%e8%bd%ac%e8%bd%bd%ef%bc%9a%e6%94%af%e4%bb%98%e5%ae%9d%e6%b5%8f%e8%a7%88%e5%99%a8%e4%b8%8e%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e7%bb%9f%e8%ae%a1%e6%8a%a5%e5%91%8a2010-04/</link>
		<comments>http://www.quanlei.com/2010/05/%e8%bd%ac%e8%bd%bd%ef%bc%9a%e6%94%af%e4%bb%98%e5%ae%9d%e6%b5%8f%e8%a7%88%e5%99%a8%e4%b8%8e%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e7%bb%9f%e8%ae%a1%e6%8a%a5%e5%91%8a2010-04/#comments</comments>
		<pubDate>Tue, 11 May 2010 05:54:56 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[前端]]></category>
		<category><![CDATA[支付宝]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[系统]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1552</guid>
		<description><![CDATA[支付宝注册用户已经突破 3 亿，2009 年网购交易额达到 2670 亿元 (via)，支付宝用户特征在一定程度上反映了中国电子商务用户的普遍情况。 基于支付宝网站流量统计数据，支付宝前端开发组最近发布了浏览器与操作系统统计报告。这份报告对电子支付行业以及所有互联网电子商务网站都具有现实意义。 &#62;更大阅读窗口 原文：http://ued.alipay.com/2010/04/alipay-client-data-report/]]></description>
			<content:encoded><![CDATA[<p>支付宝注册用户已经突破 3 亿，2009 年网购交易额达到 2670 亿元 (via)，支付宝用户特征在一定程度上反映了中国电子商务用户的普遍情况。<br />
基于支付宝网站流量统计数据，支付宝前端开发组最近发布了浏览器与操作系统统计报告。这份报告对电子支付行业以及所有互联网电子商务网站都具有现实意义。</p>
<div id="__ss_3742998" style="width:600px;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="606" height="500" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=alipay-client-data-100416004018-phpapp02&amp;stripped_title=alipay-clientdata" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="600" height="500" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=alipay-client-data-100416004018-phpapp02&amp;stripped_title=alipay-clientdata" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0pt 12px;"><a href="http://www.slideshare.net/janlay/alipay-clientdata" target="_blank">&gt;更大阅读窗口</a></div>
</div>
<p>原文：http://ued.alipay.com/2010/04/alipay-client-data-report/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/05/%e8%bd%ac%e8%bd%bd%ef%bc%9a%e6%94%af%e4%bb%98%e5%ae%9d%e6%b5%8f%e8%a7%88%e5%99%a8%e4%b8%8e%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e7%bb%9f%e8%ae%a1%e6%8a%a5%e5%91%8a2010-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
