﻿<?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>BlogJava-都市淘沙者-文章分类-VSS/SVN/Jira/Hudson/Sonar/TDD/UnitTest</title><link>http://www.blogjava.net/jelver/category/8974.html</link><description>每天进步一点点</description><language>zh-cn</language><lastBuildDate>Mon, 15 Nov 2010 08:08:14 GMT</lastBuildDate><pubDate>Mon, 15 Nov 2010 08:08:14 GMT</pubDate><ttl>60</ttl><item><title>通过Spring2.5对单元测试的Annotation支持进行TDD开发(zhuan)</title><link>http://www.blogjava.net/jelver/articles/334107.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Sat, 09 Oct 2010 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/334107.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/334107.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/334107.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/334107.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/334107.html</trackback:ping><description><![CDATA[<a id="viewpost1_TitleUrl" class="postTitle2" href="../../xmatthew/archive/2008/11/05/238697.html">通过Spring2.5对单元测试的Annotation支持进行TDD开发</a>

<img src ="http://www.blogjava.net/jelver/aggbug/334107.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2010-10-09 15:47 <a href="http://www.blogjava.net/jelver/articles/334107.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何理解Scrum的stand up 和 burn down【转】</title><link>http://www.blogjava.net/jelver/articles/332797.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Sat, 25 Sep 2010 01:58:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/332797.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/332797.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/332797.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/332797.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/332797.html</trackback:ping><description><![CDATA[<h2 id="post-499"><a href="http://hasan.we4tech.com/2009/05/22/scrum-how-to-understand-stand-up-and-burn-down-is-effective/">http://hasan.we4tech.com/2009/05/22/scrum-how-to-understand-stand-up-and-burn-down-is-effective/</a></h2>
<h2 id="post-499">Scrum: How to understand stand up and burn down is effective&nbsp;?</h2>
<p>Scrum
burn down chart and daily stand up meeting are the most important part
of the scrum process to keep the team on focus. Scrum is good on bring
transparency in development process. With utilizing better engineering
practice like test driven development, continuous integration we could
keep our productivity and fun on the same line.</p>
<p>If you are one of those&nbsp; people who are wondering</p>
<h3><span style="text-decoration: underline;">What is called &#8220;stand up&#8221;?</span></h3>
<p>I have a brief for you.</p>
<div id="attachment_500" class="wp-caption aligncenter" style="width: 310px;"><a rel="attachment wp-att-500" href="http://hasan.we4tech.com/2009/05/22/scrum-how-to-understand-stand-up-and-burn-down-is-effective/scrum-standup/"><img title="scrum standup picture" src="http://we4tech.files.wordpress.com/2009/05/scrum-standup.jpg?w=300&amp;h=285" alt="scrum standup picture" width="300" height="285" /></a>
<p>scrum stand up meeting</p>
</div>
<p>On the picture you could see, there are few people who are standing up and discussing about the following 3 topics -</p>
<ol>
    <li>What i have done yesterday!</li>
    <li>What i will do today!</li>
    <li>Where i have been stucking!</li>
</ol>
<p>This is a required daily meeting where 10 minutes are spent together
with all team members, this meeting is used to adjust the tasks among
the team members also to monitor the current status.</p>
<p>Later this meeting is followed by a burn down chart which is attach
on the wall or send through email to everyone or upload on some place
which is visible to everyone.</p>
<div id="attachment_501" class="wp-caption aligncenter" style="width: 310px;"><a rel="attachment wp-att-501" href="http://hasan.we4tech.com/2009/05/22/scrum-how-to-understand-stand-up-and-burn-down-is-effective/scrum-burndown/"><img title="scrum burndown" src="http://we4tech.files.wordpress.com/2009/05/scrum-burndown.jpg?w=300&amp;h=217" alt="scrum burn down chart " width="300" height="217" /></a>
<p>scrum burn down chart </p>
</div>
<h3><span style="text-decoration: underline;">What is burn down chart ?</span></h3>
<p>Burn down chart is a graph which is used to visualize how much hours
work is left in an iteration (sprint). on the illustration you&#8217;d see a
white line which is visualizing average burning hours per day. If we
have planned for 180 hours tasks for whole iteration. Average burning
hours should be minimum 180 / 8 days (if you have 8 days span sprint) =
22.5 hours to keep us on target.</p>
<p>The green line is visualizing the real team progress, you see this is
not always up to the base line. It is moving up and down thus we are
determining how the team is performing. If this green line is too
upwards from the base line it means we are behind the schedule if that
goes far below from the base line that reflects bad planning.</p>
<h3><span style="text-decoration: underline;">How to understand your team is understanding them?</span></h3>
<p>I found the following symptoms to understand that our team members are understanding the importance -</p>
<ul>
    <li>Everyone attending daily stand up on time.</li>
    <li>Everyone feeling responsible and notifying before they get late in office.</li>
    <li>Everyone eagerly reporting their status and taking commitment for today</li>
    <li>Team members are feeling guilty if some of them didn&#8217;t complete the commitment</li>
    <li>Everyone eagerly waiting to see the change in burn down chart</li>
    <li>If burn down shows some upward progress everyone get concerns and work hard</li>
    <li>Everyone feeling proud of the progress which shows in burn down.</li>
    <li>Everyone working every day not waiting for last moments push.</li>
    <li>Everyone keeping their daily commitments</li>
    <li>When burn down curve is&nbsp; not moving too upward or not falling too downwards.</li>
