﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-哈库拉玛塔塔——tjitty-随笔分类-软件开发</title><link>http://www.cnitblog.com/tjitty/category/6910.html</link><description>记录下网络上的精品测试技术文章 and 生活</description><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 14:35:08 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 14:35:08 GMT</pubDate><ttl>60</ttl><item><title>eclipse集成svn提示This client is too old to work with解决方案</title><link>http://www.cnitblog.com/tjitty/archive/2010/06/22/66935.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Tue, 22 Jun 2010 09:53:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2010/06/22/66935.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/66935.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2010/06/22/66935.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/66935.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/66935.html</trackback:ping><description><![CDATA[
		<div id="blog_text" class="cnt">
				<p>
						<a href="http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA">http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA</a>
				</p>
				<p>这个网站有明确的说明,</p>
				<p>Changelog: <a href="http://subclipse.tigris.org/subclipse_1.6.x/changes.html">http://subclipse.tigris.org/subclipse_1.6.x/changes.html</a><br />
Eclipse update site URL: <a href="http://subclipse.tigris.org/update_1.6.x">http://subclipse.tigris.org/update_1.6.x</a><br />
Zipped downloads: <a href="http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240">http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240</a></p>
				<p>另外有网站也有解决办法:http://wuaner.javaeye.com/blog/569285</p>
				<p>项目中使用的是1.4.7,作为eclipse的插件装的；后来又在机子上装了个TortoiseSVN 1.6.5。遇到的问题：</p>
				<p>引用</p>
				<p>This client is too old to work with working copy 
'D:\MyEclipseWorkspace\projectName\WebRoot\WEB-INF\lib'; please get a 
newer Subversion client.</p>
				<p>
						<br />
估计是不经意中使用了1.6.5做了提交导致的问题。</p>
				<p>官方解决办法： <br /><a href="http://subversion.tigris.org/faq.html#working-copy-format-change">http://subversion.tigris.org/faq.html#working-copy-format-change</a><br /><a href="http://svn.collab.net/repos/svn/trunk/tools/client-side/change-svn-wc-format.py">http://svn.collab.net/repos/svn/trunk/tools/client-side/change-svn-wc-format.py</a><br />
所以，装python先： <br /><a href="http://code.google.com/p/smallfish/">http://code.google.com/p/smallfish/</a>（python
官网下载被屏蔽） <br />
安装后记得在环境变量的path中追加python安装路径："安装盘符:\Python26"</p>
				<p>然后cmd下运行：</p>
				<p>Python代码 <br />
1.CMD &gt;change-svn-wc-format.py 
D:\MyEclipseWorkspace\projectName\WebRoot\WEB-INF\lib 1.4 --verbose <br />
CMD &gt;change-svn-wc-format.py 
D:\MyEclipseWorkspace\projectName\WebRoot\WEB-INF\lib 1.4 --verbose</p>
				<p>
						<br />
关于svn官网提供的版本转换方式：</p>
				<p>引用</p>
				<p>CMD:\&gt;change-svn-wc-format.py --help <br />
usage: change-svn-wc-format.py WC_PATH SVN_VERSION [--verbose] [--force]
 [--skip-unknown-format] <br />
change-svn-wc-format.py --help</p>
				<p>Change the format of a Subversion working copy to that of 
SVN_VERSION.</p>
				<p>--skip-unknown-format : skip directories with unknown working copy <br />
format and continue the update</p>
		</div>
<img src ="http://www.cnitblog.com/tjitty/aggbug/66935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2010-06-22 17:53 <a href="http://www.cnitblog.com/tjitty/archive/2010/06/22/66935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用 UNIX find 命令的高级技术</title><link>http://www.cnitblog.com/tjitty/archive/2010/01/20/63833.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Wed, 20 Jan 2010 01:55:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2010/01/20/63833.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/63833.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2010/01/20/63833.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/63833.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/63833.html</trackback:ping><description><![CDATA[
		<p>转载自：http://www.ibm.com/developerworks/cn/aix/library/es-unix-find.html#listing1<br /></p>
		<p>没有什么能比得上探索和发现新的人、地方、事物所带来的刺激。领域可能有所不同，但有些原则却是一样的。在这些原则中，有一条是记录下您的旅程，另一条则是了解和使用工具。</p>
		<p>UNIX® 操作系统很像一片广阔的、未经标识的荒野。当您在这样的领域中旅行时，可以选择一些日后能够给您带来帮助的工具。<code>find</code> 命令便是这样一种工具。<code>find</code> 命令不仅能够简单地用来定位文件，正如本文将介绍的那样，它还可以自动地执行其他 UNIX 命令的序列，其中使用所查找到的文件名作为输入。</p>
		<p>
				<a name="N1006C">
						<span class="atitle">Find 的有关限制</span>
				</a>
		</p>
		<p>所有称职的操作系统都具有协助您查找相关内容的工具。与大多数工具不同的是，UNIX 中的 <code>find</code> 命令可以自动地对其查找到的文件执行许多操作。</p>
		<p>图形用户界面 (GUI) 中的标准 <code>find</code>
工具允许您对所查找到的文件进行一些常规操作任务：您可以将它们标记为剪切、复制和粘贴，您可以将它们移动到一个新的位置，并且可以使用创建它们的应用程
序来打开它们。这些操作涉及到两个或更多的步骤，并且不是自动完成的，即首先查找到文件，然后使用 GUI
为下一步的操作对它们进行标记。这种方法对许多用户来说没有问题，但是 Explorer 需要的不仅是这些。</p>
		<p>UNIX 的 <code>find</code> 命令可以删除、复制、移动和执行其查找到的文件。另外，使用 <code>-exec</code> 参数可以根据您所需要的 UNIX 命令的序列来自动地运行这些文件。它甚至可以在对任何文件执行这些操作前，进一步让您进行确认。</p>
		<p>
				<a name="N1008C">
						<span class="atitle">简化文件系统的管理</span>
				</a>
		</p>
		<p>与大多数 UNIX 命令一样，UNIX <code>find</code> 命令具有一长串令人生畏的选项和开关，它们会阻碍人们深入地学习该命令，但正是因为其范围广阔，真正的 Explorer  并不会被它们吓倒。一条好的通用原则在简化一个复杂问题时都会经过漫长的过程。启动一个 xterm，并尝试执行下面的命令：</p>
		<table width="400" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ find . -name *.gif -exec ls {} \;<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<code>-exec</code> 参数中包含了真正有价值的操作。当查找到匹配搜索条件的文件时，<code>-exec</code> 参数定义了将对这些文件进行什么操作。该示例告诉计算机进行如下操作：

</p>
		<ol>
				<li>从当前文件夹开始往下搜索，紧跟在 <code>find</code> 之后，使用点号 (<code>.</code>)。</li>
				<li>定位所有名称以 .gif 结尾的文件（图形文件）。</li>
				<li>列出所有查找到的文件，使用 <code>ls</code> 命令。</li>
		</ol>
		<p>需要对 <code>-exec</code> 参数进行更深入地研究。当查找到匹配搜索条件的文件名时，<code>find</code> 命令执行 <code>ls {}</code> 字符串，用文件名和路径代替文本 <code>{}</code>。假设在搜索中查找到 saturn.gif 文件，<code>find</code> 将执行如下所示的命令：</p>
		<table width="400" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ ls ./gif_files/space/solar_system/saturn.gif<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>本文余下的内容建立在这条一般原则之上：仔细地使用 <code>find</code> 命令可以让 UNIX 文件系统的管理工作变得更加容易。例如，如果您使用了 <code>-fstype</code> 参数，<code>find</code> 命令可以根据查找到的文件所处的文件系统的类型来对命令进行相应的处理。在 <code>find</code> 命令对查找到的文件执行相应命令前将对您进行提示，这通常是非常有用的，您可以使用 <code>-ok</code> 参数告诉它继续执行该操作，接下来我们将对其进行介绍。</p>
		<p>
				<a name="N100F3">
						<span class="atitle">可选的执行</span>
				</a>
		</p>
		<p>
				<code>-ok</code> 是 <code>-exec</code> 参数的一个重要的替代项，它的行为和 <code>-exec</code> 一样，但它会提示您是否要对文件运行相应的命令。假设您想要删除 home 目录中的大部分 .txt 文件，但希望能够逐个文件地执行该操作。像 UNIX 中的 <code>rm</code> 命令那样的删除操作是很危险的，因为当使用像 <code>find</code> 这样的自动化处理方式来查找文件时，它可能一不小心会删除重要的文件，您也许希望在删除这些系统查找到的文件之前对其进行仔细检查。</p>
		<p>下面的命令列出了您的 home 目录中所有的 .txt 文件。要删除这些文件，必须在 <code>find</code> 命令通过列出文件名提示您确认操作时输入 <code>Y</code> 或者 <code>y</code>：</p>
		<table width="400" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ find $HOME/. -name *.txt -ok rm {} \;<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>它列出了查找到的每个文件，并且系统将暂停以等待您输入 <code>Y</code> 或者 <code>y</code>。如果您按下 <b>Enter</b> 键，系统将不会删除该文件。<a linkindex="23" href="http://www.ibm.com/developerworks/cn/aix/library/es-unix-find.html#listing1">清单 1</a> 显示了一些示例结果：</p>
		<br />
		<a name="listing1">
				<b>清单 1. 示例结果</b>
		</a>
		<br />
		<table width="572" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">&lt; rm ... /home/bill/./.kde/share/apps/karm/karmdata.txt &gt; ?<br />&lt; rm ... /home/bill/./archives/LDDS.txt &gt; ?<br />&lt; rm ... /home/bill/./www/txt/textfile1.txt &gt; ?<br />&lt; rm ... /home/bill/./www/txt/faq.txt &gt; ?<br />&lt; rm ... /home/bill/./www/programs/MIKE.txt &gt; ?<br />&lt; rm ... /home/bill/./www/programs/EESTRING.txt &gt; ?<br />.<br />.<br />.<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>系统将在每个问号之后暂停，在本示例中，每次都按下了 Enter 键以继续处理下一个文件。（没有删除任何文件。）<code>-ok</code> 参数允许您控制每个查找到的文件的自动化处理过程，这样就添加了一种避免自动删除文件的安全措施。</p>
		<p>如果在使用 <code>-ok</code> 参数时涉及到过多的文件，那么一个好的方法是先运行带 <code>-exec</code> 的 <code>find</code> 命令以列出所有将要删除的文件，然后在经过检查确保其中不会删除重要的文件后，再次运行该命令，其中用 <code>rm</code> 代替 <code>ls</code>。</p>
		<p>
				<code>-exec</code> 和 <code>-ok</code> 都非常有用，您必须确定在当前情况下哪一个能够更好的工作。请记住，安全第一！</p>
		<p>
				<a name="N10168">
						<span class="atitle">创造性地使用 find</span>
				</a>
		</p>
		<p>您可以使用 <code>find</code> 命令执行各种各样的任务。本部分内容提供了使用 <code>find</code> 命令来管理文件系统的几种方式的示例。</p>
		<p>为了保持简单，这些示例都避免了使用涉及通过管道将一个命令的输出传递到另一个命令的 <code>-exec</code> 命令。然而，您完全可以根据自己需要在 find 命令的 <code>-exec</code> 子句中使用这样的命令。</p>
		<p>
				<a name="N10185">
						<span class="smalltitle">清除临时文件</span>
				</a>
		</p>
		<p>您可以使用 <code>find</code> 命令来清除目录或子目录中在正常使用过程中生成的临时文件，这样可以节省磁盘空间。要实现该操作，请使用下面的命令：</p>
		<table width="400" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ find . \( -name a.out -o -name '*.o' -o -name 'core' \) -exec rm {} \;<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>括号中的<i>文件掩码</i> 标识出了需要删除的文件类型，每个文件掩码的前面都有 <code>-name</code>。该列表可以扩展为包括您需要清除的系统中的任何临时文件类型。在代码的编译和连接过程中，程序员及其工具会生成示例中的那些文件类型：<code>a.out</code>、<code>*.o</code> 和 <code>core</code>。其他的用户通常也会生成类似的临时文件，可以使用如 <code>*.tmp</code>、<code>*.junk</code> 等文件掩码来对命令进行相应的编辑。您可能还发现将命令放入一个称作 <code>clean</code> 的脚本中非常有用，当需要清除一个目录中的内容的时候就可以执行该脚本。</p>
		<p>
				<a name="N101BA">
						<span class="smalltitle">复制目录中的内容</span>
				</a>
		</p>
		<p>
				<code>find</code> 命令允许您复制目录中的全部内容，同时保持每个文件和子目录的权限、时间和所有权。要完成该操作，需要组合使用 <code>find</code> 和 <code>cpio</code> 命令，如下所示：</p>
		<br />
		<a name="listing2">
				<b>清单 2. 组合使用 find 和 cpio 命令</b>
		</a>
		<br />
		<table width="572" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">
												<br />$ cd /path/to/source/dir<br /><br />$ find . | cpio -pdumv /path/to/destination/dir<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<code>cpio</code> 命令是一个复制命令，它设计用来将文件复制到或复制出一个 cpio 或 tar 存档文件，并自动地保持文件和子目录的权限、时间和所有权。</p>
		<p>
				<a name="N101DF">
						<span class="smalltitle">列出文本文件的第一行内容</span>
				</a>
		</p>
		<p>有些人使用每个文本文件的第一行作为标题或者文件内容的描述。可以使用列出文件名和所有文本文件第一行内容的报表更方便地对大量的文本文件进行筛选。下面的命令在报表中列出了您的 home 目录中所有文本文件的第一行内容，便于进一步地根据需要使用 <code>less</code> 命令进行检查：</p>
		<br />
		<a name="listing3">
				<b>清单 3. less 命令</b>
		</a>
		<br />
		<table width="572" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">
												<br />$ find $HOME/. -name *.txt -exec head -n 1 -v {} \; &gt; report.txt<br /><br />$ less &lt; report.txt<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<a name="N101F7">
						<span class="smalltitle">维护 LOG 和 TMP 文件的存储空间</span>
				</a>
		</p>
		<p>要为生成大量文件的应用程序维护 LOG 和 TMP 文件存储空间，可以将下列命令放入到每天运行的 <code>cron</code> 任务中：</p>
		<br />
		<a name="listing4">
				<b>清单 4. 维护 LOG 和 TMP 文件存储空间</b>
		</a>
		<br />
		<table width="572" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">
												<br />$ find $LOGDIR -type d -mtime +0 -exec compress -r {} \;<br /><br />$ find $LOGDIR -type d -mtime +5 -exec rm -f {} \;<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>第一个命令找到 $LOGDIR 目录中所有包含在 24 小时内 (<code>-mtime +0</code>) 进行了修改的数据的目录 (<code>-type d</code>)，并对它们进行压缩 (<code>compress -r {}</code>) 以节省磁盘空间。如果这些目录超过了一个工作周 (<code>-mtime +5</code>)，第二个命令则将其删除 (<code>rm -f {}</code>)，以便增加磁盘上的可用空间。通过这种方式，cron 任务自动地根据您所指定的时间窗口对目录进行维护。</p>
		<p>
				<a name="N10226">
						<span class="smalltitle">复制复杂的目录树</span>
				</a>
		</p>
		<p>如果您想要将复杂的目录树从一台计算机复制到另一台计算机，同时保持副本权限以及 User ID 和 Group ID（UID 和 GID——操作系统所使用的标记文件的所有权的数值），并且不复制用户文件，那么就需要再次使用 <code>find</code> 和 <code>cpio</code>： </p>
		<br />
		<a name="listing5">
				<b>清单 5. 复制复杂的目录树</b>
		</a>
		<br />
		<table width="572" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ cd /source/directory<br /><br />$ find . -depth -print | cpio -o -O /target/directory<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<a name="N10242">
						<span class="smalltitle">查找不指向任何地方的链接</span>
				</a>
		</p>
		<p>要查找不指向任何地方的链接，可以使用带 <code>find</code> 的 <code>perl</code> 解释器，如下所示：</p>
		<table width="400" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ find / -type l -print | perl -nle '-e || print';<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>该命令从最顶层目录 (/) 开始，列出由 <code>perl</code> 解释器确定不指向任何地方 (<code>-nle '-e || print'</code>) 的所有链接 (<code>-type l -print</code>)，关于 Unix Guru Universe 站点中这个技巧的更详细的信息，请参阅<a linkindex="24" href="http://www.ibm.com/developerworks/cn/aix/library/es-unix-find.html#resources">参考资料</a>部分。如果您想要删除这些文件，可以进一步使用管道将输出传递到 <code>rm -f {}</code> 命令。当然，Perl 可以在大多数的 UNIX 工具包中找到，它是许多功能强大的解释性语言工具中的一种。</p>
		<p>
				<a name="N10270">
						<span class="smalltitle">定位和重命名无法打印的目录</span>
				</a>
		</p>
		<p>在 UNIX 中，可能会有错误的或恶意的程序创建包含无法打印的字符的目录。定位和重命名这些目录，这样就可以更容易地检查并删除它们。要完成该操作，您首先需要在 <code>ls</code> 中包含 <code>-i</code> 开关，以获取该目录的索引节点的数值。然后，使用 <code>find</code> 将索引节点的数值转换为一个可以使用 <code>mv</code> 命令进行重命名的文件名：</p>
		<br />
		<a name="listing6">
				<b>清单 6. 定位和重命名无法打印的目录</b>
		</a>
		<br />
		<table width="572" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ ls -ail<br /><br />$ find . -inum 211028 -exec mv {} newname.dir \;<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<a name="N10294">
						<span class="smalltitle">列出长度为零的文件</span>
				</a>
		</p>
		<p>要列出所有长度为零的文件，请使用下面的命令：</p>
		<table width="400" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ find . -empty -exec ls {} \;<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>在查找到空文件之后，您可以选择用 <code>rm</code> 命令来代替 <code>ls</code> 命令，以删除这些文件。</p>
		<p>很明显，您对 UNIX <code>find</code> 命令的使用受到知识和创造性的限制。</p>
		<p>
				<a name="N102B5">
						<span class="atitle">结束语</span>
				</a>
		</p>
		<p>使用 <code>find</code> 命令，可以轻松地浏览 UNIX 文件系统中丰富的内容。很值得花时间来试验该命令，并了解它能为您做些什么。正如本文中所列出的示例，您可以通过许多创造性的方式来使用 <code>find</code>，这样可以轻松地浏览和管理文件系统，并且充满乐趣。</p>
		<p>
				<br />
		</p>
