<?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>权记 &#187; 周主题</title>
	<atom:link href="http://www.quanlei.com/category/week_subject/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>[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>[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>[10/17 周主题] – Axure入项目</title>
		<link>http://www.quanlei.com/2010/05/1017-week-subject-axure-quick-start/</link>
		<comments>http://www.quanlei.com/2010/05/1017-week-subject-axure-quick-start/#comments</comments>
		<pubDate>Tue, 04 May 2010 13:44:01 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[周主题]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[Axure]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[原型]]></category>
		<category><![CDATA[框架]]></category>
		<category><![CDATA[界面]]></category>
		<category><![CDATA[项目]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1563</guid>
		<description><![CDATA[很早就关注和试用Axure了，但是没在之前的项目中使用过，因为一些原因，借这次的这个web项目开始在公司推广Axure的使用，不过说到推广，现在也就我一人的用，其他项目要用还未知呢！ 先看看Axure的Demo吧：http://www.axure.org/demo/ 做过前端的人应该会更有感觉，操作上不会感觉太难，很快就可以上手，这要得益于Axure强大的组件库，基本上常用的组件都有，另外还有其他一些特殊的第三方组件提供下载。 这次项目中用Axure主要原因是界面框架的原因，如果UI和前端(我做)做完页面，把网页给客户看，那估计要费时不少，加上随时的改动，到后面会越做越忙，越做改动越大，所以就早动手，先用Axure把网站的各个页面框架和页码流程搭起来，跟客户一一确认，尽快完成这块的内容，再由UI去跟客户确认配色的问题，前端这个时候就可以开工了，跟之前的项目流程比，至少框架不会大动了！ 第一次拿做好的页面框架给客户看，客户以为这么快页面就出来啦，很有兴趣，当然我就得必须解释解释了，这个只是框架图，和最终的效果图是有些距离的，这些页面只是将页面框架和流程展示下。 学习Axure，最主要就是多用，多看别人的Axure例子，如果一个效果自己一下子无法实现，可以在网上找别人的rp文件，仔细研究下，很快就可以自己做出来了！ 再者Axure现在有好些模板，不一定就得自己去实现，Axure只是个工具，不管从哪个方面入手，达到你要的效果即可。 推荐区国内Axure推广比较有名的网站：http://www.axure.org/ 上面有很多教程和例子，可以进一步帮助学习Axure的使用。]]></description>
			<content:encoded><![CDATA[<p>很早就关注和试用Axure了，但是没在之前的项目中使用过，因为一些原因，借这次的这个web项目开始在公司推广Axure的使用，不过说到推广，现在也就我一人的用，其他项目要用还未知呢！</p>
<p style="text-align: center;"><a href="http://www.quanlei.com/wp-content/uploads/2010/05/axure.gif"><img class="aligncenter size-full wp-image-1589" title="axure" src="http://www.quanlei.com/wp-content/uploads/2010/05/axure.gif" alt="" width="589" height="346" /></a></p>
<p>先看看Axure的Demo吧：<a href="http://www.axure.org/demo/">http://www.axure.org/demo/</a></p>
<p>做过前端的人应该会更有感觉，操作上不会感觉太难，很快就可以上手，这要得益于Axure强大的组件库，基本上常用的组件都有，另外还有其他一些特殊的第三方组件提供下载。</p>
<p>这次项目中用Axure主要原因是界面框架的原因，如果UI和前端(我做)做完页面，把网页给客户看，那估计要费时不少，加上随时的改动，到后面会越做越忙，越做改动越大，所以就早动手，先用Axure把网站的各个页面框架和页码流程搭起来，跟客户一一确认，尽快完成这块的内容，再由UI去跟客户确认配色的问题，前端这个时候就可以开工了，跟之前的项目流程比，至少框架不会大动了！</p>
<p>第一次拿做好的页面框架给客户看，客户以为这么快页面就出来啦，很有兴趣，当然我就得必须解释解释了，这个只是框架图，和最终的效果图是有些距离的，这些页面只是将页面框架和流程展示下。</p>
<p>学习Axure，最主要就是多用，多看别人的Axure例子，如果一个效果自己一下子无法实现，可以在网上找别人的rp文件，仔细研究下，很快就可以自己做出来了！</p>
<p>再者Axure现在有好些模板，不一定就得自己去实现，Axure只是个工具，不管从哪个方面入手，达到你要的效果即可。</p>
<p>推荐区国内Axure推广比较有名的网站：http://www.axure.org/ 上面有很多教程和例子，可以进一步帮助学习Axure的使用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/05/1017-week-subject-axure-quick-start/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[10/16 周主题] – Apache，Nginx，Tomcat集群 续</title>
		<link>http://www.quanlei.com/2010/04/1016-week-subject-apache-tomcat/</link>
		<comments>http://www.quanlei.com/2010/04/1016-week-subject-apache-tomcat/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 11:12:25 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[Linux服务器相关]]></category>
		<category><![CDATA[周主题]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1495</guid>
		<description><![CDATA[这篇文章是继续上次的 Apache，Nginx，Tomcat集群的一个补充，主要是Apache和Tomcat的一些补充。 1、Apache 反向代理只做 HTTP 透明转发，因此，Tomcat 那边，如果使用 Servlet API 获取 request url, server info等等，都是 Tomcat 的。在Tomcat 上的 JSP 或者 HTML 文件里面，都应该是相对路径，不应该使用绝对路径，更不能使用带 Tomcat 地址的 URL。 2、Apache KeepAlive和KeepAliveTimeout的使用，首先KeepAlive的on还是off，需要根据应用来决定，一般的使用是静态资源较多时启用，动态资源较多时关闭，对于高负荷服务器来说，KeepAliveTimeout值较大会导致一些性能方面的问题：超时值越大，与空闲客户端保持连接的进程就越多。 3、Tomcat中的maxThread的建议赋值范围在500-750，如果超过750，那么建议使用2个tomcat组成集群，每个设置为500，这样的使用效果比单个设置为1000要好的多！]]></description>
			<content:encoded><![CDATA[<p>这篇文章是继续上次的 <a href="http://www.quanlei.com/category/week_subject/">Apache，Nginx，Tomcat集群</a>的一个补充，主要是Apache和Tomcat的一些补充。</p>
<p>1、Apache 反向代理只做 HTTP 透明转发，因此，Tomcat 那边，如果使用 Servlet API 获取 request url, server info等等，都是 Tomcat 的。在Tomcat 上的 JSP 或者 HTML 文件里面，都应该是相对路径，不应该使用绝对路径，更不能使用带 Tomcat 地址的 URL。</p>
<p>2、Apache KeepAlive和KeepAliveTimeout的使用，首先KeepAlive的on还是off，需要根据应用来决定，一般的使用是静态资源较多时启用，动态资源较多时关闭，对于高负荷服务器来说，KeepAliveTimeout值较大会导致一些性能方面的问题：超时值越大，与空闲客户端保持连接的进程就越多。</p>
<p>3、Tomcat中的maxThread的建议赋值范围在500-750，如果超过750，那么建议使用2个tomcat组成集群，每个设置为500，这样的使用效果比单个设置为1000要好的多！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/04/1016-week-subject-apache-tomcat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[10/14周主题] – IE6 hacks</title>
		<link>http://www.quanlei.com/2010/04/week-subject-1014-ie6-problems/</link>
		<comments>http://www.quanlei.com/2010/04/week-subject-1014-ie6-problems/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 07:13:38 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[周主题]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[IE6]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1313</guid>
		<description><![CDATA[做前端的同学都会遇到浏览器兼容问题，今天顺手整理一下遇到的和没遇到的从网上搜来的部分IE6下常见兼容问题，以备后用。 IE6虽然要被淘汰了，但是从统计来看，国内使用IE6的用户还是居多，下图是一个小型网站的IE浏览器访问统计： 无法否认的事实将继续折腾前端工程师在网页设计时，不得不继续考虑IE6的用户体验。 IE6下常见问题汇总： 1、IE6下层不能在下拉框之上的问题 2、IE6的双倍边距BUG 3、IE6下两个层中间有间隙 4、IE6使用滤镜使PNG图片透明后，容器内链接失效的问题 5、IE6下为什么图片下方有空隙产生 6、IE6下定义div最小高度 7、IE6下PNG透明办法 8、链接伪类（:hover）CSS背景图片有闪动BUG 9、IE6 中文注释造成部分样式失效 10、LI在IE6中底部空行的BUG 最后，推荐查看WEB前端开发，由 愚人码头 整理的 IE6 BUG 专栏：http://www.css88.com/archives/579 详细整理了IE6下的bug和解决办法。]]></description>
			<content:encoded><![CDATA[<p>做前端的同学都会遇到浏览器兼容问题，今天顺手整理一下遇到的和没遇到的从网上搜来的部分IE6下常见兼容问题，以备后用。</p>
<p>IE6虽然要被淘汰了，但是从统计来看，国内使用IE6的用户还是居多，下图是一个小型网站的IE浏览器访问统计：</p>
<p><a href="http://www.quanlei.com/wp-content/uploads/2010/04/Browser-Google-Analytics.png"><img class="aligncenter size-full wp-image-1372" title="Browser- - Google Analytics" src="http://www.quanlei.com/wp-content/uploads/2010/04/Browser-Google-Analytics.png" alt="" width="600" height="101" /></a></p>
<p>无法否认的事实将继续折腾前端工程师在网页设计时，不得不继续考虑IE6的用户体验。</p>
<h3>IE6下常见问题汇总：</h3>
<p>1、<a href="http://www.baidu.com/s?bs=IE6+%B2%E3%B2%BB%C4%DC%D4%DA%CF%C2%C0%AD%BF%F2%D6%AE%C9%CF%B5%C4%CE%CA%CC%E2&#038;f=8&#038;wd=IE6+%B2%E3+%CF%C2%C0%AD%BF%F2+">IE6下层不能在下拉框之上的问题</a></p>
<p>2、<a href="http://www.baidu.com/s?wd=IE6%B5%C4%CB%AB%B1%B6%B1%DF%BE%E0BUG">IE6的双倍边距BUG</a></p>
<p>3、<a href="http://www.baidu.com/s?bs=IE6+%B2%E3+%CF%C2%C0%AD%BF%F2&#038;f=8&#038;wd=IE6+%C1%BD%B8%F6%B2%E3%D6%D0%BC%E4%D3%D0%BC%E4%CF%B6">IE6下两个层中间有间隙</a></p>
<p>4、<a href="http://www.baidu.com/s?bs=IE6%CA%B9%D3%C3%C2%CB%BE%B5%CA%B9PNG%CD%BC%C6%AC%CD%B8%C3%F7%BA%F3%2C%C8%DD%C6%F7%C4%DA%C1%B4%BD%D3%CA%A7%D0%A7%B5%C4%CE%CA%CC%E2&#038;f=8&#038;wd=IE6+%C2%CB%BE%B5+%CD%B8%C3%F7+%C1%B4%BD%D3%CA%A7%D0%A7">IE6使用滤镜使PNG图片透明后，容器内链接失效的问题</a></p>
<p>5、<a href="http://www.baidu.com/s?bs=IE6%CF%C2%CE%AA%CA%B2%C3%B4%CD%BC%C6%AC%CF%C2%B7%BD%D3%D0%BF%D5%CF%B6%B2%FA%C9%FA&#038;f=8&#038;wd=IE6+%CD%BC%C6%AC%CF%C2%B7%BD+%BF%D5%CF%B6+">IE6下为什么图片下方有空隙产生</a><br />
<span id="more-1313"></span><br />
6、<a href="http://www.baidu.com/s?bs=ie6+div%D7%EE%D0%A1%B8%DF%B6%C8&#038;f=8&#038;wd=ie6+div%D7%EE%D0%A1%B8%DF%B6%C8">IE6下定义div最小高度</a></p>
<p>7、<a href="http://www.baidu.com/s?bs=ie6+div%D7%EE%D0%A1%B8%DF%B6%C8&#038;f=3&#038;wd=ie6+png+%CD%B8%C3%F7&#038;oq=ie6+png&#038;rsp=0">IE6下PNG透明办法</a></p>
<p>8、<a href="http://www.baidu.com/s?bs=ie6+%C1%B4%BD%D3+%C9%C1%B6%AF&#038;f=8&#038;wd=%C1%B4%BD%D3%CE%B1%C0%E0%A3%A8%3Ahover%A3%A9CSS%B1%B3%BE%B0%CD%BC%C6%AC%D3%D0%C9%C1%B6%AFBUG">链接伪类（:hover）CSS背景图片有闪动BUG</a></p>
<p>9、<a href="http://www.baidu.com/s?bs=%D1%F9%CA%BD%D6%D0%CE%C4%D7%A2%CA%CD%BA%F3%D2%FD%B7%A2%CA%A7%D0%A7&#038;f=8&#038;wd=IE6++%D7%A2%CA%CD+%CA%A7%D0%A7">IE6 中文注释造成部分样式失效</a></p>
<p>10、<a href="http://www.baidu.com/s?bs=IE6+%D7%A2%CA%CD+%CA%A7%D0%A7&#038;f=8&#038;wd=IE6+li+%B5%D7%B2%BF%BF%D5%D0%D0">LI在IE6中底部空行的BUG </a></p>
<p>最后，推荐查看WEB前端开发，由 愚人码头 整理的 IE6 BUG 专栏：http://www.css88.com/archives/579<br />
详细整理了IE6下的bug和解决办法。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/04/week-subject-1014-ie6-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[10/13周主题] – Apache，Nginx，Tomcat集群</title>
		<link>http://www.quanlei.com/2010/04/1013-week-subject-apache-nginx-tomcat/</link>
		<comments>http://www.quanlei.com/2010/04/1013-week-subject-apache-nginx-tomcat/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 15:42:22 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[周主题]]></category>
		<category><![CDATA[编程相关]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1311</guid>
		<description><![CDATA[本周主题：Apache Nginx Tomcat集群 最近这段时间一个项目处于最后的调试，上线阶段，服务器和程序的优化方面成为最近的重点，以确保项目上线后可以达到预定的目标。 最终上线的配置是Apache+Tomcat集群，Nginx仅仅参与了一下测试，算是体验下，以后估计会在前端上多多使用。 Apache前端使用的是反向代理配置方式，Session Sticky，Tomcat配置sessionDB。 Apache基本上采用默认配置，由于使用prefork模式，因此调整了prefork下的一些参数配置。 Tomcat调整了连接数，Apache和Tomcat在同台机子上，调整了Linux系统的ulimit。 Nginx做前端时，没有配置session同步，压力测试的表现方面，没发现Apache和Nginx有太大差异，不过有一次Apache前端被压挂了，无法关闭httpd。 另外这次将GlashFish和Tomcat做了一个简单的对比，发现GlashFish+自身连接池测试效果要好于Tomcat+DBCP连接池，表现方面一个是内存使用上，另一个是数据库连接数和响应上。]]></description>
			<content:encoded><![CDATA[<p>本周主题：Apache Nginx Tomcat集群</p>
<p>最近这段时间一个项目处于最后的调试，上线阶段，服务器和程序的优化方面成为最近的重点，以确保项目上线后可以达到预定的目标。</p>
<p>最终上线的配置是Apache+Tomcat集群，Nginx仅仅参与了一下测试，算是体验下，以后估计会在前端上多多使用。</p>
<p>Apache前端使用的是反向代理配置方式，Session Sticky，Tomcat配置sessionDB。</p>
<p>Apache基本上采用默认配置，由于使用prefork模式，因此调整了prefork下的一些参数配置。</p>
<p>Tomcat调整了连接数，Apache和Tomcat在同台机子上，调整了Linux系统的ulimit。</p>
<p>Nginx做前端时，没有配置session同步，压力测试的表现方面，没发现Apache和Nginx有太大差异，不过有一次Apache前端被压挂了，无法关闭httpd。</p>
<p>另外这次将GlashFish和Tomcat做了一个简单的对比，发现GlashFish+自身连接池测试效果要好于Tomcat+DBCP连接池，表现方面一个是内存使用上，另一个是数据库连接数和响应上。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/04/1013-week-subject-apache-nginx-tomcat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[10/12周主题] – MySQL性能分析命令：Explain 详解</title>
		<link>http://www.quanlei.com/2010/04/1012-week-subject-%e2%80%93-mysql-explain/</link>
		<comments>http://www.quanlei.com/2010/04/1012-week-subject-%e2%80%93-mysql-explain/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 09:50:39 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[周主题]]></category>
		<category><![CDATA[编程相关]]></category>
		<category><![CDATA[explain]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1309</guid>
		<description><![CDATA[对explain的各个属性一知半解，今天详细的了解一下。 Explain命令在解决数据库性能上是第一推荐使用命令，大部分的性能问题可以通过此命令来简单的解决，Explain可以用来查看SQL语句的执行效果，可以帮助选择更好的索引和优化查询语句，写出更好的优化语句。 本周主题 &#8212; MySQL Explain 详解 Explain语法：explain select &#8230; from &#8230; [where ...] 例如：explain select * from news; 输出： +----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+ &#124; id &#124; select_type &#124; table &#124; type &#124; possible_keys &#124; key &#124; key_len &#124; ref &#124; rows &#124; Extra &#124; +----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+ 下面对各个属性进行了解： 1、id：这是SELECT的查询序列号 2、select_type：select_type就是select的类型，可以有以下几种： SIMPLE：简单SELECT(不使用UNION或子查询等) PRIMARY：最外面的SELECT UNION：UNION中的第二个或后面的SELECT语句 DEPENDENT UNION：UNION中的第二个或后面的SELECT语句，取决于外面的查询 UNION RESULT：UNION的结果。 SUBQUERY：子查询中的第一个SELECT DEPENDENT [...]]]></description>
			<content:encoded><![CDATA[<p>对explain的各个属性一知半解，今天详细的了解一下。 Explain命令在解决数据库性能上是第一推荐使用命令，大部分的性能问题可以通过此命令来简单的解决，Explain可以用来查看SQL语句的执行效果，可以帮助选择更好的索引和优化查询语句，写出更好的优化语句。</p>
<h2>本周主题 &#8212; MySQL Explain 详解</h2>
<p>Explain语法：explain select &#8230; from &#8230; [where ...]</p>
<p>例如：explain select * from news;</p>
<p>输出：<br />
<code><br />
+----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+<br />
| id | select_type | table | type  | possible_keys     | key     | key_len | ref   | rows | Extra |<br />
+----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+<br />
</code></p>
<p>下面对各个属性进行了解：</p>
<p>1、id：这是SELECT的查询序列号</p>
<p>2、select_type：select_type就是select的类型，可以有以下几种：</p>
<blockquote><p>SIMPLE：简单SELECT(不使用UNION或子查询等)</p>
<p>PRIMARY：最外面的SELECT</p>
<p>UNION：UNION中的第二个或后面的SELECT语句</p>
<p>DEPENDENT UNION：UNION中的第二个或后面的SELECT语句，取决于外面的查询</p>
<p>UNION RESULT：UNION的结果。</p>
<p>SUBQUERY：子查询中的第一个SELECT</p>
<p>DEPENDENT SUBQUERY：子查询中的第一个SELECT，取决于外面的查询</p>
<p>DERIVED：导出表的SELECT(FROM子句的子查询)</p></blockquote>
<p><span id="more-1309"></span><br />
3、table：显示这一行的数据是关于哪张表的</p>
<p>4、type：这列最重要，显示了连接使用了哪种类别,有无使用索引，是使用Explain命令分析性能瓶颈的关键项之一。</p>
<blockquote><p>结果值从好到坏依次是：</p>
<p>system &gt; const &gt; eq_ref &gt; ref &gt; fulltext &gt; ref_or_null &gt; index_merge &gt; unique_subquery &gt; index_subquery &gt; range &gt; index &gt; ALL</p>
<p>一般来说，得保证查询至少达到range级别，最好能达到ref，否则就可能会出现性能问题。</p></blockquote>
<p>5、possible_keys：列指出MySQL能使用哪个索引在该表中找到行</p>
<p>6、key：显示MySQL实际决定使用的键（索引）。如果没有选择索引，键是NULL</p>
<p>7、key_len：显示MySQL决定使用的键长度。如果键是NULL，则长度为NULL。使用的索引的长度。在不损失精确性的情况下，长度越短越好</p>
<p>8、ref：显示使用哪个列或常数与key一起从表中选择行。</p>
<p>9、rows：显示MySQL认为它执行查询时必须检查的行数。</p>
<p>10、Extra：包含MySQL解决查询的详细信息，也是关键参考项之一。</p>
<blockquote><p>Distinct<br />
一旦MYSQL找到了与行相联合匹配的行，就不再搜索了</p>
<p>Not exists<br />
MYSQL 优化了LEFT JOIN，一旦它找到了匹配LEFT JOIN标准的行，</p>
<p>就不再搜索了</p>
<p>Range  checked for each</p>
<p>Record（index map:#）<br />
没有找到理想的索引，因此对于从前面表中来的每一 个行组合，MYSQL检查使用哪个索引，并用它来从表中返回行。这是使用索引的最慢的连接之一</p>
<p>Using filesort<br />
看 到这个的时候，查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来 排序全部行</p>
<p>Using index<br />
列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的，这发生在对表 的全部的请求列都是同一个索引的部分的时候</p>
<p>Using temporary<br />
看到这个的时候，查询需要优化了。这 里，MYSQL需要创建一个临时表来存储结果，这通常发生在对不同的列集进行ORDER BY上，而不是GROUP BY上</p>
<p>Using  where<br />
使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行，并且连接类型ALL或index， 这就会发生，或者是查询有问题</p></blockquote>
<p>其他一些Tip：</p>
<ol>
<li>当type 显示为 “index” 时，并且Extra显示为“Using Index”， 表明使用了覆盖索引。</li>
</ol>
<p>推荐阅读：<br />
Mysql Explain 详解(强烈推荐，带例子)：http://www.cnitblog.com/aliyiyi08/archive/2008/09/09/48878.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/04/1012-week-subject-%e2%80%93-mysql-explain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[10/11周主题] – 微博</title>
		<link>http://www.quanlei.com/2010/04/1011-week-subject-microblog/</link>
		<comments>http://www.quanlei.com/2010/04/1011-week-subject-microblog/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 11:04:34 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[周主题]]></category>
		<category><![CDATA[微博]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1307</guid>
		<description><![CDATA[最近比较懒，写东西的欲望很低，但是没办法，周主题是自己给自己下的套，不能不钻！这几天把没补上的周主题给补上，以后周主题尽量按时完成。 本周主题&#8211;微博 最近应该说是微博产品大爆发了，自从Twitter推出来之后，微博产品在国内就开始火起来，最初最火的饭否因为某某事件到现在没了音信，做啥，嘀咕等目前看似也活得不太好，新浪围脖倒是成为目前微博在国内的代名词了，人气很旺，加上这几天网易微博发布了，搜狐微博也公测完毕了，腾讯微博还在内测，凤凰网微博也还在内测，人民网微博自从上次敏感词事件后关注的少了，其他还有很多&#8230;，总之以后微博将会遍地开花，使用的方式也各种各样，手机，Email，即时通讯工具等都可以方便的发布。 OK，说了这么多微博了，我们开始进入主题 &#8211; 微博，从几个微博的特点来入手，认识一下微博和它们的不同。 Twitter 作为微博的鼻祖，也是世界上目前使用人数最多的微博之一，Twitter更注重信息的传播，我喊了一嗓子，其他关注我的人可以看到，对于我喊的内容能够得到多少反馈，Twitter并不关注，ReTweet，俗称转发，Twitter原始转发只是把你想转发的内容转发一份出去，所有follow你的人都会看到，原作者并不知道。网友发明的RT，其实就是利用@。 新浪微博 在国内新浪微博做的应该说还算很不错，拓展了对微博的认识，比较典型的是转发和评论，也是实用最多的两个功能，有人说这两个功能有些重叠，个人看并不是这样的，转发一条微博，微博原作者会知道，follow你的粉丝也会看到，但是评论就只有微博原作者会知道，这是微博交互的两个不同途径，让用户有更多的选择。 搜狐微博 微博一般都是限制字数的，140貌似是默认的，网易整出来一个163个字数限制那是因为网易163，可搜狐微博不限制内容长度了，这是个进步还是走偏了方向，定位不准，这里不好说，短小而精悍有好处，但是有时候短小并不能表达想要表达的，估计这是搜狐微博不限制内容长度的一个初衷。 搜狐微博另一个特点是让微博和新闻连接起来，这有点像新闻评论，但是这比新闻评论更具传播性和互动性，你对一个新闻的评论可能会在你的粉丝里面引起更多的评论。 搜狐微博还有一个小功能就是加入了最近访客，进一步增强了互动。 看到这里，想必你对微博比较混淆的功能有了清晰的认识。 其他微博功能大体上都和上面这些类似，腾讯微博据说有点像web版的QQ，没用过，这里也不敢乱说。 微博的发展，可以看做是社会的发展，你还记得互联网的发展吗？ 推进了多少社会的改革，我很清楚的记得这样一个情景：《南方人物周刊》回访，采访被推三阻四。而当地接待记者的宣传部长说出了：“以前没有网络的时候多好阿，想让他们怎么说就怎么说”。 呵呵，那我现在想对那个宣传部长说，如果微博普及了，那么每个人都可以说，而不光是记者了。]]></description>
			<content:encoded><![CDATA[<p>最近比较懒，写东西的欲望很低，但是没办法，周主题是自己给自己下的套，不能不钻！这几天把没补上的周主题给补上，以后周主题尽量按时完成。</p>
<h2>本周主题&#8211;微博</h2>
<p>最近应该说是微博产品大爆发了，自从Twitter推出来之后，微博产品在国内就开始火起来，最初最火的饭否因为某某事件到现在没了音信，做啥，嘀咕等目前看似也活得不太好，新浪围脖倒是成为目前微博在国内的代名词了，人气很旺，加上这几天网易微博发布了，搜狐微博也公测完毕了，腾讯微博还在内测，凤凰网微博也还在内测，人民网微博自从上次敏感词事件后关注的少了，其他还有很多&#8230;，总之以后微博将会遍地开花，使用的方式也各种各样，手机，Email，即时通讯工具等都可以方便的发布。</p>
<p>OK，说了这么多微博了，我们开始进入主题 &#8211; 微博，从几个微博的特点来入手，认识一下微博和它们的不同。</p>
<h3>Twitter</h3>
<blockquote><p>作为微博的鼻祖，也是世界上目前使用人数最多的微博之一，Twitter更注重信息的传播，我喊了一嗓子，其他关注我的人可以看到，对于我喊的内容能够得到多少反馈，Twitter并不关注，ReTweet，俗称转发，Twitter原始转发只是把你想转发的内容转发一份出去，所有follow你的人都会看到，原作者并不知道。网友发明的RT，其实就是利用@。</p></blockquote>
<h3>新浪微博</h3>
<blockquote><p>在国内新浪微博做的应该说还算很不错，拓展了对微博的认识，比较典型的是转发和评论，也是实用最多的两个功能，有人说这两个功能有些重叠，个人看并不是这样的，转发一条微博，微博原作者会知道，follow你的粉丝也会看到，但是评论就只有微博原作者会知道，这是微博交互的两个不同途径，让用户有更多的选择。</p></blockquote>
<h3>搜狐微博</h3>
<blockquote><p>微博一般都是限制字数的，140貌似是默认的，网易整出来一个163个字数限制那是因为网易163，可搜狐微博不限制内容长度了，这是个进步还是走偏了方向，定位不准，这里不好说，短小而精悍有好处，但是有时候短小并不能表达想要表达的，估计这是搜狐微博不限制内容长度的一个初衷。</p>
<p>搜狐微博另一个特点是让微博和新闻连接起来，这有点像新闻评论，但是这比新闻评论更具传播性和互动性，你对一个新闻的评论可能会在你的粉丝里面引起更多的评论。</p>
<p>搜狐微博还有一个小功能就是加入了最近访客，进一步增强了互动。</p></blockquote>
<p><span id="more-1307"></span><br />
看到这里，想必你对微博比较混淆的功能有了清晰的认识。</p>
<p>其他微博功能大体上都和上面这些类似，腾讯微博据说有点像web版的QQ，没用过，这里也不敢乱说。</p>
<p>微博的发展，可以看做是社会的发展，你还记得互联网的发展吗？ 推进了多少社会的改革，我很清楚的记得这样一个情景：《南方人物周刊》回访，采访被推三阻四。而当地接待记者的宣传部长说出了：“以前没有网络的时候多好阿，想让他们怎么说就怎么说”。</p>
<p>呵呵，那我现在想对那个宣传部长说，如果微博普及了，那么每个人都可以说，而不光是记者了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/04/1011-week-subject-microblog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[10/10周主题] – 正则表达式</title>
		<link>http://www.quanlei.com/2010/04/1010-week-subject-regex/</link>
		<comments>http://www.quanlei.com/2010/04/1010-week-subject-regex/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 11:25:55 +0000</pubDate>
		<dc:creator>小权</dc:creator>
				<category><![CDATA[周主题]]></category>
		<category><![CDATA[编程相关]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://www.quanlei.com/?p=1305</guid>
		<description><![CDATA[和程序打交道的朋友，工作中很难避免不使用正则表达式，因为它可以很大程度上简化复杂和繁琐的字符串处理工作，关于正则表达式，wikimedia上是这样解释的：一个正则表达式通常被称为一个模式 (pattern)，为用来描述或者匹配一系列符合某个句法规则的字符串。详细介绍参见这里：正则表达式 本周主题：正则表达式 首先介绍一个不错的正则表达式入门教程：《正则表达式30分钟入门教程》，即使你之前没接触过，也可以很容易入门应用。当然实际看下来肯定不止30分钟了，这篇文章作者几经修正浓缩了一些精华，让想接触的朋友更好的入门和使用，特别推荐。 另外推荐使用的是正则表达式验证工具：REGex TESTER &#160;http://www.regextester.com/ ， 随时可以将写好的正则表达式进行在线实时验证。 正则表达式说起来有不少使用方法，但是平常使用的正则表达式还是稍微比较简单，大部分都属于验证框架 或者 服务器上面的一些rewrite规则使用。 下面就整理和收集了一些常用的正则表达式，以备不时之需。 Validate 框架相关 1、匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 2、匹配网址URL的正则表达式：[a-zA-z]+://[^\s]* 3、匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 4、匹配国内电话号码(这个表达式可以匹配几种格式的电话号码，像(010)88886666，或022-22334455，或02912345678等)： \(?0\d{2}[) -]?\d{8} 5、匹配IP地址：((2[0-4]\d&#124;25[0-5]&#124;[01]?\d\d?)\.){3}(2[0-4]\d&#124;25[0-5]&#124;[01]?\d\d?) 6、匹配身份证：\d{15}&#124;\d{18} 7、用户名可使用中文、英文字母(区分大小写)、数字或部分特殊字符(. _ &#8211; @)，长度为4~20个字符：/^[\u4e00-\u9fa5A-Za-z0-9\_\-\.@]$/ig 服务器Rewrite相关 1、 RewriteEngine on RewriteCond %{HTTP_HOST} ^quanlei.com [NC] RewriteRule ^(.*) http://www.quanlei.com/ [L] 2、 同时达到下面两个要求： 1.用http://www.zzz.com/xxx.php 来访问 http://www.zzz.com/xxx/ 2.用http://yyy.zzz.com 来访问 http://www.zzz.com/user.php?username=yyy 的功能 RewriteEngine On RewriteCond %{HTTP_HOST} ^www.zzz.com RewriteCond %{REQUEST_URI} [...]]]></description>
			<content:encoded><![CDATA[<p>和程序打交道的朋友，工作中很难避免不使用正则表达式，因为它可以很大程度上简化复杂和繁琐的字符串处理工作，关于正则表达式，wikimedia上是这样解释的：一个正则表达式通常被称为一个<span mce_name="em" mce_style="font-style: italic;" style="font-style: italic;" class="Apple-style-span">模式 (pattern)</span>，为用来描述或者匹配一系列符合某个<a title="句法" href="http://zh.wikipedia.org/zh-cn/%E5%8F%A5%E6%B3%95" mce_href="http://zh.wikipedia.org/zh-cn/%E5%8F%A5%E6%B3%95">句法</a>规则的<a title="字符串" href="http://zh.wikipedia.org/zh-cn/%E5%AD%97%E7%AC%A6%E4%B8%B2" mce_href="http://zh.wikipedia.org/zh-cn/%E5%AD%97%E7%AC%A6%E4%B8%B2">字符串</a>。详细介绍参见这里：<a href="http://zh.wikipedia.org/zh-cn/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F" mce_href="http://zh.wikipedia.org/zh-cn/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F">正则表达式</a></p>
<h2>本周主题：正则表达式</h2>
<p>首先介绍一个不错的正则表达式入门教程：《<a href="http://deerchao.net/tutorials/regex/regex.htm" mce_href="http://deerchao.net/tutorials/regex/regex.htm">正则表达式30分钟入门教程</a>》，即使你之前没接触过，也可以很容易入门应用。当然实际看下来肯定不止30分钟了，这篇文章作者几经修正浓缩了一些精华，让想接触的朋友更好的入门和使用，特别推荐。</p>
<p>另外推荐使用的是正则表达式验证工具：REGex TESTER &nbsp;<a href="http://www.regextester.com/" mce_href="http://www.regextester.com/">http://www.regextester.com/</a> ， 随时可以将写好的正则表达式进行在线实时验证。</p>
<p>正则表达式说起来有不少使用方法，但是平常使用的正则表达式还是稍微比较简单，大部分都属于验证框架 或者 服务器上面的一些rewrite规则使用。</p>
<p>下面就整理和收集了一些常用的正则表达式，以备不时之需。</p>
<p>Validate 框架相关</p>
<p>1、匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*</p>
<p>2、匹配网址URL的正则表达式：[a-zA-z]+://[^\s]*</p>
<p>3、匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$</p>
<p>4、匹配国内电话号码(这个表达式可以匹配几种格式的电话号码，像(010)88886666，或022-22334455，或02912345678等)： \(?0\d{2}[) -]?\d{8}</p>
<p>5、匹配IP地址：((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)</p>
<p>6、匹配身份证：\d{15}|\d{18}</p>
<p>7、用户名可使用中文、英文字母(区分大小写)、数字或部分特殊字符(. _ &#8211; @)，长度为4~20个字符：/^[\u4e00-\u9fa5A-Za-z0-9\_\-\.@]$/ig</p>
<p><span id="more-1305"></span></p>
<p>服务器Rewrite相关</p>
<p>1、<br />
RewriteEngine on<br />
RewriteCond %{HTTP_HOST} ^quanlei.com [NC]<br />
RewriteRule ^(.*) http://www.quanlei.com/ [L]</p>
<p>2、<br />
同时达到下面两个要求：<br />
1.用http://www.zzz.com/xxx.php 来访问 http://www.zzz.com/xxx/<br />
2.用http://yyy.zzz.com 来访问 http://www.zzz.com/user.php?username=yyy 的功能<br />
RewriteEngine On<br />
RewriteCond %{HTTP_HOST} ^www.zzz.com<br />
RewriteCond %{REQUEST_URI} !^user.php$<br />
RewriteCond %{REQUEST_URI} .php$<br />
RewriteRule (.*).php$ http://www.zzz.com/$1/ [R]<br />
RewriteCond %{HTTP_HOST} !^www.zzz.com<br />
RewriteRule ^(.+) %{HTTP_HOST} [C]<br />
RewriteRule ^([^.]+).zzz.com http://www.zzz.com/user.php?username=$1<br />
例子二：<br />
/type.php?typeid=* –&gt; /type*.html<br />
/type.php?typeid=*&amp;page=* –&gt; /type*page*.html<br />
RewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT]<br />
RewriteRule ^/type([0-9]+)page([0-9]+).html$ /type.php?typeid=$1&amp;page=$2 [PT]</p>
<p></p>
<p>相关资料：</p>
<p>1、<a href="http://faq.comsenz.com/?action-viewnews-itemid-12" mce_href="http://faq.comsenz.com/?action-viewnews-itemid-12">http://faq.comsenz.com/?action-viewnews-itemid-12</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.quanlei.com/2010/04/1010-week-subject-regex/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