</ul>
<p>Most important change in scrum is your team doesn&#8217;t need to work over
night or over weekend to keep progress around the base line. (i will
later discuss about how iterative and incremental planning can help).
Fortunately we have discovered these changes on our current team.</p>
<p>The most important thing is feeling the &#8220;team way&#8221; which we are
missing in most of our teams, I guess utilizing the tools and process
like scrum that can be improved a lot.</p>
<p>best wishes,</p>
<img src ="http://www.blogjava.net/jelver/aggbug/332797.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2010-09-25 09:58 <a href="http://www.blogjava.net/jelver/articles/332797.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TortoiseSVN 日常操作指南 </title><link>http://www.blogjava.net/jelver/articles/88124.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Sat, 16 Dec 2006 02:55:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/88124.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/88124.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/88124.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/88124.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/88124.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原文http://blog.csdn.net/happy4nothing/archive/2005/05/19/376604.aspxTortoiseSVN		A Subversion client for Windows		Stefan Küng		Lübbe Onken		Simon Large		2005/01/17 19:09:21		二〇〇五年四月 Daan译...&nbsp;&nbsp;<a href='http://www.blogjava.net/jelver/articles/88124.html'>阅读全文</a><img src ="http://www.blogjava.net/jelver/aggbug/88124.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2006-12-16 10:55 <a href="http://www.blogjava.net/jelver/articles/88124.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>根据部门判断进入版块的权限 （转）</title><link>http://www.blogjava.net/jelver/articles/48767.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Mon, 29 May 2006 08:02:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/48767.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/48767.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/48767.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/48767.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/48767.html</trackback:ping><description><![CDATA[
		<h2>
				<a id="viewpost.ascx_TitleUrl" href="http://webuc.net/yunguang/archive/2004/12/18/2394.aspx">根据部门判断进入版块的权限</a>
		</h2>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span>
				<span lang="EN">Segment</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表中，有三个字段，</span>
				<span lang="EN">segmentId</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
				<span lang="EN">segmentName</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
				<span lang="EN">segmentRight</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">分别表示权限序号（从</span>
				<span lang="EN">1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开始），模块名，访问权值。其中</span>
				<span lang="EN">segmentRight=2</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN">segmentId-1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">次方，</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">即</span>
				<span lang="EN">
						<span style="mso-spacerun: yes">  </span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">     </span>segmentId=1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN">segmentRight=1 </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（对应二进制</span>
				<span lang="EN">1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">     </span>segmentId=2</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN">segmentRight=2</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（对应二进制</span>
				<span lang="EN">10</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">     </span>segmentId=3</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN">segmentRight=4</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（对应二进制</span>
				<span lang="EN">100</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">     </span>segmentId=4</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN">segmentRight=8</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">     </span>
				<span lang="EN">segmentId=5</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN">segmentRight=16</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">     </span>......</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">     </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相当于</span>
				<span lang="EN"> segmentRight </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的第</span>
				<span lang="EN">0</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位代表</span>
				<span lang="EN">segmentId=1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的模块访问权限，</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">            </span>segmentRight </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的第</span>
				<span lang="EN">1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位代表</span>
				<span lang="EN">segmentId=2</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的模块访问权限，</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">            </span>segmentRight </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的第</span>
				<span lang="EN">2</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位代表</span>
				<span lang="EN">segmentId=3</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的模块访问权限，</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">   </span>
						<span style="mso-spacerun: yes">         </span>segmentRight </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的第</span>
				<span lang="EN">3</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位代表</span>
				<span lang="EN">segmentId=4</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的模块访问权限，</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">            </span>......</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">     </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而在部门表里的</span>
				<span lang="EN">Segment=</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上面</span>
				<span lang="EN">segmentRight</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之和，比如，</span>
				<span lang="EN">Segment=7</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，其二进制为</span>
				<span lang="EN">0111</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">则表示该部门对</span>
				<span lang="EN">segmentId</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是</span>
				<span lang="EN">1</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN">2</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN">3</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的模块具有访问权。换句话说，测试部门表里的</span>
				<span lang="EN">Segment</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">字段的各个二进制位，即可知该部门是否具有对某模块的访问权。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">    </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对</span>
				<span lang="EN">Segment</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表进行单独管理，增、删、改操作。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">    </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对部门表的管理，增加权限的设置，即显示已有的可操作模块，操作者进行选择，然后</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将选中的各模块的</span>
				<span lang="EN"> segmentRight </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">值加起来，赋予部门表里的</span>
				<span lang="EN">Segment</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">字段。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">    </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">访问模块的权限判断流程如下：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">    </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">用户点击某模块</span>
				<span lang="EN">--&gt;</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">从</span>
				<span lang="EN">Segment</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表中通过</span>
				<span lang="EN">segmentName</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（模块名）取出该模块的</span>
				<span lang="EN">segmentRight</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">值，</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">                     </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">同时从部门表中取出该部门的</span>
				<span lang="EN">segment</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">值</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">                  </span>--&gt;</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将</span>
				<span lang="EN">segment</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">值和</span>
				<span lang="EN">segmentRight</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">值进行“位与”操作，即</span>
				<span lang="EN"> segment &amp; segmentRight,</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">                  </span>--&gt;</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果“位与”的结果等于</span>
				<span lang="EN">segmentRight</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，则该部门具有操作该模块的权限，</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN">
						<span style="mso-spacerun: yes">                     </span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用户进入该模块的操作。</span>
		</p>
		<p>
				<span lang="EN" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-fareast-font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
						<span style="mso-spacerun: yes">                  </span>--&gt;</span>
				<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">如果“位与”的结果等于</span>
				<span lang="EN" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-fareast-font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">0</span>
				<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">，则拒绝该用户进入该模块的操作。</span>
		</p>
		<p>
				<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">相关代码以及讨论者请按如下方式联系：</span>
		</p>
		<span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-family: 'Times New Roman'">
				<p>MSN：<a href="mailto:yun15291li@hotmail.com">yun15291li@hotmail.com</a></p>
				<p>Email：<a href="mailto:ygyunguang@yahoo.com.cn">ygyunguang@yahoo.com.cn</a></p>
		</span>
<img src ="http://www.blogjava.net/jelver/aggbug/48767.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2006-05-29 16:02 <a href="http://www.blogjava.net/jelver/articles/48767.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ECLIPSE 3.1 和 CVSNT 2.5 的配置图文教程</title><link>http://www.blogjava.net/jelver/articles/43324.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Wed, 26 Apr 2006 07:45:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/43324.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/43324.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/43324.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/43324.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/43324.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td valign="top" align="middle" width="431" height="86">
										<div align="left">
												<p>
														<strong>
														</strong>
														<span class="tpc_content">
																<font size="2">    本文非常适合初学者、基本上是step by step了 本人文笔较叉、字少别介意。<br /><br />首先介绍工具：<br /><br />1、 ECLIPSE 3.1 <br /></font>
																<a href="http://www.eclipse.org/" target="_blank">
																		<font color="#002c99" size="2">http://www.eclipse.org/</font>
																</a>
																<br />
																<font size="2">2、 CVSNT 2.5.03.2151（这个可是最新的了、用最先进的装备嘛）<br /></font>
																<a href="http://www.cvsnt.org/archive/cvsnt-2.5.03.2151.msi" target="_blank">
																		<font color="#002c99" size="2">http://www.cvsnt.org/archive/cvsnt-2.5.03.2151.msi</font>
																</a>
														</span>
														<br />
												</p>
										</div>
								</td>
								<td valign="top" width="253">
										<div align="center">
												<script type="text/javascript">
														<!--
google_ad_client = "pub-1832179689702023";
google_ad_width = 120;
google_ad_height = 240;
google_ad_format = "120x240_as";
google_ad_type = "text_image";
google_ad_channel ="";
//-->
												</script>
												<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
												</script>
												<font color="#002c99" size="2">
												</font>
										</div>
								</td>
						</tr>
						<tr>
								<td colspan="2" height="20">
										<p>
												<font size="2">
														<font color="#002c99">
														</font>
												</font> </p>
								</td>
						</tr>
				</tbody>
		</table>
		<p>
				<span class="tpc_content">
						<font size="2">
								<b>CVS_pic01</b>
								<br />
								<img onclick="if(this.width&gt;screen.width-461) window.open('attachment/Mon_0512/64_3540_dca0d4ffd833bcf.png');" height="2351" src="http://www.java3z.com/cwbwebhome/article/article2/images/64_3540_dca0d4ffd833bcf.png" width="556" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" />
								<br />
						</font>
						<b>
								<br />
								<br />
								<font size="2">CVS_pic02</font>
						</b>
						<br />
						<font size="2">
								<img onclick="if(this.width&gt;screen.width-461) window.open('attachment/Mon_0512/64_3540_8f95cfb420bce46.png');" height="2099" src="http://www.java3z.com/cwbwebhome/article/article2/images/64_3540_8f95cfb420bce46.png" width="556" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" />
								<br />
								<br />
								<br />最后CVS的用处以及实践就靠大家琢磨了~~欢迎交流。<br />有什么问题请跟帖、大家互相学习！</font>
						<br />
				</span>
		</p>
