<?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>Smart Testing &#187; sam</title>
	<atom:link href="http://www.hiadmin.org/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hiadmin.org</link>
	<description>专注于软件测试领域的技术讨论和研究、关注IT互联网、WordPress技巧的个人博客</description>
	<lastBuildDate>Thu, 15 Dec 2011 04:20:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Wireshark抓取网站弱口令和捕获FTP账号密码</title>
		<link>http://www.hiadmin.org/testing/wireshark-capture-password/</link>
		<comments>http://www.hiadmin.org/testing/wireshark-capture-password/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 12:18:02 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[软件测试]]></category>
		<category><![CDATA[wireshark]]></category>
		<category><![CDATA[捕获弱口令]]></category>

		<guid isPermaLink="false">http://www.hiadmin.org/?p=1571</guid>
		<description><![CDATA[看到那么的朋友要求写一章关于wireshark数据分析的文章、这次压力忒大、今天终于空下来有时间写这方面的内容。 

Wireshark本身是不能破解弱口令的、但是我们可以通过分析抓取到数据进行人工破解呗。 

今天我就用我的Smart Testing博客和FTP来做下实验了(账号密码都是新建也没啥权限、各位就不要也用这个了)。 

一：用wireshark抓取网站登录弱口令 
二：用wireshark抓取FTP的账号和密码 <a href="http://www.hiadmin.org/testing/wireshark-capture-password/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>看到那么的朋友要求写一章关于wireshark数据分析的文章、这次压力忒大、今天终于空下来有时间写这方面的内容。</p>
<p>Wireshark本身是不能破解弱口令的、但是我们可以通过分析抓取到数据进行人工破解呗。</p>
<p>今天我就用我的Smart Testing博客和FTP来做下实验了(账号密码都是新建也没啥权限、各位就不要也用这个了)。</p>
<h4>一：用wireshark抓取网站登录弱口令</h4>
<p><span id="more-1571"></span></p>
<h4></h4>
<p>1、 第一步我们设置捕获过滤器(这次我们抓取的是http的数据包、所有在捕获过滤器里面输入http就可以了)</p>
<p>2、 点击开始之后打开我的博客地址(<a href="http://www.hiadmin.org">http://www.hiadmin.org</a>)并点击登录、来到<a href="http://www.hiadmin.org/wp-login.php">http://www.hiadmin.org/wp-login.php</a>页面、输入用户名和密码之后点击登录即可。</p>
<p>3、 登录完成之后我们就可以结束wireshark的捕获过程了。</p>
<p>4、 然后我们设置下显示过滤器:使用ip.addr == 203.171.239.103 这个是我博客服务器的IP地址、这样可以减少不少的http的数据。(你可以通过在cmd下使用ping命令获取到你的网站的ip地址)</p>
<div id="attachment_1575" class="wp-caption aligncenter" style="width: 579px"><a href="http://www.hiadmin.org/wp-content/uploads/2011/12/Wireshark-display-filter.jpg"><img class="size-full wp-image-1575" title="Wireshark显示过滤器" src="http://www.hiadmin.org/wp-content/uploads/2011/12/Wireshark-display-filter.jpg" alt="" width="569" height="229" /></a><p class="wp-caption-text">Wireshark显示过滤器</p></div>
<p>5、 过滤之后我们查找有/wp-login.php字样的数据(wp-login.php是我博客的后台登录页面地址)。</p>
<p>6、 查看所有/wp-login.php的数据、其实里面一共就2条、我们在第二条数据中捕获到了(log=huaisha&amp;pwd=279478776&amp;wp-submit=)这样的这样、看到没有这就是我的账号和密码了(user:huaisha/pwd:279478776)</p>
<p>当然如果用户的密码很复杂的话基本上这样就获取到得密码是不对的、所以是只能获取弱口令。</p>
<div id="attachment_1582" class="wp-caption aligncenter" style="width: 576px"><a href="http://www.hiadmin.org/wp-content/uploads/2011/12/user-password1.jpg"><img class="size-full wp-image-1582" title="wireshark捕获的账号密码" src="http://www.hiadmin.org/wp-content/uploads/2011/12/user-password1.jpg" alt="" width="566" height="272" /></a><p class="wp-caption-text">wireshark捕获的账号密码</p></div>
<h4>二：用wireshark抓取FTP的账号和密码</h4>
<p>同样的使用上面的方式我们来抓取FTP的账号密码、在抓取FTP账号密码的时候可不是针对弱口令的、只要你能抓取到FTP得数据那么就能得到FTP的账号和密码。</p>
<p>操作</p>
<p>1、 设置捕获过滤器仅仅抓取ftp的数据包</p>
<p>2、 开启ftp工具登录你的FTP服务器</p>
<p>3、 然后结束捕获过程</p>
<p>4、 在设置显示过滤器(ip.addr == 192.168.9.1 你的FTP地址)</p>
<p>5、 然后我们就会发现FTP的账号和密码居然是明文显示的、爽吧。</p>
<p><a href="http://www.hiadmin.org/wp-content/uploads/2011/12/FTP-password.jpg"><img class="aligncenter size-full wp-image-1584" title="wireshark获取到FTP账号密码" src="http://www.hiadmin.org/wp-content/uploads/2011/12/FTP-password.jpg" alt="" width="567" height="202" /></a></p>
<h2  class="related_post_title">你可能也会喜欢这些文字</h2><ul class="related_post"><li><a href="http://www.hiadmin.org/testing/wireshark-displayfilters/" title="Wireshark之显示过滤器">Wireshark之显示过滤器</a> (15)</li><li><a href="http://www.hiadmin.org/testing/wireshark/" title="网络抓包工具之Wireshark">网络抓包工具之Wireshark</a> (11)</li><li><a href="http://www.hiadmin.org/testing/cs-bs/" title="软件测试之C/S B/S">软件测试之C/S B/S</a> (8)</li><li><a href="http://www.hiadmin.org/testing/testing-bug/" title="软件测试笔记-BUG的定义">软件测试笔记-BUG的定义</a> (2)</li><li><a href="http://www.hiadmin.org/testing/testing-policy/" title="软件测试笔记-测试策略">软件测试笔记-测试策略</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hiadmin.org/testing/wireshark-capture-password/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Wireshark之显示过滤器</title>
		<link>http://www.hiadmin.org/testing/wireshark-displayfilters/</link>
		<comments>http://www.hiadmin.org/testing/wireshark-displayfilters/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 08:38:57 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[软件测试]]></category>
		<category><![CDATA[DisplayFilters]]></category>
		<category><![CDATA[wireshark]]></category>

		<guid isPermaLink="false">http://www.hiadmin.org/testing/wireshark-displayfilters/</guid>
		<description><![CDATA[前面我介绍过如何使用Wireshark抓取需要的数据包,但是当抓取的数据包日志越来越大的时候一行一行的看、也是一个很大的工作量、这个时候我们就需要用到显示过滤器了。

显示过滤器（DisplayFilters）：在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随意修改。

捕捉过滤器（CaptureFilters）：用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。我之前文章里面讲解的如何抓取数据包就是用到捕捉过滤器。



那么我们应该使用哪一种过滤器呢？

两种过滤器的目的是不同的。
捕捉过滤器是数据经过的第一层过滤器，它用于控制捕捉数据的数量，以避免产生过大的日志文件。
显示过滤器是一种更为强大（复杂）的过滤器。它允许您在日志文件中迅速准确地找到所需要的记录。 <a href="http://www.hiadmin.org/testing/wireshark-displayfilters/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>前面我介绍过如何使用Wireshark抓取需要的数据包,但是当抓取的数据包日志越来越大的时候一行一行的看、也是一个很大的工作量、这个时候我们就需要用到显示过滤器了。  </p>
<p><b>显示过滤器</b>（DisplayFilters）：在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随意修改。  </p>
<p><b>捕捉过滤器</b>（CaptureFilters）：用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。我之前文章里面讲解的如何抓取数据包就是用到捕捉过滤器。</p>
<p><span id="more-1567"></span>
<p>那么我们应该使用哪一种过滤器呢？  </p>
<p>两种过滤器的目的是不同的。<br />捕捉过滤器是数据经过的第一层过滤器，它用于控制捕捉数据的数量，以避免产生过大的日志文件。<br />显示过滤器是一种更为强大（复杂）的过滤器。它允许您在日志文件中迅速准确地找到所需要的记录。<br />
<h4>显示过滤器</h4>
</p>
<p><b></b><br />
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<p>语法：</p>
</td>
<td>
<p>Protocol</p>
</td>
<td>
<p>.</p>
</td>
<td>
<p>String 1</p>
</td>
<td>
<p>.</p>
</td>
<td>
<p>String 2</p>
</td>
<td>
<p>Comparison<br />operator</p>
</td>
<td>
<p>Value</p>
</td>
<td>
<p>Logical<br />Operations</p>
</td>
<td>
<p>Other<br />expression</p>
</td>
</tr>
<tr>
<td>
<p>例子：</p>
</td>
<td>
<p>ftp</p>
</td>
<td>&nbsp;</td>
<td>
<p>passive</p>
</td>
<td>&nbsp;</td>
<td>
<p>ip</p>
</td>
<td>
<p>==</p>
</td>
<td>
<p>10.2.3.4</p>
</td>
<td>
<p>xor</p>
</td>
<td>
<p>icmp.type</p>
</td>
</tr>
</tbody>
</table>
<p>例子：<br />
<table border="0" cellpadding="0">
<tbody>
<tr>
<td>
<p>snmp || dns || icmp</p>
</td>
<td>
<p>显示SNMP或DNS或ICMP封包。</p>
</td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0">
<tbody>
<tr>
<td>
<p>ip.addr == 192.168.10.10</p>
</td>
</tr>
</tbody>
</table>
<p>显示来源或目的IP地址为192.168.10.10的封包。<br />
<table border="0" cellpadding="0">
<tbody>
<tr>
<td>
<p>ip.src != 10.1.2.3 or ip.dst != 10.4.5.6</p>
</td>
</tr>
</tbody>
</table>
<p>显示来源不为10.1.2.3或者目的不为10.4.5.6的封包。<br />换句话说，显示的封包将会为：<br />来源IP：除了10.1.2.3以外任意；目的IP：任意<br />以及<br />来源IP：任意；目的IP：除了10.4.5.6以外任意<br />
<table border="0" cellpadding="0">
<tbody>
<tr>
<td>
<p>ip.src != 10.1.2.3 and ip.dst != 10.4.5.6</p>
</td>
</tr>
</tbody>
</table>
<p>显示来源不为10.1.2.3并且目的IP不为10.4.5.6的封包。<br />换句话说，显示的封包将会为：<br />来源IP：除了10.1.2.3以外任意；同时须满足，目的IP：除了10.4.5.6以外任意<br />
<table border="0" cellpadding="0">
<tbody>
<tr>
<td>
<p>tcp.port == 25</p>
</td>
<td>
<p>显示来源或目的TCP端口号为25的封包。</p>
</td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0">
<tbody>
<tr>
<td>
<p>tcp.dstport == 25</p>
</td>
<td>
<p>显示目的TCP端口号为25的封包。</p>
</td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0">
<tbody>
<tr>
<td>
<p>tcp.flags</p>
</td>
<td>
<p>显示包含TCP标志的封包。</p>
</td>
</tr>
</tbody>
</table>
<table border="0" cellpadding="0">
<tbody>
<tr>
<td>
<p>tcp.flags.syn == 0×02</p>
</td>
<td>
<p>显示包含TCP SYN标志的封包。</p>
</td>
</tr>
</tbody>
</table>
<p>如果过滤器的语法是正确的，表达式的背景呈绿色。如果呈红色，说明表达式有误。  </p>
<p><b>可以使用6种比较运算符：</b><br />
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<p>英文写法：</p>
</td>
<td>
<p>C语言写法：</p>
</td>
<td>
<p>含义：</p>
</td>
</tr>
<tr>
<td>
<p>eq</p>
</td>
<td>
<p>==</p>
</td>
<td>
<p>等于</p>
</td>
</tr>
<tr>
<td>
<p>ne</p>
</td>
<td>
<p>!=</p>
</td>
<td>
<p>不等于</p>
</td>
</tr>
<tr>
<td>
<p>gt</p>
</td>
<td>
<p>&gt; </p>
</td>
<td>
<p>大于</p>
</td>
</tr>
<tr>
<td>
<p>lt</p>
</td>
<td>
<p>&lt; </p>
</td>
<td>
<p>小于</p>
</td>
</tr>
<tr>
<td>
<p>ge</p>
</td>
<td>
<p>&gt;=</p>
</td>
<td>
<p>大于等于</p>
</td>
</tr>
<tr>
<td>
<p>le</p>
</td>
<td>
<p>&lt;=</p>
</td>
<td>
<p>小于等于</p>
</td>
</tr>
</tbody>
</table>
<p>Logical expressions（逻辑运算符）:<br />
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<p>英文写法：</p>
</td>
<td>
<p>C语言写法：</p>
</td>
<td>
<p>含义：</p>
</td>
</tr>
<tr>
<td>
<p>and</p>
</td>
<td>
<p>&amp;&amp;</p>
</td>
<td>
<p>逻辑与</p>
</td>
</tr>
<tr>
<td>
<p>or</p>
</td>
<td>
<p>||</p>
</td>
<td>
<p>逻辑或</p>
</td>
</tr>
<tr>
<td>
<p>xor</p>
</td>
<td>
<p>^^</p>
</td>
<td>
<p>逻辑异或</p>
</td>
</tr>
<tr>
<td>
<p>not</p>
</td>
<td>
<p>!</p>
</td>
<td>
<p>逻辑非</p>
</td>
</tr>
</tbody>
</table>
<h2  class="related_post_title">你可能也会喜欢这些文字</h2><ul class="related_post"><li><a href="http://www.hiadmin.org/testing/wireshark-capture-password/" title="Wireshark抓取网站弱口令和捕获FTP账号密码">Wireshark抓取网站弱口令和捕获FTP账号密码</a> (14)</li><li><a href="http://www.hiadmin.org/testing/wireshark/" title="网络抓包工具之Wireshark">网络抓包工具之Wireshark</a> (11)</li><li><a href="http://www.hiadmin.org/testing/cs-bs/" title="软件测试之C/S B/S">软件测试之C/S B/S</a> (8)</li><li><a href="http://www.hiadmin.org/testing/testing-bug/" title="软件测试笔记-BUG的定义">软件测试笔记-BUG的定义</a> (2)</li><li><a href="http://www.hiadmin.org/testing/testing-policy/" title="软件测试笔记-测试策略">软件测试笔记-测试策略</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hiadmin.org/testing/wireshark-displayfilters/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>网络抓包工具之Wireshark</title>
		<link>http://www.hiadmin.org/testing/wireshark/</link>
		<comments>http://www.hiadmin.org/testing/wireshark/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 14:11:04 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[软件测试]]></category>
		<category><![CDATA[wireshark]]></category>
		<category><![CDATA[抓包工具]]></category>
		<category><![CDATA[网络分析]]></category>

		<guid isPermaLink="false">http://www.hiadmin.org/testing/wireshark/</guid>
		<description><![CDATA[如果你需要知道和你QQ聊天对面人在那个城市，你想知道从你在浏览器中输入域名开始到你看到内容这段时间网络中都做了哪些事情、甚至是你想知道TCP三次握手的详细过程、当然你也可以想知道登陆FTP的密码、那么我都可以使用Wireshark网络分析器来实现。 

Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据，并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样，Wireshark也使用pcap network library来进行封包捕捉，wireshark的原名是Ethereal，由于商标问题修改为现在的Wireshark。


  

所有和网络活动有关的都可以通过Wireshark来抓取数据包进行网络分析、在我从事测试工作中经常会用到Wireshark来分析抓包分析问题，虽然到目前为止对Wireshark还不精通但是这并不影响我对Wireshark的热爱。 <a href="http://www.hiadmin.org/testing/wireshark/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>如果你需要知道和你QQ聊天对面人在那个城市，你想知道从你在浏览器中输入域名开始到你看到内容这段时间网络中都做了哪些事情、甚至是你想知道TCP三次握手的详细过程、当然你也可以想知道登陆FTP的密码、那么我都可以使用Wireshark网络分析器来实现。  </p>
<p>Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据，并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样，Wireshark也使用pcap network library来进行封包捕捉，wireshark的原名是Ethereal，由于商标问题修改为现在的Wireshark。</p>
<p><span id="more-1566"></span>
<p>&nbsp; </p>
<p>所有和网络活动有关的都可以通过Wireshark来抓取数据包进行网络分析、在我从事测试工作中经常会用到Wireshark来分析抓包分析问题，虽然到目前为止对Wireshark还不精通但是这并不影响我对Wireshark的热爱。<br />
<h4>Wireshark使用说明：</h4>
</p>
<p><strong>Protocol（协议)</strong><br />可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.<br />如果没有特别指明是什么协议，则默认使用所有支持的协议。  </p>
<p><strong>Direction（方向)</strong><br />可能的值: src, dst, src and dst, src or dst<br />如果没有特别指明来源或目的地，则默认使用 “src or dst” 作为关键字。<br />例如，”host 192.168.10.1&#8243;与”src or dst host 192.168.10.1&#8243;是一样的。<br /><strong>Host(s):</strong><br />可能的值： net, port, host, portrange.<br />如果没有指定此值，则默认使用”host”关键字。<br />例如，”src 192.168.10.10&#8243;与”src host 192.168.10.10&#8243;相同。  </p>
<p><strong>Logical Operations（逻辑运算）:<br /></strong>可能的值：not, and, or.<br />否(“not”)具有最高的优先级。或(“or”)和与(“and”)具有相同的优先级，运算时从左至右进行。<br />例如，<br />“not tcp port 3128 and tcp port 23&#8243;与”(not tcp port 3128) and tcp port 23&#8243;相同。<br />“not tcp port 3128 and tcp port 23&#8243;与”not (tcp port 3128 and tcp port 23)”不同。  </p>
<p>例子：  </p>
<p>capture捉包：  </p>
<p>tcp dst port 21&nbsp; 显示目的TCP端口为21的封包。  </p>
<p>ip src host 192.168.10.30&nbsp; 显示来源IP地址为192.168.10.30&nbsp; 的封包。  </p>
<p>host 192.168.10.30&nbsp;&nbsp;&nbsp; 显示目的或来源IP地址为192.168.10.30&nbsp; 的封包。  </p>
<p>src portrange 2000-2500&nbsp; 显示来源为UDP或TCP，并且端口号在2000至2500范围内的封包。  </p>
<p>not imcp&nbsp; 显示除了icmp以外的所有封包。（icmp通常被ping工具使用）  </p>
<p>src host 10.7.2.12 and not dst net 192.168.30.0/24&nbsp; 显示来源IP地址为10.7.2.12，但目的地不是192.168.30.0/24的封包。  </p>
<p>(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8 <br />显示来源IP为10.4.1.12或者来源网络为10.6.0.0/16，目的地TCP端口号在200至10000之间，并且目的位于网络10.0.0.0/8内的所有封包。<br />
<h4>注意事项：</h4>
</p>
<p>当使用关键字作为值时，需使用反斜杠“”。<br />“ether proto ip” (与关键字”ip”相同).<br />这样写将会以IP协议作为目标。  </p>
<p>“ip proto icmp” (与关键字”icmp”相同).<br />这样写将会以ping工具常用的icmp作为目标。  </p>
<p>可以在”ip”或”ether”后面使用”multicast”及”broadcast”关键字。<br />当您想排除广播请求时，”no broadcast”就会非常有用。</p>
<h2  class="related_post_title">你可能也会喜欢这些文字</h2><ul class="related_post"><li><a href="http://www.hiadmin.org/testing/wireshark-capture-password/" title="Wireshark抓取网站弱口令和捕获FTP账号密码">Wireshark抓取网站弱口令和捕获FTP账号密码</a> (14)</li><li><a href="http://www.hiadmin.org/testing/wireshark-displayfilters/" title="Wireshark之显示过滤器">Wireshark之显示过滤器</a> (15)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hiadmin.org/testing/wireshark/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>为Vim配置python的代码检查功能</title>
		<link>http://www.hiadmin.org/code/vim-pyflakes/</link>
		<comments>http://www.hiadmin.org/code/vim-pyflakes/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 14:00:04 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[开发coding]]></category>
		<category><![CDATA[pyflakes]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[Vim代码检查]]></category>

		<guid isPermaLink="false">http://www.hiadmin.org/code/vim-pyflakes/</guid>
		<description><![CDATA[如果你用Eric在你写完代码之后就会有代码错误检查的功能，如果你用法Python自带的IDLE，那么在按F5运行之后如果出现错误也会直接定位到错误的代码行上，但是如果你像我这样也用Vim来作为Python的IDE编辑器的话就需要安装pyflakes插件来实现代码检查功能。 <a href="http://www.hiadmin.org/code/vim-pyflakes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><font size="2">如果你用Eric在你写完代码之后就会有代码错误检查的功能，如果你用法Python自带的IDLE，那么在按F5运行之后如果出现错误也会直接定位到错误的代码行上，但是如果你像我这样也用Vim来作为Python的IDE编辑器的话就需要安装pyflakes插件来实现代码检查功能。</font></p>
<p><span id="more-1555"></span>
<p><font size="2">1、访问：</font><a href="http://www.vim.org/scripts/script.php?script_id=2441" target="_blank"><font size="2">pyflakes网站</font></a><font size="2">，下载pyflakes</font>  </p>
<p><font size="2">2、在Vim目录下的的Vim\vimfiles\ftplugin目录下新建一个python目录(我用的是Gvim)。</font>  </p>
<p><font size="2">3、将</font><a href="http://www.vim.org/scripts/script.php?script_id=2441"><font size="2">pyflakes</font></a><font size="2">解压缩后把pyflakes.vim文件和pyflakes目录拷贝套ftplugin\python目录中。</font>  </p>
<p><font size="2">4、打开一个有问题的python源代码文件，执行命令:cc，即可进行代码检查。</font>  </p>
<p><font size="2">用pyflakes的的介绍来结尾、简单不过如此，就是这样！</font></p>
<h2  class="related_post_title">你可能也会喜欢这些文字</h2><ul class="related_post"><li><a href="http://www.hiadmin.org/code/python-vim/" title="Vim配置python开发环境">Vim配置python开发环境</a> (8)</li><li><a href="http://www.hiadmin.org/blog-seo/sae-python/" title="新浪SAE开始支持Python">新浪SAE开始支持Python</a> (5)</li><li><a href="http://www.hiadmin.org/code/python-eric-pyqt/" title="Eric+PyQt打造完美的Python集成开发环境">Eric+PyQt打造完美的Python集成开发环境</a> (10)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hiadmin.org/code/vim-pyflakes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>测试人员如何有效的提交BUG</title>
		<link>http://www.hiadmin.org/testing/software-bug/</link>
		<comments>http://www.hiadmin.org/testing/software-bug/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 03:04:08 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[软件测试]]></category>
		<category><![CDATA[software-bug]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[有效提交BUG]]></category>

		<guid isPermaLink="false">http://www.hiadmin.org/testing/software-bug/</guid>
		<description><![CDATA[软件测试人员遇到的第一节课就是如何有效的提交BUG，下面的文章不是专为软件测试人员所写，但是却是所有软件测试人员必读。在不同的公司对提交有效的BUG的标准不同、但是下面文章的内容却适合所有测试专业人员阅读、当然对于非测试人员也大有裨益。

引言
为公众写过软件的人，大概都收到过很拙劣的bug（计算机程序代码中的错误或程序运行时的瑕疵——译者注）报告，例如： 

在报告中说“不好用”； 

所报告内容毫无意义； <a href="http://www.hiadmin.org/testing/software-bug/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>软件测试人员遇到的第一节课就是如何有效的提交BUG，下面的文章不是专为软件测试人员所写，但是却是所有软件测试人员必读。在不同的公司对提交有效的BUG的标准不同、但是下面文章的内容却适合所有测试专业人员阅读、当然对于非测试人员也大有裨益。</p>
<h5><a name="intro"></a>引言</h5>
<p>为公众写过软件的人，大概都收到过很拙劣的bug（计算机程序代码中的错误或程序运行时的瑕疵——译者注）报告，例如：</p>
<p><span id="more-1549"></span></p>
<p>在报告中说“不好用”；</p>
<p>所报告内容毫无意义；</p>
<p>在报告中用户没有提供足够的信息；</p>
<p>在报告中提供了<em>错误</em>信息；</p>
<p>所报告的问题是由于用户的过失而产生的；</p>
<p>所报告的问题是由于其他程序的错误而产生的；</p>
<p>所报告的问题是由于网络错误而产生的；</p>
<p>这便是为什么“技术支持”被认为是一件可怕的工作，因为有拙劣的bug报告需要处理。然而并不是所有的bug报告都令人生厌：我在业余时间维护自由软件，有时我会收到非常清晰、有帮助并且<em>“有内容”</em>的bug报告。</p>
<p>在这里我会尽力阐明如何写一个好的bug报告。我非常希望每一个人在报告bug之前都读一下这篇短文，当然我也希望用户在给<em>我</em>报告bug之前已经读过这篇文章。</p>
<p>简单地说，报告bug的目的是为了让程序员看到程序的错误。您可以亲自示范，也可以给出能导致程序出错的、详尽的操作步骤。如果程序出错了，程序员会收集额外的信息直到找到错误的原因；如果程序没有出错，那么他们会请您继续关注这个问题，收集相关的信息。</p>
<p>在bug报告里，要设法搞清什么是事实（例如：“我在电脑旁”和“XX出现了”）什么是推测（例如：“我<em>想</em>问题可能是出在……”）。如果愿意的话，您可以省去推测，但是千万别省略事实。</p>
<p>当您报告bug的时候（既然您已经这么做了），一定是希望bug得到及时修正。所以此时针对程序员的任何过激或亵渎的言语（甚至谩骂）都是与事无补的——因为这可能是程序员的错误，也有可能是您的错误，也许您有权对他们发火，但是如果您能多提供一些有用的信息（而不是激愤之词）或许bug会被更快的修正。除此以外，请记住：如果是免费软件，作者提供给我们已经是出于好心，所以要是太多的人对他们无礼，他们可能就要“收起”这份好心了。</p>
<h5><a name="respect"></a>“程序不好用”</h5>
<p>程序员不是弱智：如果程序一点都不好用，他们不可能不知道。他们不知道一定是因为程序在他们看来工作得很正常。所以，或者是您作过一些与他们不同的操作，或者是您的环境与他们不同。他们需要信息，报告bug也是为了提供信息。信息总是越多越好。</p>
<p>许多程序，特别是自由软件，会公布一个“已知bug列表”。如果您找到的bug在列表里已经有了，那就不必再报告了，但是如果您认为自己掌握的信息比列表中的丰富，那无论如何也要与程序员联系。您提供的信息可能会使他们更简单地修复bug。</p>
<p>本文中提到的都是一些指导方针，没有哪一条是必须恪守的准则。不同的程序员会喜欢不同形式的bug报告。如果程序附带了一套报告bug的准则，一定要读。如果它与本文中提到的规则相抵触，那么请以它为准。</p>
<p>如果您不是报告bug，而是寻求帮助，您应该说明您曾经到哪里找过答案，（例如：我看了第四章和第五章的第二节，但我找不到解决的办法。）这会使程序员了解用户喜欢到哪里去找答案，从而使程序员把帮助文档做得更容易使用。</p>
<h5><a name="showme"></a>“演示给我看”</h5>
<p>报告bug的最好的方法之一是“演示”给程序员看。让程序员站在电脑前，运行他们的程序，指出程序的错误。让他们看着您启动电脑、运行程序、如何进行操作以及程序对您的输入有何反应。</p>
<p>他们对自己写的软件了如指掌，他们知道哪些地方不会出问题，而哪些地方最可能出问题。他们本能地知道应该注意什么。在程序真的出错之前，他们可能已经注意到某些地方不对劲，这些都会给他们一些线索。他们会观察程序测试中的每一个<em>细节</em>，并且选出他们认为有用的信息。</p>
<p>这些可能还不够。也许他们觉得还需要更多的信息，会请您重复刚才的操作。他们可能在这期间需要与您交流一下，以便在他们需要的时候让bug重新出现。他们可能会改变一些操作，看看这个错误的产生是个别问题还是相关的一类问题。如果您不走运，他们可能需要坐下来，拿出一堆开发工具，花上几个小时来<em>好好地</em>研究一下。但是最重要的是在程序出错的时候让程序员在电脑旁。一旦他们看到了问题，他们通常会找到原因并开始试着修改。</p>
<h5><a name="showmehow"></a>“告诉我该怎么做”</h5>
<p>如今是网络时代，是信息交流的时代。我可以点一下鼠标把自己的程序送到俄罗斯的某个朋友那里，当然他也可以用同样简单的方法给我一些建议。但是如果我的程序出了什么问题，我<em>不可能</em>在他旁边。“演示”是很好的办法，但是常常做不到。</p>
<p>如果您必须报告bug，而此时程序员又不在您身边，那么您就要想办法让bug<em>重现</em>在他们面前。当他们亲眼看到错误时，就能够进行处理了。</p>
<p>确切地告诉程序员您做了些什么。如果是一个图形界面程序，告诉他们您按了哪个按钮，依照什么顺序按的。如果是一个命令行程序，精确的告诉他们您键入了什么命令。您应该尽可能详细地提供您所键入的命令和程序的反应。</p>
<p>把您能想到的所有的输入方式都告诉程序员，如果程序要读取一个文件，您可能需要发一个文件的拷贝给他们。如果程序需要通过网络与另一台电脑通讯，您或许不能把那台电脑复制过去，但至少可以说一下电脑的类型和安装了哪些软件（如果可以的话）。</p>
<h5><a name="discribe"></a>“哪儿出错了？在我看来一切正常哦！”</h5>
<p>如果您给了程序员一长串输入和指令，他们执行以后没有出现错误，那是因为您没有给他们足够的信息，可能错误不是在每台计算机上都出现，您的系统可能和他们的在某些地方不一样。有时候程序的行为可能和您预想的不一样，这也许是误会，但是您会认为程序出错了，程序员却认为这是对的。</p>
<p>同样也要描述发生了什么。精确的描述您看到了什么。告诉他们为什么您觉得自己所看到的是错误的，最好再告诉他们，您认为自己应该看到什么。如果您只是说：“程序出错了”，那您很可能漏掉了非常重要的信息。</p>
<p>如果您看到了错误消息，一定要仔细、准确的告诉程序员，这<em>确实</em>很重要。在这种情况下，程序员只要修正错误，而不用去找错误。他们需要知道是什么出问题了，系统所报的错误消息正好帮助了他们。如果您没有更好的方法记住这些消息，就把它们写下来。只报告“程序出了一个错”是毫无意义的，除非您把错误消息一块报上来。</p>
<p>特殊情况下，如果有错误消息号，<em>一定</em>要把这些号码告诉程序员。不要以为您看不出任何意义，它就没有意义。错误消息号包含了能被程序员读懂的各种信息，并且很有可能包含重要的线索。给错误消息编号是因为用语言描述计算机错误常常令人费解。用这种方式告诉您错误的所在是一个最好的办法。</p>
<p>在这种情形下，程序员的排错工作会十分高效。他们不知道发生了什么，也不可能到现场去观察，所以他们一直在搜寻有价值的线索。错误消息、错误消息号以及一些莫名其妙的延迟，都是很重要的线索，就像办案时的指纹一样重要，保存好。</p>
<p>如果您使用UNIX系统，程序可能会产生一个内核输出（coredump）。内核输出是特别有用的线索来源，别扔了它们。另一方面，大多数程序员不喜欢收到含有大量内核输出文件的EMAIL，所以在发邮件之前最好先问一下。还有一点要注意：内核输出文件记录了完整的程序状态，也就是说任何秘密（可能当时程序正在处理一些私人信息或秘密数据）都可能包含在内核输出文件里。</p>
<h5><a name="antelope"></a>“出了问题之后，我做了……”</h5>
<p>当一个错误或bug发生的时候，您可能会做许多事情。但是大多数人会使事情变的更糟。我的一个朋友在学校里误删了她所有的Word文件，在找人帮忙之前她重装了Word，又运行了一遍碎片整理程序，这些操作对于恢复文件是毫无益处的，因为这些操作搞乱了磁盘的文件区块。恐怕在这个世界上没有一种反删除软件能恢复她的文件了。如果她不做任何操作，或许还有一线希望。</p>
<p>这种用户仿佛一只被逼到墙角的鼬（黄鼠狼、紫貂一类的动物——译者注）：背靠墙壁，面对死亡的降临奋起反扑，疯狂攻击。他们认为做点什么总比什么都不做强。然而这些在处理计算机软件问题时并不适用。</p>
<p>不要做鼬，做一只羚羊。当一只羚羊面对料想不到的情况或受到惊吓时，它会一动不动，是为了不吸引任何注意，与此同时也在思考解决问题的最好办法（如果羚羊有一条技术支持热线，此时占线。）。然后，一旦它找到了最安全的行动方案，它便去做。</p>
<p>当程序出毛病的时候，立刻停止正在做的<em>任何操作</em>。不要按任何健。仔细地看一下屏幕，注意那些不正常的地方，记住它或者写下来。然后慎重地点击“确定” 或“取消”，选择一个最安全的。学着养成一种条件反射——一旦电脑出了问题，先不要动。要想摆脱这个问题，关掉受影响的程序或者重新启动计算机都不好，一个解决问题的好办法是让问题再次产生。程序员们喜欢可以被重现的问题，快乐的程序员可以更快而且更有效率的修复bug。</p>
<h5><a name="symptoms"></a>“我想粒子的跃迁与错误的极化有关”</h5>
<p>并不只是非专业的用户才会写出拙劣的bug报告，我见过一些非常差的bug报告出自程序员之手，有些还是非常优秀的程序员。</p>
<p>有一次我与另一个程序员一起工作，他一直在找代码中的bug，他常常遇到一个bug，但是不会解决，于是就叫我帮忙。“出什么毛病了？”我问。而他的回答却总是一些关于bug的意见。如果他的观点正确，那的确是一件好事。这意味着他已经完成了工作的一半，并且我们可以一起完成另一半工作。这是有效率并有用的。</p>
<p>但事实上他常常是错的。这就会使我们花上半个小时在原本正确的代码里来回寻找错误，而实际上问题出在别的地方。我敢肯定他不会对医生这么做。“大夫，我得了Hydroyoyodyne（真是怪病——译者），给我开个方子”，人们知道不该对一位医生说这些。您描述一下症状，哪个地方不舒服，哪里疼、起皮疹、发烧……让医生诊断您得了什么病，应该怎样治疗。否则医生会把您当做疑心病或精神病患者打发了，这似乎没什么不对。</p>
<p>做程序员也是一样。即便您自己的“诊断”有时真的有帮助，也要只说“症状”。“诊断”是可说可不说的，但是“症状”一定要说。同样，在bug报告里面附上一份针对bug而做出修改的源代码是有用处的，但它并不能替代bug报告本身。</p>
<p>如果程序员向您询问额外的信息，千万别应付。曾经有一个人向我报告bug，我让他试一个命令，我知道这个命令不好用，但我是要看看程序会返回一个什么错误（这是很重要的线索）。但是这位老兄根本就没试，他在回复中说“那肯定不好用”，于是我又花了好些时间才说服他试了一下那个命令。</p>
<p>用户多动动脑筋对程序员的工作是有帮助的。即使您的推断是错误的，程序员也应该感谢您，至少您<em>想</em>去帮助他们，使他们的工作变的更简单。不过千万别忘了报告“症状”，否则只会使事情变得更糟。</p>
<h5><a name="intermittent"></a>“真是奇怪，刚才还不好用，怎么现在又好了？”</h5>
<p>“间歇性错误”着实让程序员发愁。相比之下，进行一系列简单的操作便能导致错误发生的问题是简单的。程序员可以在一个便于观察的条件下重复那些操作，观察每一个细节。太多的问题在这种情况下不能解决，例如：程序每星期出一次错，或者偶然出一次错，或者在程序员面前从不出错（程序员一离开就出错。——译者）。当然还有就是程序的截止日期到了，那肯定要出错。</p>
<p>大多数“间歇性错误”并不是真正的“间歇”。其中的大多数错误与某些地方是有联系的。有一些错误可能是内存泄漏产生的，有一些可能是别的程序在不恰当的时候修改某个重要文件造成的，还有一些可能发生在每一个小时的前半个小时中（我确实遇到过这种事情）。</p>
<p>同样，如果您能使bug重现，而程序员不能，那很有可能是他们的计算机和您的计算机在某些地方是不同的，这种不同引起了问题。我曾写过一个程序，它的窗口可以<em>蜷缩</em>成一个小球呆在屏幕的左上角，它在别的计算机上只能在 800&#215;600 的解析度工作，但是在我的机器上却可以在 1024&#215;768 下工作。</p>
<p>程序员想要了解任何与您发现的问题相关的事情。有可能的话您到另一台机器上试试，多试几次，两次，三次，看看问题是不是经常发生。如果问题出现在您进行了一系列操作之后，不是您想让它出现它就会出现，这就有可能是长时间的运行或处理大文件所导致的错误。程序崩溃的时候，您要尽可能的记住您都做了些什么，并且如果您看到任何图形,也别忘了提一下。您提供的任何事情都是有帮助的。即使只是概括性的描述（例如：当后台有EMACS运行时，程序常常出错），这虽然不能提供导致问题的直接线索，但是可能帮助程序员重现问题。</p>
<p>最重要的是：程序员想要确定他们正在处理的是一个真正的“间歇性错误”呢，还是一个在另一类特定的计算机上才出现的错误。他们想知道有关您计算机的许多细节，以便了解您的机器与他们的有什么不同。有许多细节都依仗特定的程序，但是有一件东西您一定要提供——版本号。程序的版本、操作系统的版本以及与问题有关的程序的版本。</p>
<h5><a name="clarity"></a>“我把磁盘装进了 Windows……”</h5>
<p>表意清楚在一份bug报告里是最基本的要求。如果程序员不知道您说的是什么意思，那您就跟没说一样。我收到的bug报告来自世界各地，有许多是来自非英语国家，他们通常为自己的英文不好而表示歉意。总的来说，这些用户发来的bug报告通常是清晰而且有用的。几乎所有不清晰的bug报告都是来自母语是英语的人，他们总是以为只要自己随便说说，程序员就能明白。</p>
<ul>
<li><em>精确</em>。如果做相同的事情有两种方法，请说明您用的是哪一种。例如：“我选择了‘载入’”，可能意味着“我用鼠标点击‘载入’”或“我按下了‘ALT+L’”，说清楚您用了哪种方法，有时候这也有关系。</li>
<li><em>详细</em>。信息宁多毋少！如果您说了很多，程序员可以略去一部分，可是如果您说的太少，他们就不得不回过头再去问您一些问题。有一次我收到了一份bug报告只有一句话，每一次我问他更多事情时，他每次的回复都是一句话，于是我花了几个星期的时间才得到了有用的信息。</li>
<li><em>慎用代词</em>。诸如“它”，“窗体”这些词，当它们指代不清晰的时候不要用。来看看这句话：“我运行了FooApp，它弹出一个警告窗口，我试着关掉它，它就崩溃了。”这种表述并不清晰，用户究竟关掉了哪个窗口？是警告窗口还是整个FooApp程序？您可以这样说，“我运行FooApp程序时弹出一个警告窗口，我试着关闭警告窗口，FooApp崩溃了。”这样虽然罗嗦点，但是很清晰不容易产生误解。</li>
<li><em>检查</em>。重新读一遍您写的bug报告，<em>您</em>觉得它是否清晰？如果您列出了一系列能导致程序出错的操作，那么照着做一遍，看看您是不是漏写了一步。</li>
</ul>
<h5><a name="summary"></a>小结：</h5>
<ul>
<li>bug报告的首要目的是让程序员亲眼看到错误。如果您不能亲自做给他们看，给他们能使程序出错的详细的操作步骤。</li>
<li>如果首要目的不能达成，程序员<em>不能</em>看到程序出错。这就需要bug报告的第二个目的来描述程序的什么地方出毛病了。详细的描述每一件事情：您看到了什么，您想看到什么，把错误消息记下来，<em>尤其</em>是“错误消息号”。</li>
<li>当您的计算机做了什么您料想不到的事，<em>不要动</em>！在您平静下来之前什么都别做。不要做您认为不安全的事。</li>
<li>尽量试着自己“诊断”程序出错的原因（如果您认为自己可以的话）。即使做出了“诊断”，您仍然应该报告“症状”。</li>
<li>如果程序员需要，请准备好额外的信息。如果他们不需要，就不会问您要。他们不会故意为难自己。您手头上一定要有程序的版本号，它很可能是必需品。</li>
<li>表述清楚，确保您的意思不能被曲解。</li>
<li>总的来说，最重要的是要做到<em>精确</em>。程序员喜欢精确。</li>
</ul>
<h2  class="related_post_title">你可能也会喜欢这些文字</h2><ul class="related_post"><li><a href="http://www.hiadmin.org/testing/cs-bs/" title="软件测试之C/S B/S">软件测试之C/S B/S</a> (8)</li><li><a href="http://www.hiadmin.org/testing/software-testing-book/" title="软件测试技术-经典教程(第二版)">软件测试技术-经典教程(第二版)</a> (5)</li><li><a href="http://www.hiadmin.org/testing/testing-interview/" title="软件测试工程师面试杂谈">软件测试工程师面试杂谈</a> (10)</li><li><a href="http://www.hiadmin.org/testing/science/" title="软件测试所需知识">软件测试所需知识</a> (16)</li><li><a href="http://www.hiadmin.org/testing/testing-quality/" title="从发现缺陷到提高质量">从发现缺陷到提高质量</a> (14)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hiadmin.org/testing/software-bug/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Vim配置python开发环境</title>
		<link>http://www.hiadmin.org/code/python-vim/</link>
		<comments>http://www.hiadmin.org/code/python-vim/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 12:25:36 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[开发coding]]></category>
		<category><![CDATA[Gvim]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[python集成开发工具]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[Vim配置python开发环境]]></category>

		<guid isPermaLink="false">http://www.hiadmin.org/code/python-vim/</guid>
		<description><![CDATA[这段时间一直在用Python自带的IDLE编辑器、可是这IDLE的代码缩进真的让人很受伤、当你用到if：elif：的时候、后一行的elif:不会自动对齐、这让我经常出现在调试的时候才发现代码缩进出现问题呢、所以这次终于鼓起勇气吧IDLE换成VIM了、但是用VIM也存在一个比较闹心的问题、当你用VIM编写好代码之后想按F5运行下看看效果（很多编辑器都是F5来运行的）在vim下面当然是不行的。

看我对于python编辑器 我的要求很简单

1、 代码自动缩进

2、 代码高亮

3、 运行调试 <a href="http://www.hiadmin.org/code/python-vim/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>这段时间一直在用Python自带的IDLE编辑器、可是这IDLE的代码缩进真的让人很受伤、当你用到if：elif：的时候、后一行的elif:不会自动对齐、这让我经常出现在调试的时候才发现代码缩进出现问题呢、所以这次终于鼓起勇气吧IDLE换成VIM了、但是用VIM也存在一个比较闹心的问题、当你用VIM编写好代码之后想按F5运行下看看效果（很多编辑器都是F5来运行的）在vim下面当然是不行的。 </p>
<p>看我对于python编辑器 我的要求很简单 </p>
<p>1、 代码自动缩进 </p>
<p>2、 代码高亮 </p>
<p>3、 运行调试</p>
<p><span id="more-1548"></span>
<p>Python自带的IDLE代码缩进真的是很坑爹，而VIM有没有Python的运行调试 </p>
<p>下面为了让VIM作为Python的编辑器我们需要做一些设置。 </p>
<p>打开vim安装目录编辑_vimrc文件<br />
<h5>1、 让vim显示代码的行号(IDLE就不显示)</h5>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td valign="top" width="400">set nu</td>
</tr>
</tbody>
</table>
<h5>2、 设置文件编码</h5>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td valign="top" width="400">set fileencodings=tuf-8,ucd-bom,gb18030,gbk,gb2312,cp936</td>
</tr>
</tbody>
</table>
<h5>3、 设置缩进、（建议设置4个空格作为缩进）</h5>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td valign="top" width="400">
<p>set tabstop=4  </p>
<p>set sts=4  </p>
<p>set expandtab  </p>
<p>set softtabstop=4  </p>
<p>set shiftwidth=4  </p>
<p>set autoindent  </p>
<p>set cindent  </p>
<p>set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,&gt;1s,=1s,:1s</p>
</td>
</tr>
</tbody>
</table>
<h5>4、 修改下字体颜色、VIM默认的白底黑字真不咋滴</h5>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td valign="top" width="400">colorscheme desert</td>
</tr>
</tbody>
</table>
<h5>5、 取消VIM的自动备份功能(自动生成的~文件其实很不待见)</h5>
</p>
<p>在behave mswin下面添加一行</p>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td valign="top" width="400">set nobackup</td>
</tr>
</tbody>
</table>
<h5>6、 我刚刚开始用vim写python代码的时候会经常无意按下F5、所以为vim配置python的调试是相当的有必要的。</h5>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td valign="top" width="400">map &lt;F5&gt; :! d:\python32\python.exe %</td>
</tr>
</tbody>
</table>
<p>添加map之后当我们写完代码之后按esc、然后按在F5+Enter的时候就调用python来运行代码 </p>
<p>到此我们对vim的配置就完成了，你可以用vim来完成IDLE所有的功能了</p>
<h2  class="related_post_title">你可能也会喜欢这些文字</h2><ul class="related_post"><li><a href="http://www.hiadmin.org/code/vim-pyflakes/" title="为Vim配置python的代码检查功能">为Vim配置python的代码检查功能</a> (2)</li><li><a href="http://www.hiadmin.org/code/python-eric-pyqt/" title="Eric+PyQt打造完美的Python集成开发环境">Eric+PyQt打造完美的Python集成开发环境</a> (10)</li><li><a href="http://www.hiadmin.org/blog-seo/sae-python/" title="新浪SAE开始支持Python">新浪SAE开始支持Python</a> (5)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hiadmin.org/code/python-vim/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>新浪SAE开始支持Python</title>
		<link>http://www.hiadmin.org/blog-seo/sae-python/</link>
		<comments>http://www.hiadmin.org/blog-seo/sae-python/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 12:38:16 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SAE]]></category>
		<category><![CDATA[新浪SAE]]></category>

		<guid isPermaLink="false">http://www.hiadmin.org/blog-seo/sae-python/</guid>
		<description><![CDATA[今天拿到了新浪SAE的python内测资格、SAE的python版本终于要和大家见面了、用GAE的朋友可以放心的蒋代码移植打平新浪SAE上面了（因为有GFW所以要移植）。

从这次的更新来看新浪SAE已经开始商用了、所以不用再担心稳定性的问题。

先来看看新浪SAE python版本预安装的第三方模块 <a href="http://www.hiadmin.org/blog-seo/sae-python/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>今天拿到了新浪SAE的python内测资格、SAE的python版本终于要和大家见面了、用GAE的朋友可以放心的蒋代码移植打平新浪SAE上面了（因为有GFW所以要移植）。</p>
<p>从这次的更新来看新浪SAE已经开始商用了、所以不用再担心稳定性的问题。</p>
<p>先来看看新浪SAE python版本预安装的第三方模块</p>
<p>Python-2.6.7</p>
<p>Django-1.2.7</p>
<p><span id="more-1545"></span></p>
<p>mitsuhiko-flask-sqlalchemy-0.15-0-g08689c7</p>
<p>mitsuhiko-werkzeug-0.7.1-0-g22cca39</p>
<p>mitsuhiko-jinja2-2.6-0-gabfbc18</p>
<p>Flask-0.7.2</p>
<p>MySQL-python-1.2.3</p>
<p>tornado-2.1.1</p>
<p>bottle-0.9.6</p>
<p>新浪SAE这次的更新优化了在线编辑器、可以直接在浏览器上面写代码、O亲、你可以不需要使用svn来提交代码了。</p>
<p>将附件的配额从2M提升到20M</p>
<p>还有、、、</p>
<p>还有、、、等你自己去研究吧</p>
<p>如果您还没有获得python的内测资格请不要担心请访问下面的连接地址了解详情</p>
<p>点击这里：<a title="新浪SAE" href="http://sae.sina.com.cn/activity/invite/41260/weibo" target="_blank">http://sae.sina.com.cn/activity/invite/41260/weibo</a></p>
<p><span style="text-decoration: underline;"><br />
</span></p>
<h2  class="related_post_title">你可能也会喜欢这些文字</h2><ul class="related_post"><li><a href="http://www.hiadmin.org/code/vim-pyflakes/" title="为Vim配置python的代码检查功能">为Vim配置python的代码检查功能</a> (2)</li><li><a href="http://www.hiadmin.org/code/python-vim/" title="Vim配置python开发环境">Vim配置python开发环境</a> (8)</li><li><a href="http://www.hiadmin.org/blog-seo/sina-sae/" title="新浪SAE云平台优缺点">新浪SAE云平台优缺点</a> (26)</li><li><a href="http://www.hiadmin.org/code/python-eric-pyqt/" title="Eric+PyQt打造完美的Python集成开发环境">Eric+PyQt打造完美的Python集成开发环境</a> (10)</li><li><a href="http://www.hiadmin.org/blog-seo/worspress-sae/" title="真正免费的WordPress空间&mdash;新浪SAE">真正免费的WordPress空间&mdash;新浪SAE</a> (11)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hiadmin.org/blog-seo/sae-python/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>软件测试之C/S B/S</title>
		<link>http://www.hiadmin.org/testing/cs-bs/</link>
		<comments>http://www.hiadmin.org/testing/cs-bs/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 13:26:24 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[软件测试]]></category>
		<category><![CDATA[B/S]]></category>
		<category><![CDATA[C/S]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.hiadmin.org/testing/cs-bs/</guid>
		<description><![CDATA[最近在面试软件测试工程师的时候发现很多来面试朋友居然连C/S B/S都分不清的人居然大有人再、下面的内容来至51testing、希望对想入门做测试的朋友一个参考。

C/S结构与B/S结构的特点分析
随着计算机技术的不断发展与应用，计算模式从集中式转向了分布式，尤为典型的是C/S结构（Client/Server的简称，客户机/服务器模式）。两层结构C/S模式，在上个世纪八十年代及九十年代初得到了大量应用，最直接的原因是可视化开发工具的推广。之后，它开始向三层结构发展。近年来，随着网络技术不断发展，尤其是基于 <a href="http://www.hiadmin.org/testing/cs-bs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>最近在面试软件测试工程师的时候发现很多来面试朋友居然连C/S B/S都分不清的人居然大有人再、下面的内容来至51testing、希望对想入门做测试的朋友一个参考。<strong></strong><br />
<h4><strong>C/S</strong><strong>结构与</strong><strong>B/S</strong><strong>结构的特点分析</strong></h4>
</p>
<p>随着计算机技术的不断发展与应用，计算模式从集中式转向了分布式，尤为典型的是C/S结构（Client/Server的简称，客户机/服务器模式）。两层结构C/S模式，在上个世纪八十年代及九十年代初得到了大量应用，最直接的原因是可视化开发工具的推广。之后，它开始向三层结构发展。近年来，随着网络技术不断发展，尤其是基于</p>
<p><span id="more-1542"></span>
<p>Web的信息发布和检索技术、Java计算技术以及网络分布式对象技术的飞速发展，导致了很多应用系统的体系结构从C/S结构向更加灵活的多级分布结构演变，使得软件系统的网络体系结构跨入一个新阶段，即B/S体系结构（Browser/Server的简称，浏览器/服务器模式）。基于Web的B/S方式其实也是一种客户机/服务器方式，只不过它的客户端是浏览器。为了区别于传统的C/S模式，才特意将其称为B/S模式。认识到这些结构的特征，对于系统的选型而言是很关键的。<br />
<h4><strong>1</strong><strong>、系统的性能</strong></h4>
</p>
<p>在系统的性能方面，B/S占有优势的是其异地浏览和信息采集的灵活性。任何时间、任何地点、任何系统，只要可以使用浏览器上网，就可以使用B/S系统的终端。 </p>
<p>不过，采用B/S结构，客户端只能完成浏览、查询、数据输入等简单功能，绝大部分工作由服务器承担，这使得服务器的负担很重。采用C/S结构时，客户端和服务器端都能够处理任务，这虽然对客户机的要求较高，但因此可以减轻服务器的压力。而且，由于客户端使用浏览器，使得网上发布的信息必须是以HTML格式为主，其他格式文件多半是以附件的形式存放。而HTML格式文件（也就是Web页面）不便于编辑修改，给文件管理带来了许多不便。<br />
<h4><strong>2</strong><strong>、系统的开发</strong></h4>
</p>
<p>&nbsp;&nbsp;&nbsp; C/S结构是建立在中间件产品基础之上的，要求应用开发者自己去处理事务管理、消息队列、数据的复制和同步、通讯安全等系统级的问题。这对应用开发者提出了较高的要求，而且迫使应用开发者投入很多精力来解决应用程序以外的问题。这使得应用程序的维护、移植和互操作变得复杂。如果客户端是在不同的操作系统上，C/S结构的软件需要开发不同版本的客户端软件。 </p>
<p>但是，与B/S结构相比，C/S技术发展历史更为“悠久”。从技术成熟度及软件设计、开发人员的掌握水平来看，C/S技术应是更成熟、更可靠的。<br />
<h4><strong>3</strong><strong>、系统的升级维护</strong></h4>
</p>
<p>&nbsp;&nbsp;&nbsp; C/S系统的各部分模块中有一部分改变，就要关联到其它模块的变动，使系统升级成本比较大。B/S与C/S处理模式相比，则大大简化了客户端，只要客户端机器能上网就可以。对于B/S而言，开发、维护等几乎所有工作也都集中在服务器端，当企业对网络应用进行升级时，只需更新服务器端的软件就可以，这减轻了异地用户系统维护与升级的成本。如果客户端的软件系统升级比较频繁，那么B/S架构的产品优势明显——所有的升级操作只需要针对服务器进行，这对那些点多面广的应用是很有价值的，例如一些招聘网站就需要采用B/S模式，客户端分散，且应用简单，只需要进行简单的浏览和少量信息的录入。 </p>
<p>在系统安全维护上，B/S则略显不足，B/S结构尤其得考虑数据的安全性和服务器的安全性，毕竟现在的网络安全系数并不高。以OA软件为例，B/S结构要实现办公协作过程中复杂的工作流控制与安全性控制，还有很多技术上的难点。因此，当前虽然出现了B/S结构的OA系统产品，但尚未大范围推广</p>
<h2  class="related_post_title">你可能也会喜欢这些文字</h2><ul class="related_post"><li><a href="http://www.hiadmin.org/testing/testing-bug/" title="软件测试笔记-BUG的定义">软件测试笔记-BUG的定义</a> (2)</li><li><a href="http://www.hiadmin.org/testing/testing-policy/" title="软件测试笔记-测试策略">软件测试笔记-测试策略</a> (0)</li><li><a href="http://www.hiadmin.org/testing/wireshark-capture-password/" title="Wireshark抓取网站弱口令和捕获FTP账号密码">Wireshark抓取网站弱口令和捕获FTP账号密码</a> (14)</li><li><a href="http://www.hiadmin.org/testing/wireshark-displayfilters/" title="Wireshark之显示过滤器">Wireshark之显示过滤器</a> (15)</li><li><a href="http://www.hiadmin.org/testing/software-bug/" title="测试人员如何有效的提交BUG">测试人员如何有效的提交BUG</a> (7)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hiadmin.org/testing/cs-bs/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>软件测试技术-经典教程(第二版)</title>
		<link>http://www.hiadmin.org/testing/software-testing-book/</link>
		<comments>http://www.hiadmin.org/testing/software-testing-book/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 10:56:20 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[软件测试]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[软件测试书籍]]></category>
		<category><![CDATA[软件测试技术]]></category>

		<guid isPermaLink="false">http://www.hiadmin.org/testing/software-testing-book/</guid>
		<description><![CDATA[软件测试行业在国内也算是蓬勃发展、然而相对应的软件测试类的书籍却真的不尽如人意、在国内能购买到大大部分书籍都是翻译过来的、很多翻译的水平让人怀疑译者是否有软件测试专业的资质、真正介绍软件测试知识的书不多、但是讲解测试工具的书籍却有10本左右、但都是介绍测试工具使用、原理性的东西几乎没有涉及。

软件测试技术-经典教程(第二版)是能书店找到的2011年出版的书籍之一、但是确是今年出版的软件测试类书籍中质量最好的一本书籍、值得大家一读。 <a href="http://www.hiadmin.org/testing/software-testing-book/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>软件测试行业在国内也算是蓬勃发展、然而相对应的软件测试类的书籍却真的不尽如人意、在国内能购买到大大部分书籍都是翻译过来的、很多翻译的水平让人怀疑译者是否有软件测试专业的资质、真正介绍软件测试知识的书不多、但是讲解测试工具的书籍却有10本左右、但都是介绍测试工具使用、原理性的东西几乎没有涉及。  </p>
<p>软件测试技术-经典教程(第二版)是能书店找到的2011年出版的书籍之一、但是确是今年出版的软件测试类书籍中质量最好的一本书籍、值得大家一读。</p>
<p><span id="more-1541"></span>
</p>
<p>全书共分4部分。  </p>
<p>第一部分主要介绍软件测试的基本概念、分类、常识,以及黑盒测试技术、缺陷管理、测试管理、软件测试工具等。  </p>
<p>第二部分主要讨论黑盒测试工具的LoadRunner11.0测试方法、TestDirector8.0测试方法、Ranorex自动化测试方法等。  </p>
<p>第三部分给出白盒测试技术简介,以及白盒测试工具的BoundsChecker教程、Logiscope6.1 教程、JUnit3.8 教程、JTest7.0教程等。  </p>
<p>第四部分给出了测试英文,这是知名外企内部培训的第一手资料,包括QA基础知识介绍、测试类型、Web程序的测试方法、测试团队的Scrum管理和TaskReports编写等。  </p>
<p>《软件测试技术经典教程(第2版)》还为各章节设计了针对性很强的思考题,以便读者理解和消化所学知识。书后附录部分给出了软件测试技术用语说明及中英文对照,测试工程师面试、笔试时的常见问题,c/c++编码规范,Java编码规范等,供读者?习参考。  </p>
<p>不管你是新入门的测试人员还是经验丰富的测试高手、知识永不嫌少、长读长新。于所有软件测试的朋友共勉。</p>
<h2  class="related_post_title">你可能也会喜欢这些文字</h2><ul class="related_post"><li><a href="http://www.hiadmin.org/testing/tseting-books/" title="软件测试书籍列表">软件测试书籍列表</a> (20)</li><li><a href="http://www.hiadmin.org/testing/software-bug/" title="测试人员如何有效的提交BUG">测试人员如何有效的提交BUG</a> (7)</li><li><a href="http://www.hiadmin.org/testing/cs-bs/" title="软件测试之C/S B/S">软件测试之C/S B/S</a> (8)</li><li><a href="http://www.hiadmin.org/testing/testing-interview/" title="软件测试工程师面试杂谈">软件测试工程师面试杂谈</a> (10)</li><li><a href="http://www.hiadmin.org/testing/science/" title="软件测试所需知识">软件测试所需知识</a> (16)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hiadmin.org/testing/software-testing-book/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>新浪SAE云平台优缺点</title>
		<link>http://www.hiadmin.org/blog-seo/sina-sae/</link>
		<comments>http://www.hiadmin.org/blog-seo/sina-sae/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 14:47:51 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[免费WordPress空间]]></category>
		<category><![CDATA[免费的PHP空间]]></category>
		<category><![CDATA[新浪SAE]]></category>

		<guid isPermaLink="false">http://www.hiadmin.org/blog-seo/sina-sae/</guid>
		<description><![CDATA[使用新浪SAE的云平台已经有1月有余了、对SAE有了一定的认识、这次总结了下新浪SAE的优缺点、当我们在决定是否购买一款主机的时候考虑会反问速度、稳定性、价格、空间大小、所以这次Sam将从这些方面来分析

希望给准备使用或者想使用新浪SAE的朋友一个参考。

新浪SAE优点：
1、 新浪SAE的访问速度：
新浪SAE的机房在北京双线机房、我在杭州对SAE的ping值一直稳定在30ms、而我自己购买虚拟主机ping值一直到40ms上下、更不用说国外的空间了。 <a href="http://www.hiadmin.org/blog-seo/sina-sae/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>使用新浪SAE的云平台已经有1月有余了、对SAE有了一定的认识、这次总结了下新浪SAE的优缺点、当我们在决定是否购买一款主机的时候考虑会反问速度、稳定性、价格、空间大小、所以这次Sam将从这些方面来分析</p>
<p>希望给准备使用或者想使用新浪SAE的朋友一个参考。</p>
<h3>新浪SAE优点：</h3>
<h5>1、 新浪SAE的访问速度：</h5>
<p><span id="more-1539"></span></p>
<h5></h5>
<p>新浪SAE的机房在北京双线机房、我在杭州对SAE的ping值一直稳定在30ms、而我自己购买虚拟主机ping值一直到40ms上下、更不用说国外的空间了。</p>
<h5>2、 新浪SAE的稳定性：</h5>
<p>SAE服务器都是硬件做的负载均衡、所以根本不用担心你的网站那天会打不开的情况出现。</p>
<h5>3、 新浪SAE的价格：</h5>
<p>新浪SAE基本上免费：一个日访问量在4W以内的网站在SAE上面是不用付钱的、SAE的官方稳定中有详细的费用扣除说明。（新浪SAE使用虚拟货币云豆来付费、通过身份验证之后每天赠送1000云豆）。而新浪SAE的http流量费用是1G流量扣除240云豆、所以新浪SAE赠送的1000云豆的流量可以达到4.16G 通过Sam的计算也就是日 PV在4W左右就不用付钱了。</p>
<h5>4、 新浪SAE的空间：</h5>
<p>为了这事我联系过SAE的客服、他们告知空间不限制大小、Mysql数据库也不限制大小。这对比虚拟主机限制流量+限制数据库大小来说可是相当的豪爽的。</p>
<h5>5、 使用新浪SAE搭建网站相比于使用国外的空间还有一个更好的优势就是不用担心被GFW。</h5>
<h3>新浪SAE的缺点：</h3>
<p>1、 新浪SAE为了安全起见不允许对本地文件进行写操作、也就是意味着像WordPress这类可以在线安装的主题、插件功能都不用、只能通过SVN将WordPress主题或者插件上传到WordPress相应的目录。</p>
<p>2、 新浪SAE云平台虽然可以绑定独立域名、但是域名需要备案的才可以绑定、这样一来对于那些原来在国外不需要备案的网站来说、是一个比较麻烦的事情、而且最重要的一点是国内备案是比较麻烦的。</p>
<p>3、 新浪SAE到现在为止还是在bata阶段、虽然说Gmail都bata了4年才正式版本、但是比较是bata版本、还是有那么一点点的担心。</p>
<p>4、 到目前为止新浪SAE还仅仅支持PHP程序、PHP之外的就没有希望用新浪SAE了、虽然从SAE的招聘广告来看在做python平台了、但是什么时候能上线还是一个一个未知数。</p>
<p>总结起来说就是如果你的网站是使用PHP的、并且日访问量在4W以内的那么使用新浪SAE绝对是物超所值的（因为免费）。要是JSP、ASP、Python的就放弃吧。</p>
<h5><a href="http://sae.sina.com.cn/activity/invite/41260/weibo" target="_blank">新浪SAE注册地址</a>：<span style="text-decoration: underline;">http://sae.sina.com.cn/activity/invite/41260/weibo</span></h5>
<h2  class="related_post_title">你可能也会喜欢这些文字</h2><ul class="related_post"><li><a href="http://www.hiadmin.org/blog-seo/worspress-sae/" title="真正免费的WordPress空间&mdash;新浪SAE">真正免费的WordPress空间&mdash;新浪SAE</a> (11)</li><li><a href="http://www.hiadmin.org/blog-seo/sae-python/" title="新浪SAE开始支持Python">新浪SAE开始支持Python</a> (5)</li><li><a href="http://www.hiadmin.org/blog-seo/wordpress3-2/" title="WordPress3.2更新在即你准备好了么？">WordPress3.2更新在即你准备好了么？</a> (27)</li><li><a href="http://www.hiadmin.org/blog-seo/wordpress-gzip-2/" title="开启Gzip压缩为WordPress提速">开启Gzip压缩为WordPress提速</a> (38)</li><li><a href="http://www.hiadmin.org/blog-seo/twentyten-search/" title="给Twenty Ten主题的导航栏添加一个搜索框">给Twenty Ten主题的导航栏添加一个搜索框</a> (16)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.hiadmin.org/blog-seo/sina-sae/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
	</channel>
</rss>