<img src ="http://www.cnitblog.com/tjitty/aggbug/63833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2010-01-20 09:55 <a href="http://www.cnitblog.com/tjitty/archive/2010/01/20/63833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Agile Scrum - Understanding Scrum Rules</title><link>http://www.cnitblog.com/tjitty/archive/2009/10/30/62259.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Fri, 30 Oct 2009 05:17:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2009/10/30/62259.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/62259.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2009/10/30/62259.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/62259.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/62259.html</trackback:ping><description><![CDATA[
		<strong>A</strong>
		<font size="4">
				<strong>gile Scrum 
							- Understanding Scrum Rules</strong>
		</font>
		<table width="100%" border="0" cellpadding="5" cellspacing="5">
				<tbody>
						<tr>
								<td>
										<font size="2" face="Tahoma">Many of us have 
							experienced projects that drag on much longer than 
							expected and cost more than planned. Companies 
							looking to improve their software development 
							processes are now exploring how Agile can help their 
							Enterprise more reliably deliver software quickly, 
							iteratively and with a feature set that hits that 
							mark.  While Agile has different "flavors", 
							Scrum is one process for implementing Agile.  
							This newsletter is one in a series of 
							newsletters that will discuss the Agile Scrum 
							process and will end with variants of Scrum that can 
							be used to aid in improving your software releases. 
							Here are the prior newsletters in this series:</font>
										<ul>
												<font size="2" face="Tahoma">
														<li>
																<span style="font-family: Tahoma; font-size: x-small;">
																		<strong>
																				<font size="2" face="Tahoma">Feb 2008: 
								Agile Scrum - An Overview </font>
																				<br />
																		</strong>
																		<span style="font-family: Tahoma;">
																				<a href="http://www.pragmaticsw.com/newsletters/Newsletter_2008_02_SP.htm">
								http://www.pragmaticsw.com/newsletters/Newsletter_2008_02_SP.htm</a>
																		</span>
																		<strong>
																		</strong>
																</span>
														</li>
														<li>
																<font size="2" face="Tahoma">
																		<span style="font-family: Tahoma; font-size: x-small;">
																				<strong>Mar 2008: Agile Scrum - Team Composition <br /></strong>
																				<span style="font-family: Tahoma;">
																						<a href="http://www.pragmaticsw.com/newsletters/Newsletter_2008_03_SP.htm">http://www.pragmaticsw.com/newsletters/Newsletter_2008_03_SP.htm</a>
																				</span>
																				<strong>
																				</strong>
																		</span>
																</font>
														</li>
												</font>
										</ul>
										<font size="2" face="Tahoma">
										</font>
										<p>
												<font size="2" face="Tahoma">
														<font color="#800000">
																<strong>Understanding Scrum Rules</strong>
														</font>
														<br />
							For Agile Scrum to be successful, you must have 
							buy-in from the highest stake holders to the 
							individuals doing the work and every individual must 
							follow the rules.   Below are the rules 
							for Scrum:</font>
										</p>
										<ul>
												<li>
														<span style="font-family: Tahoma; font-size: x-small;">
																<strong>Obtain Number of Hours Commitment up 
								Front</strong> - Before beginning an Agile 
								30-day sprint, each team member must commit to a 
								certain number of hours for the 30 day sprint.  </span>
												</li>
												<li>
														<span style="font-family: Tahoma; font-size: x-small;">
																<strong>Gather Requirements / Estimates up Front</strong> 
								- The Product Manager will specify the sprint 
								goal and the team will gather the requirements 
								and provide an estimate up front.  Once the 
								estimates are done, the requirements are 
								prioritized and only the ones that will fit into 
								the sprint are worked on (based on estimated 
								hours of all tasks vs. hours committed to by 
								team members).</span>
												</li>
												<li>
														<span style="font-family: Tahoma; font-size: x-small;">
																<strong>Enter Time Daily</strong> - Each person 
								on the team agrees to enter their actual hours 
								and estimated hours remaining EVERY DAY.</span>
												</li>
												<li>
														<span style="font-family: Tahoma; font-size: x-small;">
																<strong>Daily Builds</strong> - Each programmer 
								will check code in daily or more frequently if 
								possible.  The checked in code must be 
								compilable.  An automated process will 
								create daily builds to prevent manual merging of 
								code and allowing the Quality Assurance Engineer 
								to test features of the sprint.</span>
												</li>
												<li>
														<span style="font-family: Tahoma; font-size: x-small;">
																<strong>No new Requirements for a Sprint</strong> 
								- No new requirements can enter into the sprint 
								unless all features of the sprint are completed. 
								Management and other parties that are not 
								directly involved in completing the features for 
								the sprint are not allowed to direct actions of 
								team members on items not included in the 
								sprint.  If an emergency feature is 
								required by management, the sprint must be 
								aborted and a new sprint must begin with the new 
								feature set.</span>
												</li>
												<li>
														<span style="font-family: Tahoma; font-size: x-small;">
																<strong>Keep the Daily Scrum Meetings Short</strong> 
								- Daily Scrum meetings are held to determine 
								what things were done since the last Scrum 
								meeting, what things will be done in the next 
								Scrum meeting and what impediments stand in the 
								way of any person on the team.  The Daily 
								Scrum meeting is designed to be completed in 15 
								minutes.  If it takes 30 minutes, this is 
								OK, but it should not extend longer than that 
								without a solid business reason for it.  
								Team members that show up to Daily Scrum 
								meetings late are required to pay the Scrum 
								Master a $1 fine.</span>
												</li>
												<li>
														<span style="font-family: Tahoma; font-size: x-small;">
																<strong>Code Inspections are Paramount </strong>
								- Upon completing a particular feature, the 
								programmer should illustrate the feature to the 
								team and show the code that drives the feature.  
								The team should inspect the code for 
								re-usability, cleanness, and adherence to 
								established coding standards.</span>
												</li>
										</ul>
										<p>
												<font size="2" face="Tahoma">
														<font color="#800000">
																<strong>What's Next?</strong>
														</font>
														<br />
							Upcoming newsletters will discuss the following 
							topics:</font>
										</p>
										<ul>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - Scrum Kickoff and 
								Product Backlog</font></li>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - The Daily Scrum 
								Meeting</font></li>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - Reporting and 
								Metrics</font></li>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - Retrospectives</font></li>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - Site specific 
								variants of Scrum</font></li>
										</ul>
								</td>
						</tr>
						<tr>
								<td bgcolor="#f7f7f2">
										<font size="4" color="#000080" face="Tahoma">
												<b>
							Helpful Templates</b>
										</font>
										<p>
												<b>
														<font size="2" face="Tahoma">Below are some helpful 
							templates to aid you in developing software 
							solutions on-time and on-budget:</font>
												</b>
										</p>
										<b>
										</b>
										<ul>
												<b>
												</b>
												<li>
														<b>
																<font size="2" face="Tahoma">
																		<b>
								Pragmatic Agile Development -<a target="_blank" href="http://www.pragmaticsw.com/PADOverview.pdf">http://www.pragmaticsw.com/PADOverview.pdf</a></b>
																</font>
														</b>
												</li>
												<b>
												</b>
												<li>
														<b>
																<font size="2" face="Tahoma">
																		<b>Software 
								</b>
																		<strong>Development /QA Templates</strong> -<a href="http://www.pragmaticsw.com/Templates.asp">http://www.pragmaticsw.com/Templates.asp</a></font>
														</b>
												</li>
												<b>
												</b>
												<li>
														<b>
																<font size="2" face="Tahoma">
																		<b>Software 
								Planner</b> -
								<a href="http://www.softwareplanner.com/SoftwarePlanner.asp">http://www.SoftwarePlanner.com</a></font>
														</b>
												</li>
												<b>
												</b>
												<li>
														<b>
																<span style="font-family: Tahoma; font-size: x-small;">
								Agile Training</span>
																<b>
																		<font size="2" face="Tahoma"> -
								<a href="http://www.pragmaticsw.com/Services.asp">
								http://www.PragmaticSW.com/Services.asp</a></font>
																</b>
														</b>
												</li>
												<b>
														<b>
														</b>
												</b>
										</ul>
										<b>
												<b>
												</b>
										</b>
								</td>
						</tr>
						<tr>
								<td bgcolor="#ffffc1">
										<font size="4" color="#000080" face="Tahoma">
												<b>
							About the Author<br /></b>
										</font>
										<font size="2" face="Tahoma">
												<br />
							Steve Miller is the President of Pragmatic Software 
							(<a target="_blank" href="http://www.pragmaticsw.com/">http://www.PragmaticSW.com</a>). 
							With over 23 years of experience, Steve has 
							extensive knowledge in project management, software 
							architecture and test design. Steve publishes a 
							monthly newsletter for companies that design and 
							develop software. You can read other newsletters at
							<a target="_blank" href="http://www.pragmaticsw.com/Newsletters.asp">
							http://www.PragmaticSW.com/Newsletters.asp</a>. 
							</font>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/tjitty/aggbug/62259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2009-10-30 13:17 <a href="http://www.cnitblog.com/tjitty/archive/2009/10/30/62259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Agile Scrum - Scrum Kickoff and Product Backlog</title><link>http://www.cnitblog.com/tjitty/archive/2009/10/30/62257.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Fri, 30 Oct 2009 05:01:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2009/10/30/62257.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/62257.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2009/10/30/62257.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/62257.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/62257.html</trackback:ping><description><![CDATA[
		<strong>A</strong>
		<font size="4">
				<strong>gile Scrum 
							- Scrum Kickoff and Product Backlog</strong>
		</font>
		<table width="100%" border="0" cellpadding="5" cellspacing="5">
				<tbody>
						<tr>
								<td>
										<font size="2" face="Tahoma">Many of us have 
							experienced projects that drag on much longer than 
							expected and cost more than planned. Companies 
							looking to improve their software development 
							processes are now exploring how Agile can help their 
							Enterprise more reliably deliver software quickly, 
							iteratively and with a feature set that hits that 
							mark.  While Agile has different "flavors", 
							Scrum is one process for implementing Agile.  
							This newsletter is one in a series of 
							newsletters that will discuss the Agile Scrum 
							process and will end with variants of Scrum that can 
							be used to aid in improving your software releases. 
							Here are the prior newsletters in this series:<ul><li><span style="font-family: Tahoma; font-size: x-small;"><strong><font size="2" face="Tahoma">Feb 2008: 
								Agile Scrum - An Overview </font><br /></strong><span style="font-family: Tahoma;"><a href="http://www.pragmaticsw.com/newsletters/Newsletter_2008_02_SP.htm">
								http://www.pragmaticsw.com/newsletters/Newsletter_2008_02_SP.htm</a></span><strong></strong></span></li><li><font size="2" face="Tahoma"><span style="font-family: Tahoma; font-size: x-small;"><strong>Mar 2008: Agile Scrum - Team Composition <br /></strong><span style="font-family: Tahoma;"><a href="http://www.pragmaticsw.com/newsletters/Newsletter_2008_03_SP.htm">http://www.pragmaticsw.com/newsletters/Newsletter_2008_03_SP.htm</a></span><strong></strong></span></font></li><li><font size="2" face="Tahoma"><span style="font-family: Tahoma; font-size: x-small;"><strong>Apr 2008: Agile Scrum - Understanding 
								Scrum Rules<br /></strong><span style="font-family: Tahoma;"><a target="_blank" href="http://www.pragmaticsw.com/newsletters/Newsletter_2008_04_SP.htm">
								http://www.pragmaticsw.com/newsletters/Newsletter_2008_04_SP.htm</a></span><strong></strong></span></font></li></ul></font>
										<p>
												<font size="2" face="Tahoma">
														<span style="color: rgb(128, 0, 0);">
																<strong>30 Day Sprints</strong>
														</span>
														<br />
														<span style="font-size: x-small;">Agile differs from 
							standard Waterfall development in that development 
							has a smaller timeframe with a smaller feature set.  
							Agile Scrum implements releases every 30 days 
							(called 30 day sprints).  Upon completing a 
							sprint, you can move the software to production (if 
							production-ready) or move into another 30 day sprint 
							to implement additional features.</span>
												</font>
										</p>
										<p>
												<font size="2" color="#800000" face="Tahoma">
														<strong>Pragmatic Agile Development (PAD) and Agile 
							Scrum</strong>
												</font>
												<font size="2" face="Tahoma">
														<br />
														<span style="font-size: x-small;">It is important to 
							note that the way we use Agile Scrum varies from a 
							purist version of Scrum as we have made 
							modifications to Agile Scrum to work well for our 
							development environment.  Our version of Scrum 
							is called Pragmatic Agile Development (PAD) and 
							differs from a more purist Scrum implementation in 
							these ways:</span>
												</font>
										</p>
										<ol>
												<li style="font-family: Tahoma; font-size: x-small;">
														<strong>Scrum Planning</strong> - In Scrum, 
								planning for an upcoming sprint is accomplished 
								in 1 day, in PAD the planning spans 1 week.  
								This is because we write more detailed 
								specifications than a purist Scrum does (see 
								next bullet item).</li>
												<li style="font-family: Tahoma; font-size: x-small;">
														<strong>User Stories vs. Specifications </strong>
								- In Scrum, requirements are written on index 
								cards (called User Stories) and does not contain 
								prototypes or detailed explanations of the 
								feature set.  In PAD, we spend time 
								detailing the requirement specifications with 
								prototypes to ensure that time is well spent on 
								the feature, reducing rework.</li>
												<li style="font-family: Tahoma; font-size: x-small;">
														<strong>30 Day Sprints</strong> - In Scrum, 
								development is done in <strong>30 calendar days</strong>.  
								In PAD, development is done in <strong>30 
								working days</strong>, skipping holidays.  
								This provides us with more evenly distributed 
								sprints.</li>
												<li style="font-family: Tahoma; font-size: x-small;">
														<strong>Team Composition</strong> - In Scrum, 
								developers are expected to perform all duties 
								(analysis, design, coding, test case 
								development, execution, and documentation).  
								In PAD, developers help with analysis and design 
								and perform all the coding.  We have 
								specialized team members (Software Quality 
								Engineers) for test case development and 
								specialized team members for documentation.  
								We do this because our experience has shown that 
								we need specialists in these areas. </li>
										</ol>
										<p style="font-family: Tahoma; font-size: x-small;">
							The goal of software development is to deliver your 
							software quickly and with high quality, so tweaking 
							a methodology to meet your needs makes sense. 
							</p>
										<p>
												<font size="2" face="Tahoma">
														<font color="#800000">
																<strong>Product Backlog</strong>
														</font>
														<br />
												</font>
												<span style="font-size: x-small; font-family: Tahoma;">
							As your existing clients request new features or as 
							you come up with new features that make the product 
							more marketable, these items are called the <strong>
							Product Backlog</strong>.   In the PAD 
							Scrum Planning week, you will set the goal for the 
							sprint and prioritize product backlog items to 
							determine which ones can fit within the sprint.</span>
										</p>
										<p>
												<span style="font-family: Tahoma; font-size: x-small; color: rgb(128, 0, 0);">
														<strong>Scrum Kickoff and </strong>
												</span>
												<span style="font-size: x-small; font-family: Tahoma;">
														<strong>
																<span style="color: rgb(128, 0, 0);">Planning Week
							<br /></span>
														</strong>In the purest version of Scrum, you 
							have only 1 planning day for the sprint and 
							requirements are written on index cards (called User 
							Stories). We believe this is not enough time or 
							detail to deliver quality features, as we have shown 
							that taking the time to fully detail the feature 
							saves time once the client (or your internal team) 
							receives the features, it takes less re-work. So you 
							should devote a week to planning. </span>
										</p>
										<p>
												<span style="font-size: x-small; font-family: Tahoma;">
							Each release (or sprint) will begin with a PAD 
							Planning Week. The first day of the PAD Planning 
							week will begin with defining the goal for the 
							sprint and identifying features you wish to have in 
							the release (from the product backlog), in priority 
							order. </span>
										</p>
										<p>
												<span style="font-size: x-small; font-family: Tahoma;">
							In the purest version of Scrum, releases are done in 
							30-day sprints. The 30 days are calendar days, so 
							with holidays and weekends, this may equate to 19 to 
							23 working days.   We have found that 
							sprints are best implemented in 30 working day 
							sprints (excluding holidays), as this provides more 
							evenly distributed sprints.  The 30-day sprint 
							begins after the PAD Planning week concludes. </span>
										</p>
										<p>
												<span style="font-size: x-small; font-family: Tahoma;">
							During the first day of the PAD Planning Week, each 
							team member will identify the number of hours they 
							can contribute to the sprint, allowing you to 
							determine the maximum velocity for the sprint 
							(velocity simply means the number of hours that can 
							be worked in the sprint). By knowing the maximum 
							velocity, you can determine what features will fit 
							in the sprint. After the high level features are 
							identified in the first day of PAD Planning, you 
							will assign specific work order numbers to each high 
							level feature and assign a set of work orders to 
							each team member. </span>
										</p>
										<p>
												<span style="font-size: x-small; font-family: Tahoma;">
							The team members will spend the week defining the 
							detailed requirements for their assigned work 
							orders. Note: Work Orders are simply a hard copy 
							document of each functional specification. </span>
										</p>
										<p>
												<span style="font-size: x-small; font-family: Tahoma;">
														<strong>
																<span style="text-decoration: underline;">
							User Interface Design Guidelines </span>
																<br />
														</strong>Because you will have multiple team members 
							creating requirements, it is critical for your team 
							to define your user interface styles in a style 
							guide and ensure all your team members adhere to 
							those standards. </span>
										</p>
										<p>
												<span style="font-size: x-small; font-family: Tahoma;">
														<strong>
																<span style="text-decoration: underline;">
							Decomposing Work Orders <br /></span>
														</strong>Since sprints are limited to 30 
							working development days, you will be forced to make 
							hard decisions about the features that can fit into 
							the sprint. When you are assigned a work order for a 
							feature of the sprint, you should decompose the 
							feature into multiple work orders so that you can 
							prioritize specific pieces of the feature.</span>
										</p>
										<p>
												<span style="font-size: x-small; font-family: Tahoma;">
							For example, let’s assume that you are redesigning 
							your user interface for a more pleasing look and 
							feel, and the aesthetics are the most important 
							issue for the sprint. You also would like the 
							screens to be more user-friendly, so you have some 
							issues you wish to address (like prompting to save 
							changes when changes are made and they switch 
							between tabs on the screen). In this case, you 
							should decompose these into 2 separate work orders 
							(one for the aesthetics and another for the tab 
							switching). By doing this, it allows you to 
							prioritize the tab switching lower than the 
							aesthetics. </span>
										</p>
										<p>
												<span style="font-family: Tahoma; font-size: x-small; color: rgb(128, 0, 0);">
														<strong>User Stories vs. Work Orders<br /></strong>
												</span>
												<span style="font-family: Tahoma; font-size: x-small;">
							As mentioned, we favor work orders over a user 
							story.  Here is an example of a user story 
							written on an index card:</span>
										</p>
										<p>
												<img src="http://www.pragmaticsw.com/newsletters/SP_2008_05_001.jpg" style="border-style: solid; border-width: 4px;" width="519" height="346" />
												<span style="font-family: Tahoma; font-size: x-small;">
												</span>
										</p>
										<p>
												<span style="font-family: Tahoma; font-size: x-small;">
							Here is an example of a work order, notice how much 
							more detail is presented and how having a prototype 
							of the item you are delivering reduces ambiguity of 
							the feature:</span>
										</p>
										<p>
												<img alt="" src="http://www.pragmaticsw.com/newsletters/SP_2008_05_002.gif" width="600" height="388" />
										</p>
										<p>
												<span style="font-family: Tahoma; font-size: x-small;">
							If you would like an example of a work order, 
							download one here:
							<a href="http://www.pragmaticsw.com/Template_WorkOrder.doc">
							http://www.pragmaticsw.com/Template_WorkOrder.doc</a>. 
							Other templates for the PAD process are available at
							<a href="http://www.pragmaticsw.com/templates">
							http://www.pragmaticsw.com/templates</a>. 
							</span>
										</p>
										<p>
												<font size="2" face="Tahoma">
														<font color="#800000">
																<strong>What's Next?</strong>
														</font>
														<br />
							Upcoming newsletters will discuss the following 
							topics:</font>
										</p>
										<ul>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - The 30 Day Sprint 
								and the Daily Scrum 
								Meeting</font></li>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - Reporting and 
								Metrics</font></li>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - Retrospectives</font></li>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - Site specific 
								variants of Scrum</font></li>
										</ul>
								</td>
						</tr>
						<tr>
								<td bgcolor="#f7f7f2">
										<font size="4" color="#000080" face="Tahoma">
												<b>
							Helpful Templates</b>
										</font>
										<p>
												<b>
														<font size="2" face="Tahoma">Below are some helpful 
							templates to aid you in developing software 
							solutions on-time and on-budget:</font>
												</b>
										</p>
										<b>
										</b>
										<ul>
												<b>
												</b>
												<li>
														<b>
																<font size="2" face="Tahoma">
																		<b>
								Pragmatic Agile Development -<a target="_blank" href="http://www.pragmaticsw.com/PADOverview.pdf">http://www.pragmaticsw.com/PADOverview.pdf</a></b>
																</font>
														</b>
												</li>
												<b>
												</b>
												<li>
														<b>
																<font size="2" face="Tahoma">
																		<b>Software 
								</b>
																		<strong>Development /QA Templates</strong> -<a href="http://www.pragmaticsw.com/Templates.asp">http://www.pragmaticsw.com/Templates.asp</a></font>
														</b>
												</li>
												<b>
												</b>
												<li>
														<b>
																<font size="2" face="Tahoma">
																		<b>Software 
								Planner</b> -
								<a href="http://www.softwareplanner.com/SoftwarePlanner.asp">http://www.SoftwarePlanner.com</a></font>
														</b>
												</li>
												<b>
												</b>
												<li>
														<b>
																<span style="font-family: Tahoma; font-size: x-small;">
								Agile Training</span>
																<b>
																		<font size="2" face="Tahoma"> -
								<a href="http://www.pragmaticsw.com/Services.asp">
								http://www.PragmaticSW.com/Services.asp</a></font>
																</b>
														</b>
												</li>
												<b>
														<b>
														</b>
												</b>
										</ul>
										<b>
												<b>
												</b>
										</b>
								</td>
						</tr>
						<tr>
								<td bgcolor="#ffffc1">
										<font size="4" color="#000080" face="Tahoma">
												<b>
							About the Author<br /></b>
										</font>
										<font size="2" face="Tahoma">
												<br />
							Steve Miller is the President of Pragmatic Software 
							(<a target="_blank" href="http://www.pragmaticsw.com/">http://www.PragmaticSW.com</a>). 
							With over 23 years of experience, Steve has 
							extensive knowledge in project management, software 
							architecture and test design. Steve publishes a 
							monthly newsletter for companies that design and 
							develop software. You can read other newsletters at
							<a target="_blank" href="http://www.pragmaticsw.com/Newsletters.asp">
							http://www.PragmaticSW.com/Newsletters.asp</a>. 
							</font>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/tjitty/aggbug/62257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2009-10-30 13:01 <a href="http://www.cnitblog.com/tjitty/archive/2009/10/30/62257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>How to determine that your OS is 64-bit compliant</title><link>http://www.cnitblog.com/tjitty/archive/2009/07/14/60091.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Tue, 14 Jul 2009 14:05:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2009/07/14/60091.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/60091.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2009/07/14/60091.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/60091.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/60091.html</trackback:ping><description><![CDATA[
		<h3>
				<font face="Arial">How can I determine if my computer/operating system is 64-bit?</font>
		</h3>
		<table class="faqtitle">
				<tbody>
						<tr>
								<td>
										<font face="Arial">
	
	Title
	
    </font>
								</td>
								<td rowspan="3">
										<font face="Arial"> </font>
								</td>
								<td>
										<font face="Arial">
	
	How to determine that your OS is 64-bit compliant
	
    </font>
								</td>
						</tr>
						<tr>
								<td>
										<font face="Arial">
	
	Author
	
    </font>
								</td>
								<td>
										<font face="Arial">
	
	Pete Huckelba, StataCorp
	
    </font>
								</td>
						</tr>
						<tr>
								<td>
										<font face="Arial">
	
	Date
	
    </font>
								</td>
								<td>
										<font face="Arial">
	
	June 2005; updated February 2009
	
    </font>
								</td>
						</tr>
				</tbody>
		</table>
		<hr />
		<h3 id="windows">
				<font color="#ff0000" face="Arial">Windows</font>
		</h3>
		<p>
				<font face="Arial">
   If you are using Windows Vista, click <b>Start</b> -&gt; <b>Control Panel</b>
   -&gt; <b>System and Maintenance</b> -&gt; <b>System</b>.  The
   <b>System type:</b> line will give you the Operating System type:

</font>
		</p>
		<div class="centerit">
				<font face="Arial">
						<a href="javascript:big_window('/support/faqs/win/vista_64.gif')">
								<img src="http://www.stata.com/support/faqs/win/vista_64sm.gif" style="padding: 5px; width: 200px;" alt="" />
						</a>
				</font>
		</div>
		<p>
				<font face="Arial">
   If you are using Windows XP, click <b>Start</b> -&gt; <b>Run</b> and type
   <b>dxdiag</b>.  If a Windows dialog box is displayed asking if you want to
   verify your drivers, you can safely click <b>No</b> and continue.  When the
   program has finished loading, you should see something similar to one of the
   following images:

</font>
		</p>
		<div class="centerit">
				<table class="centerit" style="width: 100%;">
						<tbody>
								<tr>
										<td style="vertical-align: middle; text-align: center;">
												<font face="Arial">
														<a href="javascript:big_window('/support/faqs/win/winxp64.gif')">
																<img src="http://www.stata.com/support/faqs/win/winxp64sm.gif" style="padding: 5px; width: 200px;" alt="" />
														</a>

 

<a href="javascript:big_window('/support/faqs/win/winxp64-2.gif')"><img src="http://www.stata.com/support/faqs/win/winxp64-2sm.gif" style="padding: 5px; width: 200px;" alt="" /></a>

 

<a href="javascript:big_window('/support/faqs/win/win2003.gif')"><img src="http://www.stata.com/support/faqs/win/win2003sm.gif" style="padding: 5px; width: 200px;" alt="" /></a></font>
										</td>
								</tr>
						</tbody>
				</table>
		</div>
		<p>
				<font face="Arial">
  The <b>Operating System</b> line, refers to Windows &lt;some
  version&gt; x64 or 64-bit edition.  The last image above specifies the processor
  <b>Itanium</b>, which is a 64-bit processor.
</font>
		</p>
		<h3 id="mac">
				<font color="#ff0000" face="Arial">Mac</font>
		</h3>
		<p>
				<font face="Arial">
  Select <b>About this Mac</b> from the <b>Apple</b> menu.  The text below
  <b>Mac OS X</b> will give the operating system version, and the
  <b>Processor</b> line will give you the processor type.
</font>
		</p>
		<div class="centerit">
				<font face="Arial">
						<img src="http://www.stata.com/support/faqs/win/aboutthismac.jpg" alt="about this mac" />
				</font>
		</div>
		<p>
				<font face="Arial">
  Mac OS X 10.5 (or greater) is a 64-bit operating system.  Intel Core 2 Duo,
  Intel Xeon, and PowerPC G5 are 64-bit processors.  However, 64-bit Stata for
  Mac is available only for 64-bit Intel-based Macs.
</font>
		</p>
		<p>
				<font face="Arial">
  All currently shipping Macs have a 64-bit processor and a 64-bit operating
  system.
</font>
		</p>
		<h3 id="unix">
				<font color="#ff0000" face="Arial">Unix (IBM-AIX, Sun Solaris)</font>
		</h3>
		<ul class="plist">
				<li>
						<font face="Arial">IBM-AIX

   <br /><br />
   The <b>getconf</b> command will return the configuration of your machine.
   Since you are looking only for the kernel parameters, you should type

   <br /><br /></font>
						<div class="indent" style="font-family: courier,monospace;">
								<font face="Arial">
										<b>[cph@anna ~]$ getconf -a | grep KERN</b>
										<br />
   KERNEL_BITMODE:                         64</font>
						</div>
						<font face="Arial">
								<br />
   If that fails or does not return a result, try the <b>file</b> command.

   <br /><br /></font>
						<div class="indent" style="font-family: monospace;">
								<font face="Arial">
										<b>[cph@anna ~]$ file /usr/lib/boot/unix*</b>
										<br />
   /usr/lib/boot/unix: <span style="color: red;">64-bit XCOFF executable</span> or object module not stripped<br />
   /usr/lib/boot/unix_64: <span style="color: red;">64-bit XCOFF executable</span> or object module not stripped<br />
   /usr/lib/boot/unix_mp: executable (RISC System/6000) or object module not stripped<br />
   /usr/lib/boot/unix_up: executable (RISC System/6000) or object module not stripped<br /></font>
						</div>
						<p>
						</p>
						<div class="indent" style="font-family: monospace;">
								<font face="Arial">
										<b>[cph@ozona ~]$ file /usr/lib/boot/unix*</b>
										<br />
   /usr/lib/boot/unix:     symbolic link to /usr/lib/boot/unix_up.<br />
   /usr/lib/boot/unix_kdb: executable (RISC System/6000) or object module not stripped<br />
   /usr/lib/boot/unix_up:  executable (RISC System/6000) or object module not stripped</font>
						</div>
						<font face="Arial">
								<br />

   We can see that 'anna' is a 64-bit capable platform, and 'ozona' is only 32-bit.
</font>
				</li>
				<li>
						<font face="Arial">Sun Solaris

  <br /><br />
   Sun's platforms transitioned to 64-bit over a period of time, making
   identifying the platform for 64-bit compliance tricky.  Sun has stated:
  <br /><br /></font>
						<div class="indent">
								<font face="Arial">
      Sun has implemented its 64-bit operating system in phases. The Solaris
      2.5 Operating Environment provided support for increased precision with
      64-bit math and also included support for 64-bit asynchronous I/O. The
      Solaris 2.6 Operating Environment added support for large datasets with
      large (1 Terabyte) filesystems while allowing co-existence of 32-bit and
      64-bit files. Beginning with the Solaris 7 Operating Environment, Sun
      introduced support for large virtual address spaces with a full 64-bit
      operating system. Sun began shipping 64-bit hardware in 1995. By phasing
      in operating system support for 64-bits Sun has provided 64-bit features
      as the market has demanded them while guaranteeing compatibility for
      existing 32-bit applications.
  </font>
						</div>
						<font face="Arial">
								<br />
   To determine what kind of binaries your Solaris machine can run, try the following:

   <br /><br /></font>
						<div class="indent" style="font-family: monospace;">
								<font face="Arial">
										<b>eden:/home/cph: isainfo -v</b>
										<br />
										<span style="color: red;">64-bit</span> sparcv9 applications<br />
   32-bit sparc applications</font>
						</div>
						<font face="Arial">
								<br />
   You can see that this Solaris machine is capable of running 32-bit as well
   as 64-bit applications.  If <b>isainfo</b> fails, running a 64-bit
   application on your Sun will generally not be possible, unless of course
   <b>isainfo</b> is not in your path or has not been installed.  You can also
   use the <b>uname</b> command to glean more information:

   <br /><br /></font>
						<div class="indent" style="font-family: monospace;">
								<font face="Arial">
										<b>eden:/home/cph: uname -a</b>
										<br />
   SunOS eden 5.8 Generic_108528-05 sun4u sparc SUNW,Ultra-5_10</font>
						</div>
						<font face="Arial">
								<br />
						</font>
						<div class="indent" style="font-family: monospace;">
								<font face="Arial">
										<b>lagrange:/usr/users/cph: uname -a</b>
										<br />
   SunOS lagrange 5.5.1 Generic_103640-29 sun4u sparc SUNW,Ultra-1</font>
						</div>
						<font face="Arial">
								<br />
								<br />
   SunOS/Solaris versions map to the following:

   </font>
						<div class="centerit" style="padding-top: 5px;">
								<table width="80%" align="center" border="1" cellpadding="0" cellspacing="0">
										<tbody>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">
																		<b>SunOS</b>
																</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">
																		<b>SOLARIS</b>
																</font>
														</td>
												</tr>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">5.3</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">2.3</font>
														</td>
												</tr>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">5.4</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">2.4</font>
														</td>
												</tr>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">5.5</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">2.5</font>
														</td>
												</tr>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">5.5.1</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">2.5.1</font>
														</td>
												</tr>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">5.6</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">2.6</font>
														</td>
												</tr>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">5.7 or greater is 64-bit compliant</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">2.7 or greater is 64-bit compliant</font>
														</td>
												</tr>
										</tbody>
								</table>
						</div>
						<font face="Arial">
								<br />
   While all UltraSparc processors are capable of 64-bit computing, the OS
   release level may be the limiting factor.  In the above excerpt, 'eden'
   (SunOS 5.8) is a fully compliant 64-bit platform, and 'lagrange' (SunOS
   5.5.1) is a 64-bit UltraSparc limited to 32-bit computing.
</font>
				</li>
		</ul>
		<h3 id="linux">
				<font color="#ff0000" face="Arial">Linux</font>
		</h3>
		<p>
				<font face="Arial">
  Linux users should type the <b>uname</b> command.  Depending on the
  platform, you may see
</font>
		</p>
		<p>
		</p>
		<div class="indent" style="font-family: monospace;">
				<font face="Arial">
						<b>[cph@gaylord ~]$ uname -a</b>
						<br />
Linux gaylord.stata.com 2.6.11-1.27_FC3 #1 Tue May 17 20:24:57 EDT 2005 x86_64 x86_64 <span style="color: red;">x86_64 GNU/Linux</span><br /></font>
		</div>
		<p>
		</p>
		<div class="indent" style="font-family: monospace;">
				<font face="Arial">
						<b>[cph@caddo ~]$ uname -a</b>
						<br />
Linux caddo.stata.com 2.6.9-5.0.5.EL #1 SMP Fri Apr 8 14:20:58 EDT 2005 ia64 ia64
<span style="color: red;">ia64 GNU/Linux</span></font>
		</div>
		<p>
		</p>
		<div class="indent" style="font-family: monospace;">
				<font face="Arial">
						<b>[cph@tango ~]$ uname -a</b>
						<br />
Linux tango.stata.com 2.6.10-1.771_FC2smp #1 SMP Mon Mar 28
01:10:51 EST 2005 i686 i686 <span style="color: red;">i386 GNU/Linux</span></font>
		</div>
		<p>
				<font face="Arial">
						<font color="#0000ff">In the above listing, 'gaylord' (x86_64 GNU/Linux) and 'caddo' (ia64
  GNU/Linux) are 64-bit compliant.  'tango' (i386 GNU/Linux) is only a 32-bit
  platform.
</font>
				</font>
		</p>
<img src ="http://www.cnitblog.com/tjitty/aggbug/60091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2009-07-14 22:05 <a href="http://www.cnitblog.com/tjitty/archive/2009/07/14/60091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Scrum + Manual Testing methodology (for WEB apps.)</title><link>http://www.cnitblog.com/tjitty/archive/2009/02/13/54512.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Fri, 13 Feb 2009 06:16:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2009/02/13/54512.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/54512.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2009/02/13/54512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/54512.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/54512.html</trackback:ping><description><![CDATA[
		<font face="Arial">
				<br />
		</font>
		<h1 class="title">
				<font face="Arial">Scrum + Manual Testing methodology (for WEB apps.)</font>
		</h1>
		<!-- begin content -->
		<font face="Arial">
				<span class="submitted">Submitted by <a href="http://www.testingreflections.com/user/view/1469" title="View user profile.">Ainars Galvans</a> on Fri, 19/09/2008 - 07:51.</span>
				<span class="taxonomy">
						<a href="http://www.testingreflections.com/taxonomy/page/or/7" title="Delivering software with a focus on " working="" software="" over="" comprehensive="" documentation="" -http:="" www.agilemanifesto.org="">agile</a>
				</span>
		</font>
		<div class="content">
				<font face="Arial">I
believe there are two wrong ways to add the formal QA to Scrum: to give
up manual testing skills and learn automation or give up agile
principle of quick feedback and test one iteration behind. There is a
better way and I’ve seen some articles struggling around with generic
phrases like collaboration, optimization, exploratory testing. But none
describing the methodology.<br />
What follows is a theoretical research (based on different resources)
trying to define such a methodology. The main idea is to add new role
(beside the team, scrum master and project owner) called a tester. The
methodology sounds very logical. Why nothing like this has been
published beforehand? Am I missing a lot of issues with this
methodology? Anyone willing to apply it?! Please e-mail
ojnjars@inbox.lv if you are willing to contribute this research.<br /><br /><b> Context – Assumptions </b><br />
To make things easier we make several assumptions – clarification of
development project specifics. So we will describe them as assumptions
here:<br />
1.	Development Scrum consists of 2 week sprints<br />
2. The software is a web based with certain data in database. The role
of tester will include testing software in “QA environment”, while
developers are still doing unit tests in their environment which is not
as close to production one.<br />
3. It is decided that software deployment in “QA environment” should
follow the manual installation process the same as it will take place
in production environment. It optionally needs smart decision if to
redeploy data into database. The process may take up to 30 minutes and
is never done this way by developers in their environment<br />
4. The process of creating installation package (build process) may
also take up to 30 minutes, so will be executed once per night (nightly
build)<br /><br /><b> Day 1. Sprint Planning </b><br />
During the first day of a spring – sprint planning meeting – tester
participates in order to help to define acceptance criteria (by asking
what if questions to product owner) and estimating testing effort for
stories. It may appear that there are stories requiring a little
development effort but a lot of testing effort. Story selection may be
changed to disallow too much stories of such type into one sprint.
Alternatively part of testing activities may be postponed, creating a
separate story (adding what I would call “quality debt”) and adding to
backlog.<br /><br /><b>Day 2. Test Case Drafting </b><br />
A tester works: one day behind” the team. The second day of a sprint is
dedicated by tester to draft initial set of test cases for each
features included in the sprint. <br /><br /><b>Day 3-8. Normal days</b><br />
Each day starting day 3 of sprint in the morning tester installs latest
nightly build (manually using installation procedure/instructions
supplied by development team) to QA environment, do fast smoke tests if
they fail and emergency fixes are applied by the team. <br />
Features developed yesterday shall be tested today by tester. As
required tester communicates with each developer to transition the
knowledge of the feature functionality. Tester must also update
(complete) Test Cases in the process of testing as more test ideas may
come out during Exploratory Testing. If a feature testing requires too
much effort or tester discovers too much ideas and can’t accomplish
testing within the day he create new story ticket for further feature
investigation. If the ticket is not closed by the end of a sprint it
appears to be “Quality Debt” and must be announced to product owner for
prioritization. <br />
Because developers do unit testing most of the features should pass
acceptance criteria. However if for any reason they do not pass them in
QA environment, QA may return ticket to the team. If acceptance
criteria are met but there are more bugs around, tester reports them
separately, sending the initial story to End-To-End testing. Tester
also has to do wider investigation (based on project quality goals) and
report any usability suggestions, performance, security or other
potential treats. Such bugs must be assigned to Product Owner if they
don’t directly break the acceptance criteria of a story. Bugs that
(developer) team disagrees with or appears to require too much effort
also get assigned to Product Owner. They have to be addressed during
sprint retrospective meeting. So it appears that during sprint
retrospective no feature could be demonstrated if it has an open bug
against it assigned to anyone but product owner. <br /><br /><b>Day 9 – The QA day</b><br />
Because tester works one day behind, the day 8 of the sprint shall be
the last day of a new feature development. That is the reason why day 9
can be dedicated by team to bug fixing, re-factoring and analysis of
new features which might be included into next sprint i.e. next sprint
preparation. <br /><br /><b>Day 10 - retrospective meeting </b><br />
In order to demonstrate a feature in retrospective meeting it should be
implemented; tested and all bugs either fixed or assigned to Product
Owner for clarification (otherwise feature is postponed to next
sprint). Tester should demonstrate that features meet acceptance
criteria and demonstrate the issues assigned to product owner if any.
Product Owner should decide and prioritize those features/defects. The
team participates in the meeting to qualify their performance and
probably counter tester’s negative opinion. Tester also describes
“Quality Debt” changes – what was not tested due to lack of time.
Product owner may prioritize the postponed tests or even allow skipping
them.<br /><br /><b>More QA stuff after sprint</b><br />
Test Cases created during sprint shall be peer-reviewed by another
tester at any time later. For example by End-To-End tester if there are
any. Ideally review should be done during or by end of the day 10 so
that tester has the feedback by next planning meeting, but it may be
impossible. In any case tester is not forced to respond to review
feedback (fix test cases and run additional test if identified) until
the end of sprint (so that tester commitment during sprint planning is
not compromised). <br />
If more tests are identified during review they must be executed later
and any defects discovered should be assigned to product owner (added
to backlog). <br /><br /><b> Testing outside sprints </b><br />
Still there are types of tests that are not directly related to
functionality implemented by sprints. For example non-functional tests:
to validate that given architecture satisfies high availability
requirements. Actually the tester may not have enough skills to do
performance tests and a separate team or person may be assigned to do
performance testing based on agreed schedule.<br />
More over it is highly welcome to develop system-level automated
regression tests (based on, but not necessarily repeating manual test
cases) along with developer created unit tests. Those tests will aim
for different type of regression bugs. This activity may also take
place with a significant delay to feature implementation.<br />
The tester should make a smart decision to nominate the build that was
especially successful (without critical bugs) to be installed to the
special environment such as for performance test or test automation
environment.</font>
		</div>
		<font face="Arial">
				<br />
		</font>
		<font face="Arial">From: http://www.testingreflections.com/node/view/7378<br /><br /></font>
<img src ="http://www.cnitblog.com/tjitty/aggbug/54512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2009-02-13 14:16 <a href="http://www.cnitblog.com/tjitty/archive/2009/02/13/54512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Agile Scrum - An Overview</title><link>http://www.cnitblog.com/tjitty/archive/2009/02/13/54510.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Fri, 13 Feb 2009 06:13:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2009/02/13/54510.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/54510.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2009/02/13/54510.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/54510.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/54510.html</trackback:ping><description><![CDATA[
		<strong>A</strong>
		<font size="4">
				<strong>gile Scrum - 
							An Overview</strong>
		</font>
		<table border="0" cellpadding="5" cellspacing="5" width="100%">
				<tbody>
						<tr>
								<td>
										<font size="2" face="Tahoma">Many of us have 
							experienced projects that drag on much longer than 
							expected and cost more than planned. Companies 
							looking to improve their software development 
							processes are now exploring how Agile can help their 
							Enterprise more reliably deliver software quickly, 
							iteratively and with a feature set that hits that 
							mark.  While Agile has different "flavors", 
							Scrum is one process for implementing Agile.  
							This newsletter is the first in a series of 
							newsletters that will discuss the Agile Scrum 
							process and will end with variants of Scrum that can 
							be used to aid in improving your software releases.<br /><br /><font color="#800000"><strong>So what is Agile?</strong></font><br />
							According to
							<a target="_blank" href="http://en.wikipedia.org/wiki/Agile_software_development">
							Wikipedia</a>, Agile software development is a 
							conceptual framework for software engineering that 
							promotes development iterations throughout the 
							life-cycle of the project.   Simply put, 
							Agile allows your team to identify the most critical 
							features of the software that can be completed 
							within a short time frame (normally 1 to 2 months), 
							and it delivers a complete build with this set of 
							limited features as the first iteration. Once that 
							is done, you can move those features to production 
							or continue on to the next iteration.  By 
							breaking the releases into shorter stints, it allows 
							you to gain quicker releases and to capture return 
							on investment more quickly by putting the working 
							(but limited) features into production sooner.  
							This is in stark contrast to the more traditional 
							"Waterfall" approach, where you design all features 
							upfront, code each one, test each one, then move 
							into production.  Agile projects are 
							iteratively released to production months where 
							Waterfall projects normally span a year or more 
							before they are released to production.<br /><br /><font color="#800000"><strong>So what is Scrum?</strong></font><br />
							Scrum is process of implementing Agile, where 
							features are delivered in <strong>30 day sprints</strong>.  
							Scrum borrows its name from Rugby,  where a 
							sprint is the process of stopping play, then 
							vigorously playing until the sprint ends and a new 
							one begins.  The same idea applies here, where 
							you define the requirements for a <strong>30 day 
							sprint</strong> and work on them with vigor for 30 
							days without being sidetracked by other things or 
							having things re-prioritized.   A specific 
							feature is not recognized as being completed until 
							it is analyzed, designed, coded, tested, re-factored 
							and documented.  At the end of the 30 day 
							sprint, most features defined in the 30-day sprint 
							should be completed.  If some did not get 
							finished (because of being underestimated), the 
							uncompleted features can be moved to a later sprint.  
							A sprint is considered successful if all the <strong>
							completed features </strong>have high quality and can be put 
							into production (or beta) upon ending the sprint.  </font>
										<p>
												<font size="2" face="Tahoma">
														<font color="#800000">
																<strong>Do Team Member 
							Responsibilities Change?</strong>
														</font>
														<br />
							Managing Scrum development requires a major change 
							in how teams work together.  In traditional 
							Waterfall development, teams normally have a project 
							sponsor, a project manager, analysts, designers, 
							programmers, testers, and documentation specialists.  
							Each team member has specific duties which normally 
							do not normally overlap and they have a specific 
							reporting structure (most team members report to the 
							project manager).</font>
										</p>
										<p>
												<span style="font-family: Tahoma; font-size: x-small;">
							With Scrum, you have just 3 team roles and is 
							normally limited to 7 or less individuals (however, 
							you can have multiple Scrum teams in sets of 7 or 
							less):</span>
										</p>
										<ul>
												<li>
														<span style="font-family: Tahoma; font-size: x-small;">
																<strong>Product Owner</strong> - This is the 
								person that identifies and prioritizes the 
								features that will appear in a 30 day sprint.  
								This is normally the CEO, CTO, or some other 
								high level stakeholder that ultimately is 
								responsible for shaping the roadmap of their 
								product.</span>
												</li>
												<li style="font-family: Tahoma; font-size: x-small;">
														<strong>ScrumMaster</strong> - The ScrumMaster 
								is akin to the Project Manager in Waterfall 
								environments, but does not manage the team 
								deliverables at a micro level.  Instead, 
								this person is responsible for ensuring that the 
								30 day sprint stays on course, no new features 
								are added to the sprint, code inspection, and 
								ensuring everyone plays by the rules.</li>
												<li style="font-family: Tahoma; font-size: x-small;">
														<strong>The Team</strong> - With Waterfall, a 
								team consists of analysts, designers, testers 
								and documentation specialists.  With Scrum, 
								each team member is empowered and expected to 
								self-manage themselves and to participate in all 
								duties needed to deliver a feature.  This 
								includes analysis, design, coding, testing and 
								documentation.</li>
										</ul>
										<p>
												<font size="2" face="Tahoma">
														<font color="#800000">
																<strong>So how does Scrum Work 
							on a Day-by-Day Basis?</strong>
														</font>
														<br />
							Scrum begins with an 8 hour <strong>Scrum Kickoff 
							Meeting</strong>.  The Scrum Kickoff meeting is 
							divided into (2) 4 hour segments, where you first 
							determine what features are desired for the 30 day 
							sprint.  The last 4 hours are used to provide 
							rough estimates for the items identified for the 
							sprint.  If the estimates exceed the available 
							resources, the features are prioritized and less 
							important features are dropped from the sprint.  
							An important component of Scrum is using a time-box 
							approach, where meetings and events have a definite 
							time period (e.g. no more than 8 hours for the 
							kickoff meeting) and this time-box is strictly 
							enforced.  Once the features are locked in for 
							the 30-day sprint, no changes are allowed (new 
							features can not be introduced until the next 
							sprint).  </font>
												<span style="font-family: Tahoma; font-size: x-small;">
							When estimating features for a sprint, the estimates 
							must include time for analysis, design, coding, 
							testing, re-factoring, and documentation.  A 
							feature is not considered complete until all those 
							things are done.</span>
										</p>
										<p style="font-family: Tahoma; font-size: x-small;">
							Each day, a <strong>Daily Scrum Meeting</strong> is 
							held to determine how the features are progressing.  
							The meeting is no longer than 15 minutes, and each 
							team member is asked 3 questions:</p>
										<ul>
												<li>
														<p style="font-family: Tahoma; font-size: x-small;">
								What have you accomplished since the last Daily 
								Scrum Meeting?</p>
												</li>
												<li>
														<p style="font-family: Tahoma; font-size: x-small;">
								What will you do before the next Daily Scrum 
								Meeting?</p>
												</li>
												<li>
														<p style="font-family: Tahoma; font-size: x-small;">
								Is there anything that is impeding your progress 
								(and remedies are discussed)?</p>
												</li>
										</ul>
										<p style="font-family: Tahoma; font-size: x-small;">
							From a programmer's perspective, Scrum development 
							is a new paradigm which is very empowering but does 
							require them to follow specific rules:</p>
										<ul>
												<li>
														<p style="font-family: Tahoma; font-size: x-small;">
								Code is only checked out for the duration needed 
								to complete a feature.  No exceptions.  
								Most code will be checked in daily, as most 
								features are broken down into small feature 
								sets.</p>
												</li>
												<li>
														<p style="font-family: Tahoma; font-size: x-small;">
								Time must be entered daily.   For each 
								feature, you will have estimated hours, actual 
								hours and hours remaining to complete the 
								feature.  This information must be updated 
								at the end of every day so that the ScrumMaster 
								can determine if the release progress is 
								trending as required.</p>
												</li>
												<li>
														<p style="font-family: Tahoma; font-size: x-small;">
								Programmers are not allowed to be pulled off on 
								tangent projects, they must stick to the 
								features they have been assigned for the sprint.</p>
												</li>
												<li>
														<p style="font-family: Tahoma; font-size: x-small;">
								All team members must attend the <strong>Daily 
								Scrum Meeting</strong> and <strong>must be on 
								time</strong>.</p>
												</li>
												<li>
														<p style="font-family: Tahoma; font-size: x-small;">
								Code is compiled and deployed to a test server 
								daily. Teams can use automated build tools to 
								speed this process.  Automated tests should 
								be run against the daily releases to discover 
								any issues introduced by the release.</p>
												</li>
										</ul>
										<p>
												<span style="font-family: Tahoma; font-size: x-small;">
							Once a Scrum 30 day sprint is completed, all 
							features that were completed can then been moved to 
							a beta or production environment.  Following 
							the sprint is a Retrospective (post mortem), where 
							team members discuss and document things that went 
							well and things that can be improved upon in the 
							next sprint.</span>
										</p>
										<p>
												<font size="2" face="Tahoma">
														<font color="#800000">
																<strong>What's Next?</strong>
														</font>
														<br />
							Upcoming newsletters will discuss the following 
							topics:</font>
										</p>
										<ul>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - Team Composition</font></li>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - Understanding Scrum 
								Rules</font></li>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - Scrum Kickoff and 
								Product Backlog</font></li>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - The Daily Scrum 
								Meeting</font></li>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - Reporting and 
								Metrics</font></li>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - Retrospectives</font></li>
												<li style="font-family: Tahoma; font-size: x-small;">
								A<font size="2">gile Scrum - Site specific 
								variants of Scrum</font></li>
										</ul>
								</td>
						</tr>
						<tr>
								<td bgcolor="#f7f7f2">
										<font color="#000080" size="4" face="Tahoma">
												<b>
							Helpful Templates</b>
										</font>
										<p>
												<b>
														<font size="2" face="Tahoma">Below are some helpful 
							templates to aid you in developing software 
							solutions on-time and on-budget:</font>
												</b>
										</p>
										<b>
										</b>
										<ul>
												<b>
												</b>
												<li>
														<b>
																<font size="2" face="Tahoma">
																		<b>Software 
								</b>
																		<strong>Development /QA Templates</strong> -<a href="http://www.pragmaticsw.com/Templates.asp">http://www.pragmaticsw.com/Templates.asp</a></font>
														</b>
												</li>
												<b>
												</b>
												<li>
														<b>
																<font size="2" face="Tahoma">
																		<b>Software 
								Planner</b> -
								<a href="http://www.softwareplanner.com/SoftwarePlanner.asp">http://www.SoftwarePlanner.com</a></font>
														</b>
												</li>
												<b>
												</b>
												<li>
														<b>
																<font size="2" face="Tahoma">
																		<b>Defect 
								Tracker</b> -
								<a href="http://www.defecttracker.com/">http://www.DefectTracker.com</a></font>
														</b>
												</li>
												<b>
												</b>
										</ul>
										<b>
										</b>
								</td>
						</tr>
						<tr>
								<td bgcolor="#ffffc1">
										<font color="#000080" size="4" face="Tahoma">
												<b>
							About the Author<br /></b>
										</font>
										<font size="2" face="Tahoma">
												<br />
							Steve Miller is the President of Pragmatic Software 
							(<a target="_blank" href="http://www.pragmaticsw.com/">http://www.PragmaticSW.com</a>). 
							With over 23 years of experience, Steve has 
							extensive knowledge in project management, software 
							architecture and test design. Steve publishes a 
							monthly newsletter for companies that design and 
							develop software. You can read other newsletters at
							<a target="_blank" href="http://www.pragmaticsw.com/Newsletters.asp">
							http://www.PragmaticSW.com/Newsletters.asp</a>. 
							Steve's email is
							<a href="mailto:steve.miller@PragmaticSW.com">
							steve.miller@PragmaticSW.com</a>. </font>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/tjitty/aggbug/54510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2009-02-13 14:13 <a href="http://www.cnitblog.com/tjitty/archive/2009/02/13/54510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转贴：高效率编辑器 VIM－操作篇，非常适合 VIM 新手</title><link>http://www.cnitblog.com/tjitty/archive/2008/03/26/41515.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Wed, 26 Mar 2008 12:09:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2008/03/26/41515.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/41515.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2008/03/26/41515.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/41515.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/41515.html</trackback:ping><description><![CDATA[
		<p>虽然从很久前就开始用 VIM 了，但一直都是半</p>
		<del datetime="2007-01-27T13:01:01+00:00">调</del>吊
子，翻来覆去只用自己会的命令。最近为了提高书写代码的效率，还有 coding 时候的乐趣，又重新钻研了一下 VIM，发现了一篇很好的 VIM
入门的文章，原文是英文版的，我觉得非常适合 VIM 使用入门，所以翻译了过来。这里是简单的介绍了 VIM 的操作方式，并没有说为什么要用
VIM，如果你想知道答案可以去 Google，VIM 被誉为编辑器之神。<p>这篇教程写了在不同工作模式下使用 VIM 的一些基本技巧——即插入模式（insert mode）， 命令模式（command mode）， 存取文件等。目的是帮助刚刚接触 VIM 的新手更加有效率的使用这个出色的编辑器。</p><p>说明：在这篇文章里面，&lt;C-X&gt; 代表 Ctrl + X——就是按住 Ctrl 键然后再按 X。而且你可以在很多情况下使用 :help command 来获得大部分命令的帮助，这个是 VIM 的内部帮助文件命令。</p><p><strong>高效率移动</strong></p><p><em>在插入模式之外</em></p><p>基本上来说，你应该尽可能少的呆在插入模式里面，因为在插入模式里面 VIM
就像一个“哑巴”编辑器一样。很多新手都会一直呆在插入模式里面，因为这样易于使用。但 VIM
的强大之处在于他的命令行模式！你会发现，在你越来越了解 VIM 之后，你就会花越来越少的时间使用插入模式了。</p><p><em>使用 h、j、k、l</em></p><p>使用 VIM 高效率编辑的第一步，就是放弃使用箭头键。使用
VIM，你就不用频繁的在箭头键和字母键之间移来移去了，这会节省你很多时间。当你在命令模式时，你可以用 h、j、k、l
来分别实现左、下、上、右箭头的功能。一开始可能需要适应一下，但一旦习惯这种方式，你就会发现这样操作的高效之处了。</p><p>在你编辑你的电子邮件或者其他有段落的文本时，你可能会发现使用方向键和你预期的效果不一样，有时候可能会一次跳过了很多行。这是因为你的段落在
VIM 看来是一个大的长长的行。这时你可以在按 h、j、k 或者 l 之前键入一个 g，这样 VIM 就会按屏幕上面的行如你所愿的移动了。</p><p><em>在当前行里面有效的移动光标</em></p><p>很多编辑器只提供了简单的命令来控制光标的移动（比如左、上、右、下、到行首/尾等）。VIM
则提供了很多强大的命令来满足你控制光标的欲望。当光标从一点移动到另外一点，在这两点之间的文本（包括这两个点）称作被“跨过”，这里的命令也被称作是
motion。（简单说明一下，后面会用到这个重要的概念）</p><p>这里是常用到的一些命令（motion）：</p><ul><li>fx：移动光标到当前行的下一个 x 处。很明显，x 可以是任意一个字母，而且你可以使用 ; 来重复你的上一个 f 命令。</li><li>tx：和上面的命令类似，但是是移动到 x 的左边一个位置。（这真的很有用）</li><li>Fx：和 fx 类似，不过是往回找。</li><li>w：光标往前移动一个词。</li><li>b：光标往后移动一个词。</li><li>0：移动光标到当前行首。</li><li>^：移动光标到当前行的第一个字母位置。</li><li>$：移动光标到行尾。</li><li>)：移动光标到下一个句子。</li><li>( ：移动光标到上一个句子。</li></ul><p><em>在整个文件里面有效移动光标</em></p><p>VIM 有很多命令，可以用来到达文件里面你想到达的地方。下面是一些在文件里面移动的命令：</p><ul><li>&lt;C-F&gt;：向下移动一屏。</li><li>&lt;C-B&gt;：向上移动一屏。</li><li>G：到文件尾</li><li>numG：移动光标到指定的行（num）。（比如 10G 就是到第 10 行）</li><li>gg：到文件首</li><li>H：移动光标到屏幕上面</li><li>M：移动光标到屏幕中间</li><li>L：移动光标到屏幕下面</li><li>*：读取光标处的字符串，并且移动光标到它再次出现的地方。</li><li>#：和上面的类似，但是是往反方向寻找。</li><li>/text：从当前光标处开始搜索字符串 text，并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话，按 n。</li><li>？text：和上面类似，但是是反方向。</li><li>ma：在当前光标的位置标记一个书签，名字为 a。书签名只能是小写字母。你看不见书签的存在，但它确实已经在那里了。</li><li>`a：到书签 a 处。注意这个不是单引号，它一般位于大部分键盘的 1 的左边。</li><li>`.：到你上次编辑文件的地方。这个命令很有用，而且你不用自己去标记它。</li></ul><p><strong>高效的输入</strong></p><p><em>使用关键词自动完成</em></p><p>VIM 有一个非常漂亮的关键词自动完成系统。这表示，你可以输入一个长词的一部分，然后按一下某个键，然后 VIM
就替你完成了这个长词的输入了。举个例子：你有一个变量名为 iAmALongAndAwkwardVarName
在你写的代码的某个地方。也许你不想每回都自己一个一个字母的去输入它。</p><p>使用关键词自动完成功能，你只需要输入开始几个字母（比如 iAmAL），然后按 &lt;C-N&gt;（按住 Ctrl，再按 N）或者 &lt;C-P&gt;。如果 VIM 没有给出你想要的词，继续按，直到你满意为止，VIM 会一直循环它找到的匹配的字符串。</p><p><em>聪明的进入插入模式</em></p><p>很多新手进入插入模式都只是用 i。这样当然可以进入插入模式，但通常不是那么合适，因为 VIM 提供了很多进入插入模式的命令。下面是最常用的一些：</p><ul><li>i：在当前字符的左边插入</li><li>I：在当前行首插入</li><li>a：在当前字符的右边插入</li><li>A：在当前行尾插入</li><li>o：在当前行下面插入一个新行</li><li>O：在当前行上面插入一个新行</li><li>c{motion}：删除 motion
命令跨过的字符，并且进入插入模式。比如：c$，这将会删除从光标位置到行尾的字符并且进入插入模式。ct！，这会删除从光标位置到下一个叹号（但不包
括），然后进入插入模式。被删除的字符被存在了剪贴板里面，并且可以再粘贴出来。</li><li>d{motion}：和上面差不多，但是不进入插入模式。</li></ul><strong>有效的移动大段的文本</strong><p><em>使用可视选择（visual selections）和合适的选择模式</em></p><p>不像最初的 VI，VIM 允许你高亮（选择）一些文本，并且进行操作。这里有三种可视选择模式：</p><ul><li>v：按字符选择。经常使用的模式，所以亲自尝试一下它。</li><li>V：按行选择。这在你想拷贝或者移动很多行的文本的时候特别有用。</li><li>&lt;C-V&gt;：按块选择。非常强大，只在很少的编辑器中才有这样的功能。你可以选择一个矩形块，并且在这个矩形里面的文本会被高亮。</li></ul><p>在选择模式的时候使用上面所述的方向键和命令（motion）。比如，vwww，会高亮光标前面的三个词。Vjj 将会高亮当前行以及下面两行。</p><p><em>在可视选择模式下剪切和拷贝</em></p><p>一旦你高亮了选区，你或许想进行一些操作：</p><ul><li>d：剪贴选择的内容到剪贴板。</li><li>y：拷贝选择的内容到剪贴板。</li><li>c：剪贴选择的内容到剪贴板并且进入插入模式。</li></ul><p><em>在非可视选择模式下剪切和拷贝</em></p><p>如果你很清楚的知道你想拷贝或者剪切什么，那你根本就不需要进入可视选择模式。这样也会节省时间：</p><ul><li>d{motion}：剪切 motion 命令跨过的字符到剪贴板。比如，dw 会剪切一个词而 dfS 会将从当前光标到下一个 S 之间的字符剪切至剪贴板。</li><li>y{motion}：和上面类似，不过是拷贝。</li><li>c{motion}：和 d{motion} 类似，不过最后进入插入模式。</li><li>dd：剪切当前行。</li><li>yy：拷贝当前行。</li><li>cc：剪切当前行并且进入插入模式。</li><li>D：剪切从光标位置到行尾到剪贴板。</li><li>Y：拷贝当前行。</li><li>C：和 D 类似，最后进入插入模式。</li><li>x：剪切当前字符到剪贴板。</li><li>s：和x类似，不过最后进入插入模式。</li></ul><p><em>粘贴</em></p><p>粘贴很简单，按 p。</p><p><em>使用多重剪贴板</em></p><p>很多编辑器都只提供了一个剪贴板。VIM 有很多。剪贴板在 VIM 里面被称为寄存器（Registers）。你可以列出当前定义的所有寄存器名和它们的内容，命令为“:reg”。最好使用小写字母来作为寄存器的名称，因为大写的有些被 VIM 占用了。</p><p>使用寄存器的命令为双引号 “。</p><p>比如：我们要拷贝当前行到寄存器 k。你应该按 “kyy。（你也可以使用 V”ky。为什么这样也可以呢？）现在当前行应该已经存在了寄存器 k 里面直到你又拷贝了一些东西进入寄存器 k。现在你可以使用命令 “kp 来粘贴寄存器 k 里面的内容到你想要的位置。</p><p><strong>避免重复</strong></p><p><em>令人惊奇的 . 命令</em></p><p>在 VI 里面，输入 . (小数点符号），将会重复你输入的上一个命令。比如，你上个命令为“dw”（删除一个词），VI 将会接着再删除一个词。</p><p><em>使用数字</em></p><p>使用数字也是 VIM 强大的而且很节省时间的重要特性之一。在很多 VIM 的命令之前都可以使用一个数字，这个数字将会告诉 VIM 这个命令需要执行几次。比如：</p><ul><li>3j 将会把光标向下移动三行。</li><li>10dd 将会删除十行。</li><li>y3″ 将会拷贝从当前光标到第三个出现的引号之间的内容到剪贴板。</li></ul><p>数字是扩展 motion 命令作用域非常有效的方法。</p><p><em>记录宏</em></p><p>有时候，你会发现你自己在文章的每段或者每行都重复相同的一系列动作。VIM 允许你记录一个宏来完成你的特殊需要。</p><ul><li>qregister：记录宏到寄存器 register，这里 register 是任意的你的寄存器的名字。比如 qa，将会记录并且把宏存在寄存器 a 里面。</li><li>q：结束宏的记录。</li><li>@register：使用存在寄存器 register 的宏。比如 @a，将会使用存在寄存器 a 里面的宏。</li></ul><p>必须要记住的是，宏只记录了你的系列按键并且重复执行它们。它们不是魔法。因为在 VIM 里面完成目的的方法有很多，所以有时候你要小心选择命令来记录你的宏。因为它们会在所有你要执行它的地方执行。</p><p><strong>用 VIM 写代码</strong></p><p>VIM 是一个用来写代码的绝好编辑器，因为它有一些特性是专门为程序员而设计的。这里是一些常用的：</p><ul><li>]p：和 p 的功能差不多，但是它会自动调整被粘贴的文本的缩进去适应当前代码的位置。试一下！</li><li>%：匹配花括号、方括号、括号等。在一个括号的上面，然后按 %，鼠标就会出现在匹配的另外一半括号处。</li><li>&gt;&gt;：缩进所有选择的代码</li><li>&lt;&lt;：和上面类似，但是反缩进</li><li>gd：到达光标所在处函数或者变量的定义处。</li><li>K：在 Man 里面查找光标当前所在处的词。 </li></ul><br /><br /><img src ="http://www.cnitblog.com/tjitty/aggbug/41515.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2008-03-26 20:09 <a href="http://www.cnitblog.com/tjitty/archive/2008/03/26/41515.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VI命令指导</title><link>http://www.cnitblog.com/tjitty/archive/2008/03/26/41511.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Wed, 26 Mar 2008 10:21:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2008/03/26/41511.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/41511.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2008/03/26/41511.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/41511.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/41511.html</trackback:ping><description><![CDATA[
		<h2>进入vi的命令</h2>
		<p>vi filename: 打开或新建文件，并将光标置于第一行首
</p>
		<p>vi +n filename: 打开文件，并将光标置于第n行首
</p>
		<p>vi + filename: 打开文件，并将光标置于最后一行首
</p>
		<p>vi +/pattern filename: 打开文件，并将光标置于第一个与pattern匹配的串处
</p>
		<p>vi -r filename: 在上次正用vi编辑时发生系统崩溃，恢复filename
</p>
		<p>vi filename....filename: 打开多个文件，依次进行编辑
</p>
		<a name=".E7.A7.BB.E5.8A.A8.E5.85.89.E6.A0.87.E7.B1.BB.E5.91.BD.E4.BB.A4">
		</a>
		<h2>移动光标类命令</h2>
		<p>h: 光标左移一个字符
</p>
		<p>l: 光标右移一个字符
</p>
		<p>space: 光标右移一个字符
</p>
		<p>Backspace: 光标左移一个字符
</p>
		<p>k或Ctrl+p: 光标上移一行
</p>
		<p>j或Ctrl+n: 光标下移一行
</p>
		<p>Enter: 光标下移一行
</p>
		<p>w或W : 光标右移一个字至字首
</p>
		<p>b或B : 光标左移一个字至字首
</p>
		<p>e或E : 光标右移一个字至字尾
</p>
		<p>): 光标移至句尾
</p>
		<p>(: 光标移至句首
</p>
		<p>}: 光标移至段落开头
</p>
		<p>{: 光标移至段落结尾
</p>
		<p>nG: 光标移至第n行首
</p>
		<p>n+: 光标下移n行
</p>
		<p>n-: 光标上移n行
</p>
		<p>n$: 光标移至第n行尾
</p>
		<p>H: 光标移至屏幕顶行
</p>
		<p>M: 光标移至屏幕中间行
</p>
		<p>L: 光标移至屏幕最后行
</p>
		<p>0: 光标移至当前行首
</p>
		<p>$: 光标移至当前行尾</p>
		<a name=".E5.B1.8F.E5.B9.95.E7.BF.BB.E6.BB.9A.E7.B1.BB.E5.91.BD.E4.BB.A4">
		</a>
		<h2>屏幕翻滚类命令</h2>
		<p>Ctrl+u: 向文件首翻半屏
</p>
		<p>Ctrl+d: 向文件尾翻半屏
</p>
		<p>Ctrl+f: 向文件尾翻一屏
</p>
		<p>Ctrl＋b: 向文件首翻一屏
</p>
		<p>nz: 将第n行滚至屏幕顶部，不指定n时将当前行滚至屏幕顶部。
</p>
		<a name=".E6.8F.92.E5.85.A5.E6.96.87.E6.9C.AC.E7.B1.BB.E5.91.BD.E4.BB.A4">
		</a>
		<h2>插入文本类命令</h2>
		<p>i: 在光标前
</p>
		<p>I: 在当前行首
</p>
		<p>a: 光标后
</p>
		<p>A: 在当前行尾
</p>
		<p>o: 在当前行之下新开一行
</p>
		<p>O: 在当前行之上新开一行
</p>
		<p>r: 替换当前字符
</p>
		<p>R: 替换当前字符及其后的字符，直至按ESC键
</p>
		<p>s: 从当前光标位置处开始，以输入的文本替代指定数目的字符
</p>
		<p>S: 删除指定数目的行，并以所输入文本代替之
</p>
		<p>ncw或nCW: 修改指定数目的字
</p>
		<p>nCC: 修改指定数目的行
</p>
		<a name=".E5.88.A0.E9.99.A4.E5.91.BD.E4.BB.A4">
		</a>
		<h2>删除命令</h2>
		<p>ndw或ndW: 删除光标处开始及其后的n-1个字
</p>
		<p>do: 删至行首
</p>
		<p>d$: 删至行尾
</p>
		<p>ndd: 删除当前行及其后n-1行
</p>
		<p>x或X: 删除一个字符，x删除光标后的，而X删除光标前的
</p>
		<p>Ctrl+u: 删除输入方式下所输入的文本</p>
		<a name=".E6.90.9C.E7.B4.A2.E5.8F.8A.E6.9B.BF.E6.8D.A2.E5.91.BD.E4.BB.A4">
		</a>
		<h2>搜索及替换命令</h2>
		<pre>/pattern: 从光标开始处向文件尾搜索pattern<br />?pattern: 从光标开始处向文件首搜索pattern<br />n: 在同一方向重复上一次搜索命令<br />N: 在反方向上重复上一次搜索命令<br />:s/p1/p2/g: 将当前行中所有p1均用p2替代<br />:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代<br />:g/p1/s//p2/g: 将文件中所有p1均用p2替换</pre>
		<a name=".E9.80.89.E9.A1.B9.E8.AE.BE.E7.BD.AE">
		</a>
		<h2>选项设置</h2>
		<p>all: 列出所有选项设置情况
</p>
		<p>term: 设置终端类型
</p>
		<p>ignorance: 在搜索中忽略大小写
</p>
		<p>list: 显示制表位(Ctrl+I)和行尾标志($)
</p>
		<p>number: 显示行号
</p>
		<p>report: 显示由面向行的命令修改过的数目
</p>
		<p>terse: 显示简短的警告信息
</p>
		<p>warn: 在转到别的文件时若没保存当前文件则显示NO write信息
</p>
		<p>nomagic: 允许在搜索模式中，使用前面不带“\”的特殊字符
</p>
		<p>nowrapscan: 禁止vi在搜索到达文件两端时，又从另一端开始
</p>
		<p>mesg: 允许vi显示其他用户用write写到自己终端上的信息</p>
		<a name=".E6.9C.80.E5.90.8E.E8.A1.8C.E6.96.B9.E5.BC.8F.E5.91.BD.E4.BB.A4">
		</a>
		<h2>最后行方式命令</h2>
		<pre>:n1,n2 co n3: 将n1行到n2行之间的内容拷贝到第n3行下<br />:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下<br />:n1,n2 d: 将 n1行到n2行之间的内容删除<br />:w: 保存当前文件<br />:e filename: 打开文件filename进行编辑<br />:x: 保存当前文件并退出<br />:q: 退出vi<br />:q!: 不保存文件并退出vi<br />:!command: 执行shell命令command<br />:n1,n2 w!command: 将文件中n1行至n2行的内容作为command的输入并执行之，<br /> 若不指定n1，n2，则表示将整个文件内容作为command的输入<br />:r!command: 将命令command的输出结果放到当前行</pre>
		<a name=".E5.AF.84.E5.AD.98.E5.99.A8.E6.93.8D.E4.BD.9C">
		</a>
		<h2>寄存器操作</h2>
		<p>"?nyy: 将当前行及其下n行的内容保存到寄存器？中，其中?为一个字母，n为一个数字
</p>
		<p>"?nyw: 将当前行及其下n个字保存到寄存器？中，其中?为一个字母，n为一个数字
</p>
		<p>"?nyl: 将当前行及其下n个字符保存到寄存器？中，其中?为一个字母，n为一个数字
</p>
		<p>"?p: 取出寄存器？中的内容并将其放到光标位置处。这里？可以是一个字母，也可以是一个数字
</p>
		<p>ndd: 将当前行及其下共n行文本删除，并将所删内容放到1号删除寄存器中 <br /></p>
		<p>
				<br />
		</p>
		<h2>在Vi 中移动光标</h2>
		<pre class="example">  k        上<br />h   l    左  右<br />  j        下<br /><br />^        移动到该行第一个非空格的字符处<br />w        向前移动一个单词，将符号或标点当作单词处理<br />W        向前移动一个单词，不把符号或标点当作单词处理<br />b        向后移动一个单词，把符号或标点当作单词处理<br />B        向后移动一个单词，不把符号或标点当作单词处理<br />(        光标移至句首<br />)        光标移至句尾<br />{        光标移至段落开头<br />}        光标移至段落结尾<br />H        光标移至屏幕顶行<br />M        光标移至屏幕中间行<br />L        光标移至屏幕最后行 <br />0        到行首<br />$        到行尾<br />gg       到页首<br />G        到页末<br />行号+G   跳转到指定行<br />n+       光标下移n行<br />n-       光标上移n行 <br />Ctrl+g   查询当前行信息和当前文件信息<br /><br />fx       向右跳到本行字符x处（x可以是任何字符）<br />Fx       向左跳到本行字符x处（x可以是任何字符）<br /><br />tx       和fx相同，区别是跳到字符x前<br />Tx       和Fx相同，区别是跳到字符x后<br /><br />C-b      向上滚动一屏<br />C-f      向下滚动一屏<br />C-u      向上滚动半屏<br />C-d      向下滚动半屏<br />C-y      向上滚动一行<br />C-e      向下滚动一行<br /><br />nz       将第n行滚至屏幕顶部，不指定n时将当前行滚至屏幕顶部。 <br /></pre>
		<h2>进入和退出Vi命令</h2>
		<pre class="example">vi filename               打开或新建文件，并将光标置于第一行首<br />vi +n filename            打开文件，并将光标置于第n行首<br />vi + filename             打开文件，并将光标置于最后一行首<br />vi +/pattern filename     打开文件，并将光标置于第一个与pattern匹配的串处<br />vi -r filename            在上次正用vi编辑时发生系统崩溃，恢复filename<br />vi filename ... filename  打开多个文件，依次进行编辑 <br /><br />ZZ                        退出vi并保存<br />:q!                       退出vi，不保存<br />:wq                       退出vi并保存<br /></pre>
		<h2>重复操作</h2>
		<pre class="example">.        重复上一次操作<br /></pre>
		<h2>自动补齐</h2>
		<pre class="example">C-n      匹配下一个关键字<br />C-p      匹配上一个关键字<br /></pre>
		<h2>插入</h2>
		<pre class="example">o        在光标下方新开一行并将光标置于新行行首，进入插入模式。<br />O        同上，在光标上方。<br /><br />a        在光标之后进入插入模式。<br />A        同上，在光标之前。<br /><br /><br />R        进入替换模式，直到按下Esc<br />set xxx  设置XXX选项。<br /></pre>
		<h2>行合并</h2>
		<pre class="example">J        把下面一行合并到本行后面<br /></pre>
		<h2>Vi中查找及替换命令</h2>
		<pre class="example">/pattern         从光标开始处向文件尾搜索pattern<br />?pattern         从光标开始处向文件首搜索pattern<br />n                在同一方向重复上一次搜索命令<br />N                在反方向上重复上一次搜索命令<br />%                查找配对的括号<br />:s/p1/p2/g       将当前行中所有p1均用p2替代，若要每个替换都向用户询问则应该用gc选项<br />:n1,n2s/p1/p2/g  将第n1至n2行中所有p1均用p2替代<br />:g/p1/s//p2/g    将文件中所有p1均用p2替换<br /><br />.*[]^%~$ 在Vi中具有特殊含义，若需要查找则应该加上转义字符"\"<br /></pre>
		<h3>查找的一些选项</h3>
		<h4>设置高亮</h4>
		<pre class="example">:set hlsearch    设置高亮<br />:set nohlsearch  关闭高亮<br />:nohlsearch      关闭当前已经设置的高亮<br /></pre>
		<h4>增量查找</h4>
		<pre class="example">:set incsearch   设置增量查找<br />:set noincsearch 关闭增量查找<br /></pre>
		<h2>在Vi中删除</h2>
		<pre class="example">x        删除当前光标下的字符<br />dw       删除光标之后的单词剩余部分。<br />d$       删除光标之后的该行剩余部分。<br />dd       删除当前行。<br /><br />c        功能和d相同，区别在于完成删除操作后进入INSERT MODE<br />cc       也是删除当前行，然后进入INSERT MODE<br /><br /></pre>
		<h2>更改字符</h2>
		<pre class="example">rx       将当前光标下的字符更改为x（x为任意字符） <br />~        更改当前光标下的字符的大小写 <br /></pre>
		<h2>键盘宏操作</h2>
		<pre class="example">qcharacter  开始录制宏，character为a到z的任意字符<br />q           终止录制宏<br />@character  调用先前录制的宏<br /><br /></pre>
		<h2>恢复误操作</h2>
		<pre class="example">u        撤销最后执行的命令<br />U        修正之前对该行的操作<br />Ctrl+R   Redo<br /></pre>
		<h2>在Vi中操作Frame</h2>
		<pre class="example">c-w c-n  增加frame<br />c-w c-c  减少frame<br />c-w c-w  切换frame<br />c-w c-r  交换两个frame<br /></pre>
		<h2>VIM中的块操作</h2>
		<p>Vim支持多达26个剪贴板 </p>
		<pre class="example">  选块   先用v，C-v，V选择一块，然后用y复制，再用p粘贴。<br />  yy     复制当前整行<br />  nyy    复制当前行开始的n行内容<br />  ?nyy   将光标当前行及其下n行的内容保存到寄存器?中，其中?为一个字母，n为一个数字<br />  ?nyw   将光标当前行及其下n个词保存到寄存器?中，其中?为一个字母，n为一个数字<br />  ?nyl   将光标当前行及其下n个字符保存到寄存器?中，其中?为一个字母，n为一个数字<br />  ?p     将寄存器?中的内容粘贴到光标位置之后。如果?是用yy复制的完整行，<br />         则粘贴在光标所在行下面。这里?可以是一个字母，也可以是一个数字 <br />  ?P     将寄存器a中的内容粘贴到光标位置之前。如果?是用yy复制的完整行，<br />         则粘贴在光标所在行上面。这里?可以是一个字母，也可以是一个数字 <br />  ay[motion]<br />            ay$    复制光标位置到行末并保存在寄存器a中<br />            ayft   复制光标位置到当前行第一个字母t并保存在寄存器a中<br /></pre>
		<p> 以上指令皆可去掉a工作，则y,p对未命名寄存器工作（所有d,c,x,y的对象都被保存在这里）。</p>
		<h3>剪切/复制/粘贴</h3>
		<p>所有删除的内容自动被保存，可以用p键粘贴 </p>
		<h2>Vi的选项设置</h2>
		<pre class="example">all         列出所有选项设置情况<br />term        设置终端类型<br />ignorance   在搜索中忽略大小写<br />list        显示制表位(Ctrl+I)和行尾标志($)<br />number      显示行号<br />report      显示由面向行的命令修改过的数目<br />terse       显示简短的警告信息<br />warn        在转到别的文件时若没保存当前文件则显示NO write信息<br />nomagic     允许在搜索模式中，使用前面不带“\”的特殊字符<br />nowrapscan  禁止vi在搜索到达文件两端时，又从另一端开始<br />mesg        允许vi显示其他用户用write写到自己终端上的信息 <br /></pre>
		<h2>tips</h2>
		<p>对代码自动格式化 gg=G </p>
<img src ="http://www.cnitblog.com/tjitty/aggbug/41511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2008-03-26 18:21 <a href="http://www.cnitblog.com/tjitty/archive/2008/03/26/41511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>