<img src ="http://www.blogjava.net/jelver/aggbug/43324.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2006-04-26 15:45 <a href="http://www.blogjava.net/jelver/articles/43324.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web项目解决方案框架</title><link>http://www.blogjava.net/jelver/articles/43293.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Wed, 26 Apr 2006 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/43293.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/43293.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/43293.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/43293.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/43293.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 目录										             																																																Web项目解决方案框架																										.... 																								1																										...&nbsp;&nbsp;<a href='http://www.blogjava.net/jelver/articles/43293.html'>阅读全文</a><img src ="http://www.blogjava.net/jelver/aggbug/43293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2006-04-26 15:03 <a href="http://www.blogjava.net/jelver/articles/43293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网站工程管理与规范</title><link>http://www.blogjava.net/jelver/articles/37472.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Sun, 26 Mar 2006 06:55:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/37472.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/37472.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/37472.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/37472.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/37472.html</trackback:ping><description><![CDATA[
		<table align="center" border="0" cellpadding="0" cellspacing="0" width="760">
				<tbody>
						<tr>
								<td align="middle" class="title" height="56" valign="center">
										<p align="justify">
												<font size="3">
														<font color="#000000">
																<span class="content">网站工程管理与规范(转) <br />　　随着互联网的发展，网站制作作为一个行业已经悄悄的兴起，越来越多的网站制作任务需要网页制作公司完成，越来越多的问题出现在网站制作的过程中。例如：不能按期完成制作，不能使客户满意，费用超出预算等等。仔细分析原因，发现大部分失败的原因有以下几点： </span>
														</font>
												</font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">　　 a.忽视客户的不断变化的需求；<br />　　 b.没有保留历史文档作决策参考；<br />　　 c.忽视监督项目进度；<br />　　 d.忽视不断的测试和修改；<br />　　 e.没有使用专业的项目管理软件，靠主观决策。</font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">　　 问题发现了，有没有一个好的解决办法可以减少失误，控制和管理网站制作呢？<br />　　 网站开发制作是一个很复杂的工作，可以将它看做一个项目来管理。作者参考了国际国内有关项目管理的资料，发现软件工程的管理方法和规范与网站建设项目最接近，因此我们在仔细研究软件工程后，针对网站建设的特点和重点，整理出一套网站建设管理和控制的方法，定名为网站工程(WebSite Project简称WP )。 </font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">网站工程 <br />　　 什么是网站工程，简单的说就是网站项目的管理和控制方法；是一种特殊的，标准的操作程序。建立网站工程的目的在于保证网站建设的高效率，高质量，低风险。<br />　　 网站工程标准的实行，不但使客户得益，更使得网站制作行业趋向规范化，它将对行业相关的每个人都有益，包括项目经理，网页设计师，程序员和编辑。 <br />　　 下面，就按照一个项目从洽谈到提交完成的顺序来介绍：</font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">1.项目立项/客户的需求说明书 <br />1.1.项目立项 <br />　　 我们接到客户的业务咨询，经过双方不断的接洽和了解，并通过基本的可行性讨论够，初步达成制作协议，这时就需要将项目立项。较好的做法是成立一个专门的项目小组，小组成员包括：项目经理，网页设计，程序员，测试员，编辑/文档等必须人员。项目实行项目经理制。 </font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">1.2.客户的需求说明书 <br />　　 第一步是需要客户提供一个完整的需求说明。很多客户对自己的需求并不是很清楚，需要您不断引导和帮助分析。曾经有一次，我问客户：“您做网站的目的是什么？”他回答：“没有目的，只是因为别人都有，我没有！”。这样的客户就需要耐心说明，仔细分析，挖掘出他潜在的，真正的需求。 <br />　　 配合客户写一份详细的，完整的需求说明会花很多时间，但这样做是值得的，而且一定要让客户满意，签字认可。把好这一关，可以杜绝很多因为需求不明或理解偏差造成的失误和项目失败。糟糕的需求说明不可能有高质量的网站。那么需求说明书要达到怎样的标准呢？简单说，包含下面几点：</font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">　　 a.正确性：每个功能必须清楚描写交付的功能； <br />　　 b.可行性：确保在当前的开发能力和系统环境下可以实现每个需求；<br />　　 c.必要性：功能是否必须交付，是否可以推迟实现，是否可以在削减开支情况发生时"砍"掉；<br />　　 d.简明性：不要使用专业的网络术语；<br />　　 e.检测性：如果开发完毕，客户可以根据需求检测。 </font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">2.网站总体设计 <br />　　 在拿到客户的需求说明后，并不是直接开始制作，而是需要对项目进行总体设计，详细设计，出一份网站建设方案给客户。总体设计是非常关键的一步。它主要确定：</font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">　　 a.网站需要实现哪些功能；<br />　　 b.网站开发使用什么软件，在什么样的硬件环境；<br />　　 c.需要多少人，多少时间；<br />　　 d.需要遵循的规则和标准有哪些。</font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">　　 同时需要写一份总体规划说明书，包括：</font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">　　 a.网站的栏目和版块；<br />　　 b.网站的功能和相应的程序；<br />　　 c.网站的链接结构；<br />　　 d.如果有数据库，进行数据库的概念设计；<br />　　 e.网站的交互性和用户友好设计。 </font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">　　 在总体设计出来后，一般需要给客户一个网站建设方案。很多网页制作公司在接洽业务时就被客户要求提供方案。那时的方案一般比较笼统，而且在客户需求不是十分明确的情况下提交方案，往往和实际制作后的结果会有很大差异。所以应该尽量取得客户的理解，在明确需求并总体设计后提交方案，这样对双方都有益处。网站建设方案的包括以下几个部分：</font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">　　 a.客户情况分析；<br />　　 b.网站需要实现的目的和目标；<br />　　 c.网站形象说明；<br />　　 d.网站的栏目版块和结构；<br />　　 e.网站内容的安排，相互链接关系；<br />　　 f.使用软件，硬件和技术分析说明；<br />　 　g.开发时间进度表；<br />　　 h.宣传推广方案；<br />　　 i.维护方案；<br />　　 j.制作费用；<br />　　 k.本公司简介：成功作品，技术，人才说明等。</font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">网站详细设计 <br />　　 总体设计阶段以比较抽象概括的方式提出了解决问题的办法。详细设计阶段的任务就是把解法具体化。详细设计主要是针对程序开发部分来说的。但这个阶段的不是真正编写程序，而是设计出程序的详细规格说明。这种规格说明的作用很类似于其他工程领域中工程师经常使用的工程蓝图，它们应该 包含必要的细节，例如：程序界面，表单，需要的数据等。程序员可以根据它们写出实际的程序代码。(这里不详细展开说明)</font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">1.整体形象设计 </font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">　　 在程序员进行详细设计的同时，网页设计师开始设计网站的整体形象和首页。<br />　　 整体形象设计包括标准字，Logo，标准色彩，广告语等。 首页设计包括版面，色彩，图像，动态效果，图标等风格设计，也包括banner，菜单，标题，版权等模块设计。首页一般设计1-3个不同风格，完成后，供客户选择。<br />　　 (整体形象设计这里简略带过，详细说明见 http://www.realsky.com/ 网页制作版《网站设计的思考》系列文章)<br />　　 记住：在客户确定首页风格之后，请客户签字认可。以后不得再对版面风格有大的变动，否则视为第二次设计。 </font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">2.开发制作 </font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">　　 到这里，程序员和网页设计师同时进入全力开发阶段，需要提醒的是，测试人员需要随时测试网页与程序，发现Bug立刻记录并反馈修改。不要等到完全制作完毕再测试，这样会浪费大量的时间和精力。项目经理需要经常了解项目进度，协调和沟通程序员与网页设计师的工作。 </font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">3.调试完善 </font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">　　 在网站初步完成后，上传到服务器，对网站进行全范围的测试。包括速度，兼容性，交互性，链接正确性，程序健壮性，超流量测试等，发现问题及时解决并记录下来。<br />　　 为什么要记录文档呢？其实本软件工程本身就是一个文档，是一个不断充实和完善的标准。通过不断的发现问题，解决问题，修改，补充文档，使这个标准越来越规范，越来越工业化。进而使得网站开发趋向规范，趋向合理。 </font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">4.宣传推广 </font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">　　 宣传推广的基本方法有：<br />　　 a.网页里设置适当的META标签；<br />　　 b.各搜索引擎登录；<br />　　 c.准备新闻稿件在各新闻公告板发表；<br />　　 d.合理使用Email邮件列表；<br />　　 e.广告条交换；<br />　　 f.付费广告。<br />　　 至此，网站项目建设完毕，将有关网址，使用操作说明文档等提交客户验收。如果需要维护，另行签定维护项目。</font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">5.维护 </font>
										</p>
										<p align="justify" class="content">
												<font color="#000000">　　 网站成功推出后，长期的维护工作才刚刚开始，我们需要做到的是:<br />　　 a.及时响应客户反馈；例如可以采取Email自动回复功能，然后在1-3个工作日里解决问题，再次回复；<br />　　 b.网站流量统计分析和相应对策；<br />　　 c.尽量推广和使用您的网址；<br />　　 d.网站内容的及时更新和维护。</font>
										</p>
										<!-- #EndEditable -->
								</td>
						</tr>
						<tr>
								<td align="middle" class="formtitle" height="40">
								</td>
						</tr>
				</tbody>
		</table>
		<table align="center" border="0" cellpadding="0" cellspacing="0" height="73" width="760">
				<tbody>
						<tr>
								<td>
										<p class="content"> </p>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/jelver/aggbug/37472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2006-03-26 14:55 <a href="http://www.blogjava.net/jelver/articles/37472.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实战DW MX和VSS开发Web项目</title><link>http://www.blogjava.net/jelver/articles/37470.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Sun, 26 Mar 2006 06:42:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/37470.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/37470.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/37470.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/37470.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/37470.html</trackback:ping><description><![CDATA[
		<table align="center" border="0" cellpadding="0" cellspacing="0" width="99%">
				<tbody>
						<tr>
								<td align="middle" height="30">
										<span class="article_title">实战DW MX和VSS开发Web项目(上)</span>
								</td>
						</tr>
						<tr>
								<td align="middle" height="30">
								</td>
						</tr>
						<tr>
								<td id="zoom">
										<!-- ads -->
										<table align="left" border="0" cellpadding="0" cellspacing="0">
												<tbody>
														<tr>
																<td>
																		<script src="../inc_script/article_ads_view_250x180.js">
																		</script>
																</td>
														</tr>
												</tbody>
										</table>
										<!-- ads -->
										<p style="TEXT-INDENT: 2em">由于Web项目程序代码非常分散不集中，大的Web项目程序代码源文件多达上百个甚至更多，小的也有数十个，怎样合理地管理这些源代码还是一个问题，本文提出一种针对Web项目开发过程中代码控制的解决方案。我们将利用Dreamweaver MX和Visual SourceSafe来实现Web项目代码开发的全程控制。这2种软件大家都比较熟悉，但为了保持本文的完整性我还是分别简要介绍一下这2种软件。 
</p>
										<p>    Dreamweaver MX(以下简称DW MX)是Macromedia公司网页制作三剑客之一，其强大功能在此不再复述，DW MX整合了Dreamweaver 4和Dreamweaver UltraDev 4的所有功能，他同时适合Web界面开发人员和Web后台开发人员使用，DW MX几乎支持所有常见动态Web编程语言，如PHP,ASP/ASP.net,JSP等，他最大特点就是整合了团队开发的功能，比如Design Notes(设计笔记)能够方便开发成员互相交流，他还可以与Vislual SourceSafe的数据库链接起来，达到代码控制的目的。 
</p>
										<p>    Visual SourceSafe(以下简称VSS)是Microsoft Visual Studio 6.0这个开发产品家族的一员，VSS主要功能是对项目进行版本控制和源码控制，它能够详细记录一个源码文件从创建到发布的所有修改和版本信息，而且还可以让你查看所有历史记录并对不同时间的源码进行比较分析，恢复代码到某一时刻和版本状态。VSS具有强大的用户管理权限，可以对每个用户设置R(Read)、C(Check Out)、A(Add)、D(Destroy)权限，非常适合团队开发。 
</p>
										<p>    <b>一、网络环境的搭建</b></p>
										<p>    图1-1将介绍团队开发的网络环境拓扑结构： 
</p>
										<p>     
</p>
										<center>
												<img border="0" height="202" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-1.gif" width="468" />
												<br />图1－1　开发网络拓扑结构</center>
										<p>    Server主要功能是代理Internet和整个网络控制，而Test Server主要负责代码调试工作，在该服务器上要搭建与Web发布服务器一样的平台(包括内部DNS，IIS等)，为了节省资源在该服务器上装一个数据库，Backup Server服务器主要能是数据的备份，包括开发代码，开发文档，以及对网站的常规备份，定期对Backup Server服务器上的数据进行物理备份(主要指把数据保存到活动<a href="http://tech.tom.com/1hd.html" target="_blank"><font color="blue">硬盘</font></a>或刻成光盘)，在Backup Server服务器上安装VSS，当然如果你的开发资源比较丰富的话，我觉得有必要添加数据库服务器和VSS服务器。 
</p>
										<p>    <b>二、VSS配置</b></p>
										<p>    先分别在服务器和开发客户端上安装VSS服务器，DW MX和VSS客户端。在开始配置VSS时先解释一下2个最基本的概念，Check Out，将VSS数据库上的文件最新内容下载到本地工作路径，并将该文件锁定，不允许其他人修改，但可以得到文件最新内容。Check In，将本地工作路径中已修改好的文件更新到服务器上，并将本地路径的文件属性设为只读，释放VSS服务器上该文件的锁定状态，这是VSS最基本的2个概念一定要弄明白。下面将介绍创建一个VSS项目的详细步骤。 
</p>
										<p>    1、打开VSS的管理员操作界面，执行Tools/Create Databse命令创建一个VSS数据库，当创建成功后执行Users/Open SourceSafe Database命令，打开VSS数据库。 
</p>
										<p>    2、执行Users/Add User命令，打开图1-2操作界面，输入用户名和密码，若你只赋予该用户只读权限，就选取Read Only复选框。 
</p>
										<p>     
</p>
										<center>
												<img border="0" height="128" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-2.gif" width="330" />
												<br />图1-2 添加用户界面</center>
										<p>    3、设置用户权限，在管理界面中用鼠标选取用户名Cat，然后执行Tools/Rights Assignments for user...命令打开设置用户权限对话框如图1-3。这里面有4个权限，他们含义分别是Read(只读)，Check Out/Check In(文件的鉴入和鉴出)，Add/Rename/Delete(添加/修改/删除VSS上的文件)，Destroy(彻底删除，无法恢复，设置时要小心)。然后重复2到3步添加开发小组中的其他成员。 
</p>
										<p>     
</p>
										<center>
												<img border="0" height="323" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-3.gif" width="467" />
												<br />图1-3 设置用户权限</center>
										<p>    4、设置VSS项目中的目录结构，点击程序栏中的Microsoft Visual SourceSafe 6.0命令，弹出登录对话框，输入用户名或者密码，单击Browse...按钮，找到服务器共享的VSS目录路径(支持网络路径)。<br /><br />5、创建对象，执行File/Create Project...命令，也可以直接点击快捷菜单栏中的按钮，打开创建对象对话框如图1-4，在此可以输入对象名还有相关的描述。所创建的对象在VSS的All Projects栏中表现形式为文件夹。 
</p>
										<p>     
</p>
										<center>
												<img border="0" height="194" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-4.gif" width="370" />
												<br />图1-4 创建对象对话框</center>
										<p>    6、添加文件，VSS用户界面中支持文件夹的拖拽操作，先进入到项目(文件夹)中，在本地选取好要放到服务器上的文件，然后直接拖拽到VSS的用户界面，就会弹出一个上传对话框如图1-5，在对话框中可以输入注释。还有其他相关选项，在此简单说明一下： 
</p>
										<p>    Store Only latest version ：保存文件最后版本。<br />　　Check Out Immediately：当文件以添加完后将它Check Out。<br />　　Remove local Copy：文件添加完后就将本地的的文件删除掉，最好在添加的文件的时候不要选取这一项。<br />　　File Type：选择添加文件的类型，一般选择Auto-detect(自动识别)，可选择项目是二进制文件和文本文件。 
</p>
										<p>     
</p>
										<center>
												<img border="0" height="240" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-6.gif" width="490" />
												<br />图1-6 添加文件对话框</center>
										<p>    至此基本将介绍完VSS的设置，在准备开发以前必须在VSS中建好相应的文件夹和小组用户帐号。图1-7是已经创建好的VSS对象结构图。 
</p>
										<p>     
</p>
										<center>
												<img border="0" height="326" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-7.jpg" width="450" />
												<br />图1-7 VSS客户端使用界面</center>
										<p>    <b>三、DW配置</b></p>
										<p>    由于VSS已经定义好了，再将DW和VSS连接起来不是很困难，下面是配置DW的详细步骤 
</p>
										<p>    1、进入DW的编辑界面，执行Site/New Site...命令，打开定义站点对话框，默认是Local Info(本地信息)选项卡，在界面中填入开发项目的名称和项目源码所在的地址，填完后入图1-8。 
</p>
										<p>     
</p>
										<center>
												<img border="0" height="431" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-8.jpg" width="450" />
												<br />图1-8 Local Info选项卡</center>
										<p>    2、在站点定义选项对话框中选取Remote Info(远程信息)选项卡如图1-9，在界面的Access(远程访问类型)中选取SourceSafe Database。Automatically Upload files to server，在DW中修改文件保存后自动将修改的信息更新到VSS服务器上。Check Out File when Opening，在DW中打开文件自动Check Out服务器上对应的文件。 
</p>
										<p>     
</p>
										<center>
												<img border="0" height="431" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-9.jpg" width="450" />
												<br />图1-9 Remote Info选项卡</center>
										<p>    3、在Remote Info选项卡中点击Settings...按钮，打开图1-10对话框，在该对话中分别填入Database Path，VSS数据库路径，。项目路径，注意对象路径一定要以$开始，路径支持中文。然后填入VSS用户的用户名和密码。 
</p>
										<p>     
</p>
										<center>
												<img border="0" height="149" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-10.gif" width="448" />
												<br />图1-10 VSS客户端登录设置</center>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p style="TEXT-INDENT: 2em">4、在站点定义选项对话框中选取Testing Server(测试服务器信息)选项卡如图1-11，Server Model：选择Web项目所才用的技术类型，DW支持绝大多数的Web动态语言。Access：访问类型，有FTP和Local/Network(本地/局域网)，Testing Server：测试服务器地址。 Refresh Remote File List Automatic：自动刷新远程文件列表，URL Prefix：测试服务器访问的URL地址。 
</p>
		<p>     
</p>
		<center>
				<img border="0" height="431" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-11.jpg" width="450" />
				<br />图1-11 Testing Server</center>
		<p>    至此，DW和VSS的配置都已经基本配置好了，上面讲到的配置都是必须要设置的，否则2种软件不能够友好协作，其他还有一些参数可以根据具体情况来设置。 
</p>
		<p>    <b>四、实战开发</b></p>
		<p>    到了这一步你可以具体开发了，由于已经将DW和VSS已经连接起来了，对VSS文件的常规操作不需要登录VSS去实现，直接在DW中就可以方便实现。下面将从2个方面来实战开发，先介绍在DW中开发然后再介绍在VSS中进行版本控制和代码恢复比较等。 
</p>
		<p>    (一)、在DW中的相关应用 
</p>
		<p>    1、在DW中连接VSS服务器 
</p>
		<p>    打开DW编辑窗口后的第一件事就是连接远程服务器，也就是VSS服务器。在DW中执行Site/Site Files...命令或者按F8快捷键打开图1-12 Site面板，Site面板中可以查看到本地文件列表、测试服务器文件列表和远程VSS上面的文件列表。我们对文件的编写和操作主要是在Local View中进行的。当然你也可以不连接远程服务器，在本地打开一个未被其他小组成员Check Out的文件时DW自动连接VSS服务器，并且将该文件自动Check Out，在Site面板中的文件有三种状态，文件锁定状态：当前文件没有被任何其他成员Check Out编辑，这样的文件DW在文件名前加一个小锁。文件被自己Check Out 状态：也就是文件自己正在编辑或者已经Check Out了，DW在文件名前加一个绿色的小勾。文件被别人Check Out 状态：文件被其他小组成员Check Out了，DW在文件名前加一个红色的小勾。 
</p>
		<p>     
</p>
		<center>
				<img border="0" height="300" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-12.jpg" width="450" />
				<br />图1-12 Site面板</center>
		<p>    2、源代码文件的基本操作 
</p>
		<p>    在图1-12 Site编辑界面中可以对文件进行Put/Get,Check Out/In操作，Check Out 和Check In在前面已经介绍过了不在说明了。Put是将本地文件上载到VSS服务器上，Get就是把VSS服务器上的文件下载下来。Put/Get和Check Out/In的区别就是VSS是否对文件内容的操作做了备份和记录，Check Out/In操作在VSS上都有相应的记录，而Put/Get就没有。 
</p>
		<p>    在Site界面中可以用鼠标直接拖拽实现文件的Put/Get，在DW默认设置中从VSS服务器上拖拽文件会弹出如图1-13的信息提示框(Check Out/In操作也会有这个提示框)，该文本框的含义是是否将与该文件有关连的文件都Put/Get(Check Out/In)。强烈建议在此选择No，而且还把不要提示消息这个复选框勾选。如果你选择了Yes，你的操作将会非常慢而且还会造成一些不必要的错误(DW会用VSS上旧文件覆盖本地已修改但未Check In的文件)，DW把与当前文件有关连的所有文件都操作了，如Include文件、图片文件、CSS文件等，其实有些不是经常需要修改的文件。如果有一天需要选择它同时操作与他有关联的文件，执行Edit/Preferences...命令打开参数设置对话框，选择Site选项卡，把Dependent Files(关连文件)中的2个复选框勾选即可。 
</p>
		<p>     
</p>
		<center>
				<img border="0" height="118" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-13.gif" width="368" />
				<br />图1-13 信息提示框</center>
		<p>    3、Design Notes(设计笔记) 
</p>
		<p>    细心的人也许发现了图1－12中有几个文件名后面有个黄色的小标记，这是Macromedia在发布Dreamweaver 3.0时增加的一个功能Design Notes(设计笔记)，开发人员可以对该文件增加设计笔记和心得，这些笔记和心得是累加的，可以记录各个开发人员的笔记，这些信息任何一个打开该文件的开发人员都可以查看到，这样开发人员就可以非常方便地勾通。当用DW和VSS联合开发时，这些笔记心得还可以保存到VSS服务器上。VSS对每个文件都有个Comment(注释)功能，这和DW的Design Notes的功能有点重复，不过DW的Design Notes功能强大许多，还是推荐使用Desgin Notes，在DW3和DW4的版本中Design Notes不支持中文，但DW MX可以支持中文，这一点对那些英文不太好的人来说是一个福音。 
</p>
		<p>    若要对一个文件添加Design Notes，就先用鼠标在Files面板中选取该文件，点击鼠标右建弹出快捷菜单执行Design Notes命令，打开图1-13。在界面中就有2个选项卡，一个是Basic Info(基本信息)，另一个是All Info(所有信息)，先选择该文件的当前版本，然后在Notes(笔记)文本框中添加信息，可以通过点击日期按钮插入当前系统的日期。在All Info选项卡中可以查看所Notes。 
</p>
		<p>     
</p>
		<center>
				<img border="0" height="363" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-14.jpg" width="500" />
				<br />图1-14 设计笔记对话框</center>
		<p>    4、保持与远程服务器的同步(Synchronize) 
</p>
		<p>    同步是把本地源代码和远程服务器上源代码统一，如果不统一就用最新的覆盖本地或服务器旧文件。用鼠标在Site面板中选取本地一个源代码，然后点击鼠标右建弹出快捷菜单执行Synchronize...命令，打开图1-15对话框，在该对话框中可以设置与远程服务器(VSS服务器)的同步方式。 
</p>
		<p>     
</p>
		<center>
				<img border="0" height="142" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-15.gif" width="389" />
				<br />图1-15 设计笔记对话框</center>
		<p>    Synchornize下拉菜单中有2个选项： 
</p>
		<p>    a、整个本地站点和远程服务器同步，它会显示当前已定义的站点名称<br />　　b、仅对本地已选择的文件和远程服器上的文件同步，可以按住键盘Ctrl键选取多个文件和远程服务器相应文件同步 
</p>
		<p>    Direction(方式)下拉菜单中有3个选项：<br />　　Put newer files to remote：把最新的文件放到远程服务器上。<br />　　Get newer files from remote：从远程服务器上得到最新的文件。<br />　　Get and Put newer files：保持本地和远程服务器上都是最新文件。 
</p>
		<p>    复选框的含义是，删除远程服务器上不在本地的所有文件。 
</p>
		<p>    设置完参数后，点击Preview按钮，DW就自动按照规则搜索需要更新的相关文件，如果没有需要同步的文件DW弹出一个消息框，否则完成同步操作。 
</p>
		<p>    (二)VSS中的相关应用 
</p>
		<p>    由于在DW中可以对VSS的文件进行常规操作，开发人员不需要经常到VSS客户端中进行操作，但比如为代码设置版本、恢复文件等操作需要在VSS中进行。VSS记录了一个源代码文件从创建、修改到发布的全过程，记录了每次对该文件的Check In操作，所以在源代码查错调试方面非常有用。下面将介绍VSS几种典型的操作。 
</p>
		<p>    1、源码操作 
</p>
		<p>    登录进入VSS客户端界面，用鼠标选取源代码文件点击右建弹出快捷菜单执行Show History...命令，弹出图1-16 历史选项。这是查看记录选项，在此可以定义你要查看的历史记录。 
</p>
		<p>     
</p>
		<center>
				<img border="0" height="191" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-16.gif" width="306" />
				<br />图1-16 历史选项</center>
		<p>    Include Labels：包括用户指定的标签的历史记录。<br />　　Labels Only：仅显示有用户定义标签的历史记录。<br />　　From：限制查询历史记录的开始日期，可以输入日期、日期:时间、version(版本)或者label(标签)，在输入日期时间格式是需要加一个前缀"D"，如"D02/29/95;12:15"，在输入版本号时需要加一个前缀"L"，如Lbeta1。若仅日期格式不需要添加任何前缀，以下格式都是合法的，08.15.95, 08-15-95, or 08/15/95 format, but not as August 15, 1995，注意这些时间格式是老外的习惯，你在输入时候需要注意一下。<br />　　To：限制查询历史记录的结束日期，可以输入日期、日期:时间、version(版本)或者label(标签)，其输入规则与From的一样。<br />　　User： 指定用户名。<br />　　在输入特定条件后单击"OK"按钮弹出历史纪录列表，如图1-17 历史记录列表。 
</p>
		<p>     
</p>
		<center>
				<img border="0" height="312" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-17.gif" width="534" />
				<br />图1-17 历史记录列表</center>
		<p>    View：查看源码详细信息，如果是二进制文件将不能正常显示。<br />　　Details：查看文件的详细信息，点击该按钮会弹出一个对话框，可以查看该文件的版本信息、操作时间、操作人以及文件的注释。<br />　　Get：得到当前历史记录的源代码文件，并不是该代码的最新版本。<br />　　Check Out：将该文件Check Out。<br />　　Diff：源码比较。单击该按钮会弹出源码比较选项对话框，直接单击"OK"按钮打开图1-18界面。从界面中可以清晰看到代码的异同。VSS中用3种颜色来区分代码的变化，蓝色代码表示被删除的行，红色代码表示被修改的代码，绿色代码表示新增加的代码。 
</p>
		<p>     
</p>
		<center>
				<img border="0" height="326" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-18.gif" width="534" />
				<br />图 1-18 源代码对比</center>
		<p>    Pin/Unpin：锁定/解锁所选择的源代码文件，不允许别人再做Check Out/In操作。文件被锁定后VSS就在文件名前加一个标识。 
</p>
		<p>    Rollback：恢复当前版本。该操作是不可逆的，源码被恢复后，比该记录晚的历史记录全部被清除。建议不要过多使用该功能，可以用通过单击"Get"按钮得到当前版本的源代码，再对源码做出修改，这样做保留了历史记录不被清楚，同时也达到了Rollback的功能。 
</p>
		<p>    Report：对比报告。VSS把分析出来的结果输出到打印机、文件和剪贴板。 
</p>
		<p>    2、恢复删除记录 
</p>
		<p>    VSS中可以对删除的文件和对象进行恢复，如果用户在删除文件时选择了Destroy permanently(永久删除)，那该操作不可恢复。只有用户的权限含有Destroy才能进行彻底删除，当然也只有具有Destroy权限的用户才能恢复被删除的文件。用鼠标在VSS客户端界面的All Projects窗口中选择一个对象(也就是文件夹)，然后点击右建弹出快捷菜单执行Properties...命令，打开该对象的属性面板选择Deleted Items(删除项目)选项卡如图1-19所示。 
</p>
		<p>    用鼠标选择欲操作的文件，可以按键盘Ctrl键选取多个文件，然后单击Recover(恢复)或Purge(彻底删除，不可恢复)按钮。 
</p>
		<p>     
</p>
		<center>
				<img border="0" height="359" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-19.gif" width="385" />
				<br />图 1-19 恢复被删除的文件</center>
		<p>    3、版本控制 
</p>
		<p>    当Web项目开发完成后，就有必要对源代码封一个版本，这样有利于项目发布以及升级，用鼠标在VSS客户端界面的All Projects窗口中选择一个对象(也就是文件夹)，然后点击右建弹出快捷菜单执行Label...命令，打开设置版本窗口如图1-20 
</p>
		<p>     
</p>
		<center>
				<img border="0" height="212" hspace="0" src="http://tech.tom.com/img/assets/1100/030226dw&amp;vss1-20.gif" width="360" />
				<br />图 1-20 版本设置</center>
		<p>    只需要在Label中输入版本号然后单击OK按钮就可以了，在Comment中可输入描述内容。当封了一个版本后，该项目下面的所有源代码都封了一个版本，如图1-17 可以看到有条历史记录的Action是"Label 1"。</p>
<img src ="http://www.blogjava.net/jelver/aggbug/37470.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2006-03-26 14:42 <a href="http://www.blogjava.net/jelver/articles/37470.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>rhel4下安装配置Subversion服务器</title><link>http://www.blogjava.net/jelver/articles/37466.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Sun, 26 Mar 2006 06:14:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/37466.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/37466.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/37466.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/37466.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/37466.html</trackback:ping><description><![CDATA[
		<div class="content">
				<table align="right" border="0" cellpadding="0" cellspacing="0" style="MARGIN: 10px 7px 3px 4px">
						<tbody>
								<tr>
										<td>
										</td>
								</tr>
						</tbody>
				</table>作者:苏小勇 来源: <a href="http://www.bestunix.net/">http://www.bestunix.net</a><br /><br />原文地址: <a href="http://www.bestunix.net/p/rhel_subversion.php">http://www.bestunix.net/p/rhel_subversion.php</a><br /><br /><br />关于Subversion的种种优点就不用再说了，有兴趣的话可以去<a href="http://subversion.tigris.org/" target="_blank" title="http://subversion.tigris.org/  #### ==&gt; TARGET=_blank &lt;== ###">http://subversion.tigris.org/</a> 了解，或者google一下。 
<p><br /><br />第一步，先检查是否安装了下面软件包，rpm -q apr apr-devel subversion neon compat-libcom_err</p><p>没有的话,推荐使用apt来下载安装,只要 apt-get install subversion 一个命令就全搞定了,非常方便.apt的使用可以参考 <a href="http://www.bestunix.net/p/rhel4_apt.php" title="http://www.bestunix.net/p/rhel4_apt.php"></a><a href="http://www.bestunix.net/p/rhel4_apt.php" target="_blank" title="http://www.bestunix.net/p/rhel4_apt.php  #### ==&gt; TARGET=_blank &lt;== ###">http://www.bestunix.net/p/rhel4_apt.php</a></p><p><br />第二步，创建仓库 svnadmin create /home/svnrepo<br /><br />/root/svnrepo为所创建仓库的路径，理论上可以是任何目录</p><p><br />第三步，修改配置文件/home/svnrepo/conf/svnserve.conf</p><p></p><table align="center" border="0" cellpadding="4" cellspacing="0" style="FONT-SIZE: 8pt" width="90%"><tbody><tr><td>代码</td></tr><tr><td style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; FONT-FAMILY: courier new"><br />#去掉#[general]前面的#号<br />[general]<br />#匿名访问的权限，可以是read,write,none,默认为read<br />anon-access = none<br />#认证用户的权限，可以是read,write,none,默认为write<br />auth-access = write<br />#密码数据库的路径，去掉前面的#<br />password-db = passwd</td></tr></tbody></table><br /><br />注意：所有的行都必须顶格，否则报错。<br />建议：为了防止不必要的错误，建议你直接用我上面的内容覆盖掉文件原来的内容<p><br /><br />第四步，修改配置文件passwd。<br /><br /></p><table align="center" border="0" cellpadding="4" cellspacing="0" style="FONT-SIZE: 8pt" width="90%"><tbody><tr><td>代码</td></tr><tr><td style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; FONT-FAMILY: courier new">[users]<br />sxy = sxy</td></tr></tbody></table><br /><br />注意<br />1. 一定要去掉[users]前面的#,否则svn只能以匿名用户登录，客户端不会出现登录窗口，除非你的anon不为none,否则将返回一个错误。<br />2. 这里的密码都是没有加密的，我按照一些教程所说的用htpasswd生成的密码无法使用。<p><br /><br />第五步，启动svn服务</p><p>对于单个代码仓库</p><p>启动命令  svnserve -d -r /home/svnrepo --listen-host 192.168.1.200</p><p><br />其中-d表示在后台运行，-r指定服务器的根目录，这样访问服务器时就可以直接用svn://服务器ip来访问了。如果服务器有多ip的话--listen-host来指定监听的ip地址.</p><p>我们可以在svn客户端中通过svn://192.168.1.200来访问svn服务器</p><p>对于多个代码仓库,我们在启动时也可以用-r选项来指定服务器根目录,但访问时需要写上每个仓库相对于svn根目录的相对路径.</p><p>比如,我们有两个代码仓库/home/repo1 和/home/repo2,我们用svnserve -d -r /home --listen-host 192.168.1.200来启动,那么在客户端访问时可以用svn://192.168.1.200/repo1和svn://192.168.1.200/repo2来分别访问两个项目</p><p>启动完成以后,我们可以用ps aux|grep svnserv来查看是否存在svnserve进程.</p><p>第六步 开放服务器端口</p><p>svn默认端口是3690，你需要在防火墙上开放这个端口。</p><p>      /sbin/iptables -A INPUT -i eth0 -p tcp --dport 3690 -j ACCEPT</p><p>      /sbin/service iptables save</p><p>你也可以通过svnserve的--listen-port选项来指定一个已经开放的其他端口,不过这样的话客户端使用也必须家上端口,如svn://192.168.1.200:9999/.</p><p><br />第七步，使用svn客户端导入项目<br /><br />推荐使用客户端 <a href="http://tortoisesvn.tigris.org/" title="http://tortoisesvn.tigris.org/"></a><a href="http://tortoisesvn.tigris.org/" target="_blank" title="http://tortoisesvn.tigris.org/  #### ==&gt; TARGET=_blank &lt;== ###">http://tortoisesvn.tigris.org/</a></p><p>eclipse插件 <a href="http://subclipse.tigris.org/" title="http://subclipse.tigris.org/"></a><a href="http://subclipse.tigris.org/" target="_blank" title="http://subclipse.tigris.org/  #### ==&gt; TARGET=_blank &lt;== ###">http://subclipse.tigris.org/</a></p><p><br /><br />附：svnserve [选项]<br /><br />有效选项：<br /> -d [--daemon]            : 后台模式<br /> --listen-port arg        : 监听端口（后台模式）<br /> --listen-host arg        : 监听主机名或IP地址（后台模式）<br /> --foreground             : 在前台运行（调试时有用）<br /> -h [--help]              : 显示这个帮助<br /> --version                : 显示版本信息<br /> -i [--inetd]             : inetd 模式<br /> -r [--root] arg          : 服务根目录<br /> -R [--read-only]         : 不赞成；使用档案库配置文件<br /> -t [--tunnel]            : 隧道模式<br /> --tunnel-user arg        : 隧道用户名（模式是当前用户UID的名字）<br /> -T [--threads]           : 使用线程代替进程<br /> -X [--listen-once]       : 监听一次（调试时有用）<br /></p></div>
<img src ="http://www.blogjava.net/jelver/aggbug/37466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2006-03-26 14:14 <a href="http://www.blogjava.net/jelver/articles/37466.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SVN+Eclipse3.x代码库管理</title><link>http://www.blogjava.net/jelver/articles/37463.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Sun, 26 Mar 2006 05:59:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/37463.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/37463.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/37463.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/37463.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/37463.html</trackback:ping><description><![CDATA[
		<div class="app">
				<h1 style="TEXT-ALIGN: center">Installation Instructions</h1>
				<p>Here you will find a screenshot tour of the Subclipse installation process in Eclipse 3.x. These particular screens were captured in Eclipse 3.0.2 running on Windows XP.</p>
				<div class="h2" id="install" title="install">
						<h2>Install Subclipse in Eclipse 3.x</h2>
						<h3>Step 1:</h3>
						<p>Begin the installation from the Eclipse Help menu item.</p>
						<img alt="Install screen" src="http://subclipse.tigris.org/images/install-1.png" />
						<h3>Step 2:</h3>
						<p>This screenshot show the screen as it initially comes up. In this case you will need to change the radio button to indicate that this is a new install.</p>
						<img alt="Install screen" src="http://subclipse.tigris.org/images/install-2.png" />
						<h3>Step 3:</h3>
						<p>This screen will vary depending on the features you have installed already. You want to click on the New Remote Site button. If you are behind a proxy and the Eclipse install mechanism does not work, then you can download a zipped version of the update site and then click the New Local Site button instead.</p>
						<img alt="Install screen" src="http://subclipse.tigris.org/images/install-3.png" />
						<h3>Step 4:</h3>
						<p>This screen is showing the New Remote Site dialog, filled in with the correct information to install Subclipse</p>
						<pre>    Name: Subclipse
    URL:  http://subclipse.tigris.org/update_1.0.x
</pre>
						<img alt="Install screen" src="http://subclipse.tigris.org/images/install-4.png" />
						<h3>Step 5:</h3>
						<p>When you first come back to this screen, the site you added will NOT be selected. Be sure to select it before clicking Next.</p>
						<img alt="Install screen" src="http://subclipse.tigris.org/images/install-5.png" />
						<h3>Step 6:</h3>
						<p>This next screen shows all of the features that are available to install.</p>
						<img alt="Install screen" src="http://subclipse.tigris.org/images/install-6.png" />
						<h3>Step 7:</h3>
						<p>Click the button to accept the license agreement.</p>
						<img alt="Install screen" src="http://subclipse.tigris.org/images/install-7.png" />
						<h3>Step 8:</h3>
						<p>Confirm the install location</p>
						<img alt="Install screen" src="http://subclipse.tigris.org/images/install-8.png" />
						<h3>Step 9:</h3>
						<p>There is an Eclipse preference to turn off this next dialog. I have never seen a signed feature. Not even Eclipse.org nor IBM sign their features.</p>
						<img alt="Install screen" src="http://subclipse.tigris.org/images/install-9.png" />
						<h3>Step 10:</h3>
						<p>Just a screenshot of the in-process installation.</p>
						<img alt="Install screen" src="http://subclipse.tigris.org/images/install-10.png" />
						<h3>Step 11:</h3>
						<p>Eclipse needs to be restarted after installing Subclipse.</p>
						<img alt="Install screen" src="http://subclipse.tigris.org/images/install-11.png" />
						<h3>Step 12:</h3>
						<p>Finally, after restarting Eclipse, the first thing you will typically want to do is open the Subclipse Repository perspective where you can define your repositories. Be sure to also check the online help as well as the Subclipse preferences located under Team -&gt; SVN.</p>
						<img alt="Install screen" src="http://subclipse.tigris.org/images/install-12.png" />
				</div>
				<div class="h2" id="update" title="update">
						<h2>Updating Subclipse in Eclipse 3.x</h2>
						<p>Eclipse 3.x has a feature in preference to automatically check for updates. Provided you are not behind a proxy that does not allow this feature, it should work for Subclipse. Otherwise just follow the instructions for installing Subclipse, except take the option to check for updates in Step 2.<br /><br />If you are behind a proxy that does not work with Eclipse, then to install updates you just always follow the same instructions you used to install a new version. If you always unzip the site to the same local folder, you will not have to define the local site each time.</p>
				</div>
		</div>
<img src ="http://www.blogjava.net/jelver/aggbug/37463.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2006-03-26 13:59 <a href="http://www.blogjava.net/jelver/articles/37463.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TortoiseCVS 简明流程实例(zhuan)</title><link>http://www.blogjava.net/jelver/articles/37461.html</link><dc:creator>冰河快狼</dc:creator><author>冰河快狼</author><pubDate>Sun, 26 Mar 2006 05:47:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/37461.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/37461.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/37461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/37461.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/37461.html</trackback:ping><description><![CDATA[TortoiseCVS 简明流程实例<br /><a href="http://www.redsaga.com/CVS_newbie_win32/TortoiseCVS.html">http://www.redsaga.com/CVS_newbie_win32/TortoiseCVS.html</a><br /><p>TortoiseCVS是cvsgui的产品之一。本文使用0.43版本，请至www.cvsgui.org下载新版本。</p><pre>目录
<table><tbody><tr><td><a href="http://www.redsaga.com/CVS_newbie_win32/TortoiseCVS.html#basic">环境说明<a></a></a></td></tr><tr><td>1,<a href="http://www.redsaga.com/CVS_newbie_win32/TortoiseCVS.html#add">把本地文件加入到CVS控制之下</a></td></tr><tr><td>2,<a href="http://www.redsaga.com/CVS_newbie_win32/TortoiseCVS.html#checkout">从CVS中得到文件的拷贝</a></td></tr><tr><td>3,<a href="http://www.redsaga.com/CVS_newbie_win32/TortoiseCVS.html#edit">用CVS管理您的日常工作</a></td></tr><tr><td><a href="http://www.redsaga.com/CVS_newbie_win32/TortoiseCVS.html#end">结束语</a></td></tr></tbody></table></pre><p>本文的三个主要章节分别描述不同的操作步骤。如果您开创一个project,您需要对三个章节都明了，但是大多数人只是在已经创建的module中工作，这样的话您只需要先了解<a href="http://www.redsaga.com/CVS_newbie_win32/TortoiseCVS.html#checkout">如何从CVS得到拷贝</a>，<a href="http://www.redsaga.com/CVS_newbie_win32/TortoiseCVS.html#edit">然后是如何用CVS来管理您的每一点修改</a>。</p><p>和名字中的含义一样，TortoiseCVS的产品形象是一只....乌龟 .. :)</p><p><img alt="" border="0" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_help.jpg" /></p><p> </p><h3><a name="basic" style="WIDTH: 100%">环境说明</a></h3><p>首先介绍一下我们的环境。假设在一台地址为<code>61.155.107.187</code>的机器上运行CVSNT服务器，client通过 <code>pserver</code>协议连接到server。用户名为<code>cao</code>。</p><p>假设我们现在工作于一个名为ProjectX的项目中，该项目包括1个readme.txt文件，两个jsp文件以及1个java文件。以下是它的目录结构。</p><p><img alt="" border="0" height="353" src="http://www.redsaga.com/CVS_newbie_win32/image/unmanaged.jpg" width="488" /></p><p> </p><h3><a name="add" style="WIDTH: 100%">把本地文件加入到CVS控制之下</a></h3><p>假设您是工程管理员，您必须先开创这个项目。假设本地工作目录是d:\works\sandbox，并且这个工程已经由您完成了初步框架。首先，我们需要把这个工程加入到CVS控制之下。本地的一个project对应于server上面的一个Module，我们需要新建一个module。</p><p><img alt="" border="0" height="580" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_MakeNewModule.jpg" width="650" /></p><p>然后告诉TortoiseCVS关于repository的位置。</p><p><img alt="" border="0" height="339" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_MakeNewModule_dialog.jpg" width="406" /></p><p>这儿Module名字就是本地文件夹的名字。</p><p>第一次连接server,需要登录。</p><p><img alt="" border="0" height="358" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_MakeNewModule_login.jpg" width="616" /></p><p>第一次输入口令之后，你的口令将会被保存在一个.cvspass的文件中。这个文件位于你的'home'目录，默认为\$WINDIR$\Document and Settings\$UserName$\。如果你同时使用TortoiseCVS和WinCVS，假若发生登录错乱，请删除这个.cvspass文件。</p><p>如果一切顺利，出现以下的log画面。</p><p><img alt="" border="0" height="381" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_MakeNewModule_finished.jpg" width="600" /></p><p>祝贺！您已经成功的在Server上建立了一个新的module。</p><p>但是您还没有加入任何文件。现在在您的explorer窗口中您将会看到一个新的CVS文件夹已经被创建，但是projectX的文件都显示一个问号。您现在需要把所有的文件夹先在server上建立。选择除CVS控制文件夹之外的其他文件夹，然后选择CVS Add All Recursively.</p><p> </p><p><img alt="" border="0" height="603" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_AddAll.jpg" width="528" /></p><p>在一切正常的情况下，出现如下的log。</p><p><img alt="" border="0" height="321" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_AddAll_finished.jpg" width="600" /></p><p>请注意看log信息。您已经通知server增加几个文件，包括\javasource\test\projectX\Calculator.java和\web下的两个jsp文件，但是您还没有提交。您需要提交他们才能真正的完成加入的过程。</p><p>现在我们先来加入最外层目录下的readme.txt文件。</p><p> </p><p><img alt="" border="0" height="463" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_Add_readme.jpg" width="526" /></p><p>和刚才一样，log告知您已经声明加入该文件，但是需要提交。您可以注意到，现在readme.txt处于红色之中，TortoiseCVS提示您红色的文件需要提交。选择CVS Commit.</p><p><img alt="" border="0" height="501" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_Add_readme_commit.jpg" width="519" /></p><p>请注意看log信息。现在您的readme.txt文件有了一个初始版本号1.1。</p><p><img alt="" border="0" height="350" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_Add_readme_commit_done.jpg" width="600" /></p><p>这时候您如果进入子文件夹，您会发现刚才cvs提示您需要提交的文件也处于红色。</p><p><img alt="" border="0" height="394" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_other_files_red.jpg" width="505" /></p><p>如法炮制，commit之后您终于看到所有的文件都变成了绿色。</p><p><img alt="" border="0" height="394" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_all_files_green.jpg" width="505" /></p><p>祝贺您！您现在把您的整个工程都置于CVS管理之下，并且每个文件都有了一个初始版本号1.1。</p><h3><a name="checkout" style="WIDTH: 100%">从CVS中得到文件的拷贝</a></h3><p>创建module是项目的创始人或者主要管理者的责任。大部分用户都只需要在module创建之后得到这个项目的本地文件拷贝就可以开始工作了。</p><p>现在假设你是项目的一个普通用户，而这个项目的cvs已经建立了，您要做的就是得到项目中的所有文件，并且和您本地的文件保持同步。</p><p>现在您的本地文件夹是D:\works\sandbox2。您要做的就是'checkout'。</p><p><img alt="" border="0" height="483" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_sandbox2_checkout.jpg" width="525" /></p><p>然后告诉CVS你连接的SERVER。</p><p><img alt="" border="0" height="339" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_sandbox2_checkout_dialog.jpg" width="406" /></p><p>您必须给出Module的正确拼写。如果项目组织者告诉你Revision或者branch的信息，您还需要指定您要取得的版本。</p><p><img alt="" border="0" height="339" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_sandbox2_checkout_dialog_2.jpg" width="406" /></p><p>按下OK之后，您就得到了CVS中的相应版本。默认就是当前的最新版本。</p><p><img alt="" border="0" height="189" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_sandbox2_checkout_done.jpg" width="408" /></p><p>上面的log信息中，U就代表取得本地文件。</p><p>现在，您的本地目录应该所有的文件都是绿色的。祝贺您，您已经取得了这个版本，可以开始工作了！</p><h3><a name="edit" style="WIDTH: 100%">用CVS管理您的日常工作</a></h3><p>现在我们可以做一些真正的工作了。您意识到您需要修改readme.txt文件。您打开他，增加了一行。</p><p><img alt="" border="0" height="410" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_modify_readme.jpg" width="601" /></p><p>您保存文件之后，会发现readme.txt又变成红色的了。假设过了一段时间之后，您忘记了您刚才改过些什么了。CVS可以帮您比较您的本地文件和server文件之间的差别。选择CVS Diff。</p><p><img alt="" border="0" height="507" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_modify_readme_diff.jpg" width="526" /></p><p>如果第一次使用，TortoiseCVS会询问您关于diff工具的位置。在cvsgui的主页上您也可以找到几个不错的opensource的diff工具。如果您拥有Microsoft Visual Studio的授权，附带的Windiff是一个很不错的选择。下面就是windiff的结果。</p><p><img alt="" border="0" height="413" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_modify_readme_diff_windiff.jpg" width="539" /></p><p>各个diff工具的输出会有所不同，但是您可以看见您新增加了一行文字。</p><p>好了，现在您很满意您的修改，确认提交了。再对readme.txt做一次commit。这一次一个对话框弹出请您为您的修改作出注释。这是很重要的，其他人以后在debug的时候根据您的注释更容易工作。</p><p><img alt="" border="0" height="412" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_modify_readme_commit_comment.jpg" width="218" /></p><p>提交。</p><p><img alt="" border="0" height="235" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_modify_readme_commit_done.jpg" width="408" /></p><p>这一次提交之后，版本号变成了1.2。</p><p>TortoiseCVS也提供了每一个文件的History。在readme.txt的上下文菜单中选择properties,您会发现Tortoise新增加了一个属性页。</p><p><img alt="" border="0" height="444" src="http://www.redsaga.com/CVS_newbie_win32/image/Tcvs_modify_readme_history.jpg" width="367" /></p><p>您可以在这个属性页中得到关于这个文件的更多信息。可惜在这个属性页中不支持对revision操作。这一点上TortoiseCVS比Visual Source Safe还有差距。</p><p> </p><h3><a name="end" style="WIDTH: 100%">结束语</a></h3><p>这只是最基本的CVS应用。TortoiseCVS并不是完全功能的CVS GUI。如果您需要更进一步的帮助，请参阅它的帮助。更多的其他CVS资料请参阅Karl Fogel的《Open Source Development With CVS》一书。该书的中文译本《CVS开源软件开发技术》由机械工业出版社出版(ISBN 7-111-08891-3/TP.1885,人民币35.00)。按此连接到华储网上电脑书店订购<a href="http://www.huachu.com.cn/asp/book/brow.asp?lbbh=B99112091">http://www.huachu.com.cn/asp/book/brow.asp?lbbh=B99112091</a> 。</p><br /><br /><img src ="http://www.blogjava.net/jelver/aggbug/37461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">冰河快狼</a> 2006-03-26 13:47 <a href="http://www.blogjava.net/jelver/articles/37461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>