<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[夏岳嵩的Blog]]></title>
  <subtitle type="html"><![CDATA[创造机会的人是勇者；等待机会的人是愚者]]></subtitle>
  <id>http://www.xiayuesong.com/</id>
  <link rel="alternate" type="text/html" href="http://www.xiayuesong.com/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.xiayuesong.com/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.8">PJBlog3</generator> 
  <updated>2010-04-20T16:00:16+08:00</updated>

  <entry>
	  <title type="html"><![CDATA[Smarty 字符比较]]></title>
	  <author>
		 <name>xiayuesong</name>
		 <uri>http://www.xiayuesong.com/</uri>
		 <email>xia05070115@126.com</email>
	  </author>
	  <category term="" scheme="http://www.xiayuesong.com/default.asp?cateID=5" label="ASP" /> 
	  <updated>2010-04-20T16:00:16+08:00</updated>
	  <published>2010-04-20T16:00:16+08:00</published>
		  <summary type="html"><![CDATA[<p>eq相等，<br />
&nbsp;<wbr></wbr>ne、neq不相等，<br />
&nbsp;<wbr></wbr>gt大于，<br />
&nbsp;<wbr></wbr>lt小于，<br />
gte、ge大于等于，<br />
lte、le 小于等于，<br />
not非， mod求模。<br />
is [not] div by是否能被某数整除，<br />
&nbsp;<wbr></wbr>is [not] even是否为偶数，<br />
$a is [not] even by $b即($a / $b) % 2 == 0，<br />
is [not] odd是否为奇，<br />
$a is not odd by $b即($a / $b) % 2 != 0 示例：<br />
equal/ not equal/ greater than/ less than/ less than or equal/ great than or equal/后面的就不用说了<br />
Smarty 中的 if 语句和 php 中的 if 语句一样灵活易用，并增加了几个特性以适宜模板引擎. if 必须于 /if 成对出现. 可以使用 else 和 elseif 子句. 可以使用以下条件修饰词：eq、ne、neq、gt、lt、lte、le、gte、ge、is even、is odd、is not even、is not odd、not、mod、div by、even by、odd by、==、!=、&gt;、&lt;、&lt;=、&gt;=. 使用这些修饰词时必须和变量或常量用空格格开.</p>
<p>Example 7-11. if statements<br />
例 7-11. if 语句演示</p>
<p>{if $name eq &quot;Fred&quot;}<br />
Welcome Sir.<br />
{elseif $name eq &quot;Wilma&quot;}<br />
Welcome Ma'am.<br />
{else}<br />
Welcome, whatever you are.<br />
{/if}</p>
<p>{* an example with &quot;or&quot; logic *}<br />
{if $name eq &quot;Fred&quot; or $name eq &quot;Wilma&quot;}<br />
...<br />
{/if}</p>
<p>{* same as above *}<br />
{if $name == &quot;Fred&quot; || $name == &quot;Wilma&quot;}<br />
...<br />
{/if}</p>
<p>{* the following syntax will NOT work, conditional qualifiers<br />
must be separated from surrounding elements by spaces *}<br />
{if $name==&quot;Fred&quot; || $name==&quot;Wilma&quot;}<br />
...<br />
{/if}</p>
<p><br />
{* parenthesis are allowed *}<br />
{if ( $amount &lt; 0 or $amount &gt; 1000 ) and $volume &gt;= #minVolAmt#}<br />
...<br />
{/if}</p>
<p>{* you can also embed php function calls *}<br />
{if count($var) gt 0}<br />
...<br />
{/if}</p>
<p>{* test if values are even or odd *}<br />
{if $var is even}<br />
...<br />
{/if}<br />
{if $var is odd}<br />
...<br />
{/if}<br />
{if $var is not odd}<br />
...<br />
{/if}</p>
<p>{* test if var is divisible by 4 *}<br />
{if $var is div by 4}<br />
...<br />
{/if}</p>
<p>{* test if var is even, grouped by two. i.e.,<br />
0=even, 1=even, 2=odd, 3=odd, 4=even, 5=even, etc. *}<br />
{if $var is even by 2}<br />
...<br />
{/if}</p>
<p>{* 0=even, 1=even, 2=even, 3=odd, 4=odd, 5=odd, etc. *}<br />
{if $var is even by 3}<br />
...<br />
{/if}</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xiayuesong.com/article.asp?id=142" /> 
	  <id>http://www.xiayuesong.com/default.asp?id=142</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[★时尚饰界★3G纯银元宝链 XL00010【16寸仅售58元】]]></title>
	  <author>
		 <name>xiayuesong</name>
		 <uri>http://www.xiayuesong.com/</uri>
		 <email>xia05070115@126.com</email>
	  </author>
	  <category term="" scheme="http://www.xiayuesong.com/default.asp?cateID=16" label="时尚饰界" /> 
	  <updated>2009-10-13T00:37:16+08:00</updated>
	  <published>2009-10-13T00:37:16+08:00</published>
		  <summary type="html"><![CDATA[<div style="text-align: center; margin: 10px auto"><a target="_blank" href="http://item.taobao.com/auction/item_detail-0db1-857562b476133a4879d5ef4cd736b5fa.htm"><img border="0" alt="" src="http://www.xiayuesong.com/upfiles/123.jpg" /></a><br />
<img alt="宝贝展示" src="http://www.xiayuesong.com/shop/shop/desc_a1.gif" /></div>
<div style="text-align: center; margin: 0px auto"><img alt="" src="http://www.xiayuesong.com/shop/prod/XL00010_A.JPG" /><br />
<img alt="" src="http://www.xiayuesong.com/shop/prod/XL00010_B.JPG" /><br />
<img alt="" src="http://www.xiayuesong.com/shop/prod/XL00010_C.JPG" /><br />
<img alt="" src="http://www.xiayuesong.com/shop/prod/H00007_1B.jpg" /></div>
<div style="text-align: center; margin: 10px auto"><img alt="宝贝描述" src="http://www.xiayuesong.com/shop/shop/desc_a2.gif" /></div>
<div style="text-align: center; margin: 0px auto">
<table border="0" cellspacing="0" cellpadding="0" width="85%">
    <tbody>
        <tr>
            <td bgcolor="#999999">
            <table border="0" cellspacing="1" cellpadding="0" width="100%" style="font-size: 18px">
                <tbody>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center">宝贝名称：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">★时尚饰界★3G纯银元宝链 XL00010【16寸仅售58元】&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center">宝贝编号：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">16寸：XL00010-16<br />
                        18寸：XL00010-18&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">质&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;材：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">含银量达92.5%.含银量更纯正，电镀三层白金&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">规&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;格：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">重&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;量：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">重约3g克/件，厂家生产的每款产品的克重差距在0.5克上下左右。故每款产品克数有小小的差距。&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">适&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;合：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">图片说明：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">所有图片均为实物拍图，受拍摄图片时的天气、光线、显示器等原因的限制，图片与实物可能有细微色差和尺寸差。以实物为准。</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">宝贝价格：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">16寸：58.00<br />
                        18寸：60.00</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center" style="color: #ff0000">赠&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;品：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; color: #ff0000; padding-top: 5px">无</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center" style="color: #ff0000">说&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;明：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; color: #ff0000; padding-top: 5px">无</td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div style="text-align: center; margin: 10px auto"><img alt="买家须知" src="http://www.xiayuesong.com/shop/shop/desc_a3.gif" /></div>
<div style="text-align: left; padding-bottom: 5px; line-height: 120%; margin: 0px auto; padding-left: 5px; width: 85%; padding-right: 5px; font-size: 14px; padding-top: 5px">1、本店银饰在您收到货后3天内属于可退货期，在这期间内除了人为损坏的产品以外，有质量问题的商品可以要求退货（特殊商品除外）。来回的邮费由我们承担，超过此期限寄出的产品恕不退换。<br />
<br />
2、我们的售后服务时间长达3年，3年之内，只要您有要清洗、翻新、改指圈等等系列问题，都可寄回给我们修理，来回邮费需由您承担。<br />
<br />
3、本店银饰的戒指指圈号数是国际标准号，您可以到<a target="_blank" href="http://shop33654785.taobao.com/shop/xshop/wui_page-18994833.htm"><font color="#3366cc">指圈的测量方法</font></a>中进行测量，如收到货后发现不能佩戴需要更换的，来回的邮费将由您承担，以刻字的戒指恕不更换。所以请务必一定要多测量几次，以免不必要的麻烦。<br />
<br />
4、刻字效果图<br />
<img alt="免费刻字" src="http://www.xiayuesong.com/shop/shop/kz.jpg" /></div>
<div style="text-align: center; margin: 10px auto"><img alt="邮资说明" src="http://www.xiayuesong.com/shop/shop/desc_a4.gif" /></div>
<div style="text-align: left; padding-bottom: 5px; line-height: 120%; margin: 0px auto; padding-left: 5px; width: 85%; padding-right: 5px; font-size: 14px; padding-top: 5px"><span style="font-weight: bold">邮资介绍：</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;★&nbsp;&nbsp;平邮----------8元<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;速度比较慢，一般要7&mdash;&mdash;20天，有时还会延期，现在没有跟踪查询的功能，所以选择平邮的朋友们一定要耐心等待，如果发货后30天未收到的话，您可以拿我提供给您的单号和您的身份证到当地邮局柜台咨询。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;★&nbsp;&nbsp;快递：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;广东省内10元（同日下午或次日早到达）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;其他地区：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;中通.圆通.申通快递----------12元（2到5天到达。看地区而定）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;顺风快递-----------------------18元（次日到达）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;EMS-----------------------------22元（次日到达）<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注：如果您没要求，我们将默认为是中通和圆通或申通快递；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;港.澳.台仅支持EMS，邮费以中国邮政报价为准。<br />
<br />
<br />
<span style="font-weight: bold">关于发货：</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们在您拍下后24小时内发货，周六、周日照常发货（需要刻字服务的货品周六、周日由于刻字的部门不上班，所以会延至周一再发货），在发货后我们会即刻把发货单号发给您，您可以到以下网点查询快递的进度：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EMS：&nbsp;&nbsp;http://www.ems.com.cn/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;顺风：&nbsp;&nbsp;http://www.sf-express.com/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;中通：&nbsp;&nbsp;http://www.zto.cn/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;圆通：&nbsp;&nbsp;http://www.yto.net.cn/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;申通：&nbsp;&nbsp;http://www.sto5.cn/</div>
<p><a target="_blank" href="http://item.taobao.com/auction/item_detail-0db1-857562b476133a4879d5ef4cd736b5fa.htm"><img border="0" alt="" src="http://www.xiayuesong.com/upfiles/123.jpg" /></a></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xiayuesong.com/article.asp?id=141" /> 
	  <id>http://www.xiayuesong.com/default.asp?id=141</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[★时尚饰界★2.5G纯银元宝链 XL00009【18寸仅售52元】]]></title>
	  <author>
		 <name>xiayuesong</name>
		 <uri>http://www.xiayuesong.com/</uri>
		 <email>xia05070115@126.com</email>
	  </author>
	  <category term="" scheme="http://www.xiayuesong.com/default.asp?cateID=16" label="时尚饰界" /> 
	  <updated>2009-10-13T00:33:32+08:00</updated>
	  <published>2009-10-13T00:33:32+08:00</published>
		  <summary type="html"><![CDATA[<div style="text-align: center; margin: 10px auto"><img alt="宝贝展示" src="http://www.xiayuesong.com/shop/shop/desc_a1.gif" /></div>
<div style="text-align: center; margin: 0px auto"><img src="http://www.xiayuesong.com/shop/prod/XL00009_A.JPG" alt="" /><br />
<img src="http://www.xiayuesong.com/shop/prod/XL00009_B.JPG" alt="" /><br />
<img src="http://www.xiayuesong.com/shop/prod/H00007_1B.jpg" alt="" /></div>
<div style="text-align: center; margin: 10px auto"><img alt="宝贝描述" src="http://www.xiayuesong.com/shop/shop/desc_a2.gif" /></div>
<div style="text-align: center; margin: 0px auto">
<table border="0" cellspacing="0" cellpadding="0" width="85%">
    <tbody>
        <tr>
            <td bgcolor="#999999">
            <table border="0" cellspacing="1" cellpadding="0" width="100%" style="font-size: 18px">
                <tbody>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center">宝贝名称：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">★时尚饰界★2.5G纯银元宝链 XL00009【18寸仅售52元】&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center">宝贝编号：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">16寸：XL00009-16<br />
                        18寸：XL00009-18&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">质&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;材：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">含银量达92.5%.含银量更纯正，电镀三层白金&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">规&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;格：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">重&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;量：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">重约2.5克/件，厂家生产的每款产品的克重差距在0.5克上下左右。故每款产品克数有小小的差距。&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">适&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;合：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">图片说明：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">所有图片均为实物拍图，受拍摄图片时的天气、光线、显示器等原因的限制，图片与实物可能有细微色差和尺寸差。以实物为准。</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">宝贝价格：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">16寸：49.00<br />
                        18寸：52.00</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center" style="color: #ff0000">赠&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;品：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; color: #ff0000; padding-top: 5px">无</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center" style="color: #ff0000">说&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;明：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; color: #ff0000; padding-top: 5px">无</td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div style="text-align: center; margin: 10px auto"><img alt="买家须知" src="http://www.xiayuesong.com/shop/shop/desc_a3.gif" /></div>
<div style="text-align: left; padding-bottom: 5px; line-height: 120%; margin: 0px auto; padding-left: 5px; width: 85%; padding-right: 5px; font-size: 14px; padding-top: 5px">1、本店银饰在您收到货后3天内属于可退货期，在这期间内除了人为损坏的产品以外，有质量问题的商品可以要求退货（特殊商品除外）。来回的邮费由我们承担，超过此期限寄出的产品恕不退换。<br />
<br />
2、我们的售后服务时间长达3年，3年之内，只要您有要清洗、翻新、改指圈等等系列问题，都可寄回给我们修理，来回邮费需由您承担。<br />
<br />
3、本店银饰的戒指指圈号数是国际标准号，您可以到<a href="http://shop33654785.taobao.com/shop/xshop/wui_page-18994833.htm" target="_blank"><font color="#3366cc">指圈的测量方法</font></a>中进行测量，如收到货后发现不能佩戴需要更换的，来回的邮费将由您承担，以刻字的戒指恕不更换。所以请务必一定要多测量几次，以免不必要的麻烦。<br />
<br />
4、刻字效果图<br />
<img alt="免费刻字" src="http://www.xiayuesong.com/shop/shop/kz.jpg" /></div>
<div style="text-align: center; margin: 10px auto"><img alt="邮资说明" src="http://www.xiayuesong.com/shop/shop/desc_a4.gif" /></div>
<div style="text-align: left; padding-bottom: 5px; line-height: 120%; margin: 0px auto; padding-left: 5px; width: 85%; padding-right: 5px; font-size: 14px; padding-top: 5px"><span style="font-weight: bold">邮资介绍：</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;★&nbsp;&nbsp;平邮----------8元<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;速度比较慢，一般要7&mdash;&mdash;20天，有时还会延期，现在没有跟踪查询的功能，所以选择平邮的朋友们一定要耐心等待，如果发货后30天未收到的话，您可以拿我提供给您的单号和您的身份证到当地邮局柜台咨询。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;★&nbsp;&nbsp;快递：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;广东省内10元（同日下午或次日早到达）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;其他地区：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;中通.圆通.申通快递----------12元（2到5天到达。看地区而定）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;顺风快递-----------------------18元（次日到达）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;EMS-----------------------------22元（次日到达）<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注：如果您没要求，我们将默认为是中通和圆通或申通快递；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;港.澳.台仅支持EMS，邮费以中国邮政报价为准。<br />
<br />
<br />
<span style="font-weight: bold">关于发货：</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们在您拍下后24小时内发货，周六、周日照常发货（需要刻字服务的货品周六、周日由于刻字的部门不上班，所以会延至周一再发货），在发货后我们会即刻把发货单号发给您，您可以到以下网点查询快递的进度：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EMS：&nbsp;&nbsp;http://www.ems.com.cn/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;顺风：&nbsp;&nbsp;http://www.sf-express.com/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;中通：&nbsp;&nbsp;http://www.zto.cn/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;圆通：&nbsp;&nbsp;http://www.yto.net.cn/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;申通：&nbsp;&nbsp;http://www.sto5.cn/</div>
<p><a target="_blank" href="http://item.taobao.com/auction/item_detail-0db1-e51be0bc1c68fe8dff0c3fbde7d22c9c.htm"><img border="0" alt="" src="http://www.xiayuesong.com/upfiles/123.jpg" /></a></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xiayuesong.com/article.asp?id=140" /> 
	  <id>http://www.xiayuesong.com/default.asp?id=140</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[★时尚饰界★3G纯银元宝链 XL00010【18寸仅售60元】]]></title>
	  <author>
		 <name>xiayuesong</name>
		 <uri>http://www.xiayuesong.com/</uri>
		 <email>xia05070115@126.com</email>
	  </author>
	  <category term="" scheme="http://www.xiayuesong.com/default.asp?cateID=16" label="时尚饰界" /> 
	  <updated>2009-10-13T00:29:57+08:00</updated>
	  <published>2009-10-13T00:29:57+08:00</published>
		  <summary type="html"><![CDATA[<div style="text-align: center; margin: 10px auto"><img alt="宝贝展示" src="http://www.xiayuesong.com/shop/shop/desc_a1.gif" /></div>
<div style="text-align: center; margin: 0px auto"><img src="http://www.xiayuesong.com/shop/prod/XL00010_A.JPG" alt="" /><br />
<img src="http://www.xiayuesong.com/shop/prod/XL00010_B.JPG" alt="" /><br />
<img src="http://www.xiayuesong.com/shop/prod/XL00010_C.JPG" alt="" /><br />
<img src="http://www.xiayuesong.com/shop/prod/H00007_1B.jpg" alt="" /></div>
<div style="text-align: center; margin: 10px auto"><img alt="宝贝描述" src="http://www.xiayuesong.com/shop/shop/desc_a2.gif" /></div>
<div style="text-align: center; margin: 0px auto">
<table border="0" cellspacing="0" cellpadding="0" width="85%">
    <tbody>
        <tr>
            <td bgcolor="#999999">
            <table border="0" cellspacing="1" cellpadding="0" width="100%" style="font-size: 18px">
                <tbody>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center">宝贝名称：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">★时尚饰界★3G纯银元宝链 XL00010【18寸仅售60元】&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center">宝贝编号：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">16寸：XL00010-16<br />
                        18寸：XL00010-18&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">质&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;材：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">含银量达92.5%.含银量更纯正，电镀三层白金&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">规&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;格：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">重&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;量：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">重约3g克/件，厂家生产的每款产品的克重差距在0.5克上下左右。故每款产品克数有小小的差距。&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">适&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;合：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">图片说明：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">所有图片均为实物拍图，受拍摄图片时的天气、光线、显示器等原因的限制，图片与实物可能有细微色差和尺寸差。以实物为准。</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">宝贝价格：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">16寸：58.00<br />
                        18寸：60.00</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center" style="color: #ff0000">赠&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;品：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; color: #ff0000; padding-top: 5px">无</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center" style="color: #ff0000">说&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;明：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; color: #ff0000; padding-top: 5px">无</td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div style="text-align: center; margin: 10px auto"><img alt="买家须知" src="http://www.xiayuesong.com/shop/shop/desc_a3.gif" /></div>
<div style="text-align: left; padding-bottom: 5px; line-height: 120%; margin: 0px auto; padding-left: 5px; width: 85%; padding-right: 5px; font-size: 14px; padding-top: 5px">1、本店银饰在您收到货后3天内属于可退货期，在这期间内除了人为损坏的产品以外，有质量问题的商品可以要求退货（特殊商品除外）。来回的邮费由我们承担，超过此期限寄出的产品恕不退换。<br />
<br />
2、我们的售后服务时间长达3年，3年之内，只要您有要清洗、翻新、改指圈等等系列问题，都可寄回给我们修理，来回邮费需由您承担。<br />
<br />
3、本店银饰的戒指指圈号数是国际标准号，您可以到<a href="http://shop33654785.taobao.com/shop/xshop/wui_page-18994833.htm" target="_blank"><font color="#3366cc">指圈的测量方法</font></a>中进行测量，如收到货后发现不能佩戴需要更换的，来回的邮费将由您承担，以刻字的戒指恕不更换。所以请务必一定要多测量几次，以免不必要的麻烦。<br />
<br />
4、刻字效果图<br />
<img alt="免费刻字" src="http://www.xiayuesong.com/shop/shop/kz.jpg" /></div>
<div style="text-align: center; margin: 10px auto"><img alt="邮资说明" src="http://www.xiayuesong.com/shop/shop/desc_a4.gif" /></div>
<div style="text-align: left; padding-bottom: 5px; line-height: 120%; margin: 0px auto; padding-left: 5px; width: 85%; padding-right: 5px; font-size: 14px; padding-top: 5px"><span style="font-weight: bold">邮资介绍：</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;★&nbsp;&nbsp;平邮----------8元<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;速度比较慢，一般要7&mdash;&mdash;20天，有时还会延期，现在没有跟踪查询的功能，所以选择平邮的朋友们一定要耐心等待，如果发货后30天未收到的话，您可以拿我提供给您的单号和您的身份证到当地邮局柜台咨询。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;★&nbsp;&nbsp;快递：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;广东省内10元（同日下午或次日早到达）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;其他地区：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;中通.圆通.申通快递----------12元（2到5天到达。看地区而定）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;顺风快递-----------------------18元（次日到达）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;EMS-----------------------------22元（次日到达）<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注：如果您没要求，我们将默认为是中通和圆通或申通快递；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;港.澳.台仅支持EMS，邮费以中国邮政报价为准。<br />
<br />
<br />
<span style="font-weight: bold">关于发货：</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们在您拍下后24小时内发货，周六、周日照常发货（需要刻字服务的货品周六、周日由于刻字的部门不上班，所以会延至周一再发货），在发货后我们会即刻把发货单号发给您，您可以到以下网点查询快递的进度：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EMS：&nbsp;&nbsp;http://www.ems.com.cn/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;顺风：&nbsp;&nbsp;http://www.sf-express.com/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;中通：&nbsp;&nbsp;http://www.zto.cn/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;圆通：&nbsp;&nbsp;http://www.yto.net.cn/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;申通：&nbsp;&nbsp;http://www.sto5.cn/</div>
<p><a target="_blank" href="http://item.taobao.com/auction/item_detail-0db1-3e7474dec4daec22360c8eb08655aaf5.htm"><img border="0" align="absMiddle" alt="" src="http://www.xiayuesong.com/upfiles/123.jpg" /></a></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xiayuesong.com/article.asp?id=139" /> 
	  <id>http://www.xiayuesong.com/default.asp?id=139</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[★时尚饰界★纯银元宝情侣链 XL00012【仅售158元】 ]]></title>
	  <author>
		 <name>xiayuesong</name>
		 <uri>http://www.xiayuesong.com/</uri>
		 <email>xia05070115@126.com</email>
	  </author>
	  <category term="" scheme="http://www.xiayuesong.com/default.asp?cateID=16" label="时尚饰界" /> 
	  <updated>2009-10-13T00:05:07+08:00</updated>
	  <published>2009-10-13T00:05:07+08:00</published>
		  <summary type="html"><![CDATA[<p title="款式">★时尚饰界★纯银元宝情侣链 XL00012【仅售158元】&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a target="_blank" href="http://item.taobao.com/auction/item_detail-0db1-85eac9a153aa58a7fd3e76d0c8d83486.htm"><img border="0" alt="" src="http://www.xiayuesong.com/UpFiles/123.jpg" /></a></p>
<div id="J_DivItemDesc" class="content">
<div style="width: 100%">
<div style="text-align: center; margin: 10px auto"><img border="0" alt="宝贝展示" src="http://www.xiayuesong.com/shop/shop/desc_a1.gif" /></div>
<div style="text-align: center; margin: 0px auto"><img alt="" src="http://www.xiayuesong.com/shop/prod/XL00012_A.JPG" /><br />
<img alt="" src="http://www.xiayuesong.com/shop/prod/XL00012_B.JPG" /><br />
<img alt="" src="http://www.xiayuesong.com/shop/prod/H00007_1B.jpg" /></div>
<div style="text-align: center; margin: 10px auto"><img border="0" alt="宝贝描述" src="http://www.xiayuesong.com/shop/shop/desc_a2.gif" /></div>
<div style="text-align: center; margin: 0px auto">
<table border="0" cellspacing="0" cellpadding="0" width="85%">
    <tbody>
        <tr>
            <td bgcolor="#999999">
            <table border="0" cellspacing="1" cellpadding="0" width="100%" style="font-size: 18px">
                <tbody>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center">宝贝名称：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">★时尚饰界★纯银元宝情侣链 XL00012【仅售158元】&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center">宝贝编号：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">XL00012</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">质&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;材：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">含银量达92.5%.含银量更纯正，电镀三层白金&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">规&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;格：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">男款长18寸（48cm）女款长16寸（40cm） 需加长款价格另议 &nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">重&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;量：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">男款重约6g克/件，女款重约3g，厂家生产的每款产品的克重差距在0.5克上下左右。故每款产品克数有小小的差距。&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">适&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;合：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">&nbsp;</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">图片说明：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">所有图片均为实物拍图，受拍摄图片时的天气、光线、显示器等原因的限制，图片与实物可能有细微色差和尺寸差。以实物为准。</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="50" width="20%" align="center">宝贝价格：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px">￥：158.00 元</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center" style="color: #ff0000">赠&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;品：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; color: #ff0000; padding-top: 5px">无</td>
                    </tr>
                    <tr>
                        <td bgcolor="#d9e8ff" height="40" width="20%" align="center" style="color: #ff0000">说&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;明：</td>
                        <td bgcolor="#ffffff" width="80%" align="left" style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; color: #ff0000; padding-top: 5px">无</td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div style="text-align: center; margin: 10px auto"><img alt="买家须知" src="http://www.xiayuesong.com/shop/shop/desc_a3.gif" /></div>
<div style="text-align: left; padding-bottom: 5px; line-height: 120%; margin: 0px auto; padding-left: 5px; width: 85%; padding-right: 5px; font-size: 14px; padding-top: 5px">1、本店银饰在您收到货后3天内属于可退货期，在这期间内除了人为损坏的产品以外，有质量问题的商品可以要求退货（特殊商品除外）。来回的邮费由我们承担，超过此期限寄出的产品恕不退换。<br />
<br />
2、我们的售后服务时间长达3年，3年之内，只要您有要清洗、翻新、改指圈等等系列问题，都可寄回给我们修理，来回邮费需由您承担。<br />
<br />
3、本店银饰的戒指指圈号数是国际标准号，您可以到<a target="_blank" href="http://shop33654785.taobao.com/shop/xshop/wui_page-18994833.htm"><font color="#3366cc">指圈的测量方法</font></a>中进行测量，如收到货后发现不能佩戴需要更换的，来回的邮费将由您承担，以刻字的戒指恕不更换。所以请务必一定要多测量几次，以免不必要的麻烦。<br />
<br />
4、刻字效果图<br />
<img alt="免费刻字" src="http://www.xiayuesong.com/shop/shop/kz.jpg" /></div>
<div style="text-align: center; margin: 10px auto"><img alt="邮资说明" src="http://www.xiayuesong.com/shop/shop/desc_a4.gif" /></div>
<div style="text-align: left; padding-bottom: 5px; line-height: 120%; margin: 0px auto; padding-left: 5px; width: 85%; padding-right: 5px; font-size: 14px; padding-top: 5px"><span style="font-weight: bold">邮资介绍：</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;★&nbsp;&nbsp;平邮----------8元<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;速度比较慢，一般要7&mdash;&mdash;20天，有时还会延期，现在没有跟踪查询的功能，所以选择平邮的朋友们一定要耐心等待，如果发货后30天未收到的话，您可以拿我提供给您的单号和您的身份证到当地邮局柜台咨询。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;★&nbsp;&nbsp;快递：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;广东省内10元（同日下午或次日早到达）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;其他地区：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;中通.圆通.申通快递----------12元（2到5天到达。看地区而定）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;顺风快递-----------------------18元（次日到达）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;◇&nbsp;&nbsp;EMS-----------------------------22元（次日到达）<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注：如果您没要求，我们将默认为是中通和圆通或申通快递；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;港.澳.台仅支持EMS，邮费以中国邮政报价为准。<br />
<br />
<br />
<span style="font-weight: bold">关于发货：</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们在您拍下后24小时内发货，周六、周日照常发货（需要刻字服务的货品周六、周日由于刻字的部门不上班，所以会延至周一再发货），在发货后我们会即刻把发货单号发给您，您可以到以下网点查询快递的进度：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EMS：&nbsp;&nbsp;http://www.ems.com.cn/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;顺风：&nbsp;&nbsp;http://www.sf-express.com/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;中通：&nbsp;&nbsp;http://www.zto.cn/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;圆通：&nbsp;&nbsp;http://www.yto.net.cn/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;申通：&nbsp;&nbsp;http://www.sto5.cn/</div>
</div>
</div>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xiayuesong.com/article.asp?id=138" /> 
	  <id>http://www.xiayuesong.com/default.asp?id=138</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Windows开机自动启动SVN服务]]></title>
	  <author>
		 <name>xiayuesong</name>
		 <uri>http://www.xiayuesong.com/</uri>
		 <email>xia05070115@126.com</email>
	  </author>
	  <category term="" scheme="http://www.xiayuesong.com/default.asp?cateID=10" label="Server" /> 
	  <updated>2009-06-08T13:53:52+08:00</updated>
	  <published>2009-06-08T13:53:52+08:00</published>
		  <summary type="html"><![CDATA[<p>创建autoRunSVN.bat文件，内容是：</p>
<p>&nbsp;</p>
<p>&nbsp;sc create MySVNServer binpath= &quot;\&quot;C:\Program FilesSubversion\svnserve\svnserve\&quot; --service -r H:\homerepos&quot; displayname= &quot;SVNService&quot; depend= Tcpip start= auto<br />
pause</p>
<p>&nbsp;</p>
<p>注意之处：</p>
<p>（1）sc是windows自带的服务配置程序，MySVNServer 是服务的名称，似乎没什么用。</p>
<p>（2）参数binPath表示svnserve可执行文件的安装路径，由于路径中的&quot;Program Files&quot;带有空格，因此整个路径需要用双引号引起来。而双引号本身是个特殊字符，需要进行转移，因此在路径前后的两个双引号都需要写成\&quot; 。<br />
（3）--service参数表示以windows服务的形式运行，--r指明svn repository的位置，service参数与r参数都作为binPath的一部分，因此与svnserve.exe的路径一起被包含在一对双引号当中，而这对双引号不需要进行转义。</p>
<p>（4）displayname表示在windows服务列表中显示的名字， depend =Tcpip 表示svnserve服务的运行需要tcpip服务，start=auto表示开机后自动运行。安装服务后，svnserve要等下次开机时才会自动运行。 （5）binPath的等号前面无空格，等号后面有空格 displayname depend start也都一样 <br />
service前面是--，不是- ，而r前面是-<br />
（6）若要卸载svn服务，则执行 sc delete svnserve 即可。&nbsp;</p>
<p>（7）从&ldquo;sc&rdquo;到&ldquo;auto&rdquo;是在同一个命令sc，必须写在同一行。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 创建成功后，可以在运行中键入service.msc察看系统服务，找到SVNService项，查看这项服务的属性，可以使用Windows提供的界面操作SVNService服务了。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<img alt="" src="http://www.xiayuesong.com/attachments/month_0906/0200968135251.gif" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 也可以使用命令行启动、停止服务。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 启动服务：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;net start svnservice<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SVNService 服务正在启动 .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SVNService 服务已经启动成功。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 停止服务：<br />
&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;net stop svnservice<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SVNService 服务正在停止.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SVNService 服务已成功停止。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 删除创建的服务<br />
&nbsp;&nbsp;&nbsp;&nbsp; C:\&gt;sc delete svn svnservice</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xiayuesong.com/article.asp?id=137" /> 
	  <id>http://www.xiayuesong.com/default.asp?id=137</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[SVN精细权限控制]]></title>
	  <author>
		 <name>xiayuesong</name>
		 <uri>http://www.xiayuesong.com/</uri>
		 <email>xia05070115@126.com</email>
	  </author>
	  <category term="" scheme="http://www.xiayuesong.com/default.asp?cateID=10" label="Server" /> 
	  <updated>2009-05-26T10:22:51+08:00</updated>
	  <published>2009-05-26T10:22:51+08:00</published>
		  <summary type="html"><![CDATA[<p>本章将详细介绍前一章所涉及的两个配置文件， svnserve.conf 和 authz.conf，通过对配置逐行的描述，来阐明其中的一些细节含义。除此之外的其他配置、安装等内容，不是本文重点，读者若有什么疑问，请参考后面&ldquo;参考文献&rdquo;中列出的一些文档。<br />
<br />
这里首先要注意一点，任何配置文件的有效配置行，都 **不允许存在前置空格** ，否则程序可能会出错，给你一个 ``Option expected`` 的提示。也就是说，如果你直接从本文的纯文本格式中拷贝了相关的配置行过去，需要手动将前置的4个空格全部删除。当然了，如果你觉得一下子要删除好多行的同样数目的前置空格是一件苦差使，那么也许 UltraEdit 的&ldquo;Column Mode&rdquo;编辑模式，可以给你很大帮助。<br />
<br />
<br />
svnserve.conf<br />
-------------<br />
<br />
``arm\conf\svnserve.conf`` 文件，是 svnserve.exe 这个服务器进程的配置文件，我们逐行解释如下。<br />
<br />
首先，我们告诉 svnserve.exe，用户名与密码放在 passwd.conf 文件下。当然，你可以改成任意的有效文件名，比如默认的就是 passwd::<br />
<br />
&nbsp;&nbsp;&nbsp; password-db = passwd.conf<br />
<br />
接下来这两行的意思，是说只允许经过验证的用户，方可访问代码库。 那么哪些是&ldquo;经过验证的&rdquo;用户呢？噢，当然，就是前面说那些在 passwd.conf 文件里面持有用户名密码的家伙。这两行的等号后面，目前只允许 read write none 三种值，你如果想实现一些特殊的值，比如说&ldquo;read-once&rdquo;之类的，建议你自己动手改源代码，反正它也是自由软件::<br />
<br />
&nbsp;&nbsp;&nbsp; anon-access = none<br />
&nbsp;&nbsp;&nbsp; auth-access = write<br />
<br />
接下来就是最关键的一句呢，它告诉 svnserve.exe，项目目录访问权限的相关配置是放在 authz.conf 文件里::<br />
<br />
&nbsp;&nbsp;&nbsp; authz-db = authz.conf<br />
<br />
当然，svn 1.3.2 引入本功能的时候，系统默认使用 authz 而不是 authz.conf 作为配置文件。不过可能由于鄙人是处女座的，据说有着强烈的完美主义情结，看着 svnserve.conf 有后缀而 passwd 和 authz 没有就是不爽，硬是要改了。<br />
<br />
上述的 passwd.conf 和 authz.conf 两个文件也可以作为多个代码库共享使用，我们只要将它们放在公共目录下，比如说放在 ``D:\svn`` 目录下，然后在每个代码库的 svnserve.conf 文件中，使用如下语句::<br />
<br />
&nbsp;&nbsp;&nbsp; password-db = ..\..\passwd.conf<br />
&nbsp;&nbsp;&nbsp; authz-db = ..\..\authz.conf<br />
<br />
或者::<br />
<br />
&nbsp;&nbsp;&nbsp; password-db = ../../passwd.conf<br />
&nbsp;&nbsp;&nbsp; authz-db = ../../authz.conf<br />
&nbsp;&nbsp;&nbsp; <br />
这样就可以让多个代码库共享同一个用户密码、目录控制配置文件，这在有些情况下是非常方便的。<br />
<br />
<br />
authz.conf 之用户分组<br />
---------------------<br />
<br />
``arm\conf\authz.conf`` 文件的配置段，可以分为两类， ``[group]`` 是一类，里面放置着所有用户分组信息。其余以 ``[arm:/]`` 开头的是另外一类，每一段就是对应着项目的一个目录，其目录相关权限，就在此段内设置。<br />
<br />
首先，我们将人员分组管理，以便以后由于人员变动而需要重新设置权限时候，尽量少改动东西。我们一共设置了5个用户分组，分组名称统一采用 ``g_`` 前缀，以方便识别。当然了，分组成员之间采用逗号隔开::<br />
<br />
&nbsp;&nbsp;&nbsp; [groups]<br />
&nbsp;&nbsp;&nbsp; # 任何想要查看所有文档的非本部门人士<br />
&nbsp;&nbsp;&nbsp; g_vip = morson<br />
<br />
&nbsp;&nbsp;&nbsp; # 经理<br />
&nbsp;&nbsp;&nbsp; g_manager = michael<br />
<br />
&nbsp;&nbsp;&nbsp; # 北京办人员<br />
&nbsp;&nbsp;&nbsp; g_beijing = scofield<br />
<br />
&nbsp;&nbsp;&nbsp; # 上海办人员<br />
&nbsp;&nbsp;&nbsp; g_shanghai = lincon<br />
<br />
&nbsp;&nbsp;&nbsp; # 总部一般员工<br />
&nbsp;&nbsp;&nbsp; g_headquarters = rory, linda<br />
<br />
&nbsp;&nbsp;&nbsp; # 小秘，撰写文档<br />
&nbsp;&nbsp;&nbsp; g_docs = linda<br />
<br />
注意到没有， linda 这个帐号同时存在&ldquo;总部&rdquo;和&ldquo;文档员&rdquo;两个分组里面，这可不是我老眼昏花写错了，是因为 Subversion 允许我这样设置。它意味着，这个家伙所拥有的权限，将会比他的同事 rory 要多一些，这样的确很方便。具体多了哪些呢？请往下看！<br />
<br />
<br />
authz.conf 之项目根目录<br />
-----------------------<br />
<br />
接着，我们对项目根目录做了限制，该目录只允许arm事业部的经理才能修改，其他人都只能眼巴巴的看着::<br />
<br />
&nbsp;&nbsp;&nbsp; [arm:/]<br />
&nbsp;&nbsp;&nbsp; @g_manager = rw<br />
&nbsp;&nbsp;&nbsp; * = r<br />
<br />
- ``[arm:/]`` 表示这个目录结构的相对根节点，或者说是 arm 项目的根目录。其中的 arm 字样，其实就是代码库的名称，即前面用 svnadmin create 命令创建出来的那个 arm。<br />
<br />
- 这里的 ``@`` 表示接下来的是一个组名，不是用户名。因为目前 g_manager 组里面只有一个 michael，你当然也可以将 ``@g_manager = rw`` 这一行替换成 ``michael = rw`` ，而表达的意义完全一样。<br />
<br />
- ``*`` 表示&ldquo;除了上面提到的那些人之外的其余所有人&rdquo;，也就是&ldquo;除了部门经理外的其他所有人&rdquo;，当然也包括总经理那个怪老头<br />
<br />
- ``* = r`` 则表示&ldquo;那些人只能读，不能写&rdquo;<br />
<br />
<br />
authz.conf 之项目子目录<br />
-----------------------<br />
<br />
然后，我们要给总部人员开放日志目录的读写权限::<br />
<br />
&nbsp;&nbsp;&nbsp; [arm:/diary/headquarters]<br />
&nbsp;&nbsp;&nbsp; @g_manager = rw<br />
&nbsp;&nbsp;&nbsp; @g_headquarters = rw<br />
&nbsp;&nbsp;&nbsp; @g_vip = r<br />
&nbsp;&nbsp;&nbsp; * =<br />
<br />
这个子目录的设置有些特色，因为从需求分析中我们知道，这个子目录的权限范围要比其父目录小，它不允许除指定了的之外其他任何人访问。在这段设置中，我们需要注意以下几点：<br />
<br />
- 我敢打赌，设计svn的家伙们，大部分都是在类 unix 平台下工作，所以他们总喜欢使用 ``/`` 来标识子目录，而完全忽视在 MS Windows 下是用 ``\`` 来做同样的事情。所以这儿，为了表示 ``diary\headquarters`` 这个目录，我们必须使用 ``[arm:/diary/headquarters]`` 这样的格式。当然如果你一定要用 ``\`` ，那么唯一的结果就是，Subversion 会将你的这部分设置置之不理，全当没看到。<br />
<br />
- 这里最后一行的 ``* =`` 表示，除了经理、总部人员、特别人士之外，任何人都被禁止访问本目录。这一行是否可以省略呢？不行，因为 **权限具备继承性** ，子目录会自动拥有父目录的权限。若没有这一行，则所有帐号都可以读取 ``/diary/headquarters`` 目录下的文件。因为虽然我们并没有设置这个目录的父目录权限，可是默认的规则使得 ``/diary`` 目录的权限与根目录完全一样，从而让其余帐号获得对 ``/diary/headquarters`` 目录的 r 权限。所以简单来说， ``* =`` 这一句的目的，就是割断权限继承性，使得管理员可以定制某个目录及其子目录的权限，从而完全避开其父目录权限设置的影响。<br />
<br />
- 之所以这儿需要将 ``@g_vip = r`` 一句加上，就是因为存在上述这个解释。如果说你没有明确地给总经理授予读的权力，则他会和其他人一样，被 ``* =`` 给排除在外。<br />
<br />
- 如果众位看官中间，有谁玩过防火墙配置的话，可能会感觉上述的配置很熟悉。不过这里有一点与防火墙配置不一样，那就是各个配置行之间，没有 **先后顺序** 一说。也就是说，如果我将本段配置的 ``* =`` 这一行挪到最前面，完全不影响整个配置的最终效果。<br />
<br />
接下来我们看看这一段::<br />
<br />
&nbsp;&nbsp;&nbsp; [arm:/ref]<br />
&nbsp;&nbsp;&nbsp; @g_manager = rw<br />
&nbsp;&nbsp;&nbsp; @g_docs = rw<br />
&nbsp;&nbsp;&nbsp; * = r<br />
<br />
这里的主要看点，就是 g_docs 组里面包含了一个 linda 帐号，她也同时在 g_headquarters 组里面出现，这就意味着， linda 将具备对 ``/ref`` 和 ``diary\headquarters`` 两个目录的读写权限。<br />
<br />
<br />
authz.conf 之目录表示法<br />
-----------------------<br />
在前面的描述中，我们都采用 ``[repos:/some/dir]`` 这样的格式来表示项目的某个目录，比如上一小节中的 ``[arm:/diary/headquarters]`` 。而实际上，Subversion 允许你采用 ```[/some/dir]`` 这样的格式，即不指定代码库的方式来表示目录，此时的目录就匹配所有项目。<br />
<br />
对于使用 svnserve 的用户来说，只有当 svnserve 运行的时候使用了 ``-r`` 参数，并且让多个代码库共享同一个目录权限文件（即 authz.conf 或 authz）时，不指明代码库名称才有可能惹麻烦。一般情况下，我们对每个代码库都会独立使用配置文件，毕竟每个项目的目录结构，都有很大不同，混在一起意义不大。因此一般来说，为简洁起见，都可以不指明代码库名称。本文全都指明了代码库名称，主要是为了将来扩展成同一个配置文件，以方便配合 Apache 服务器。<br />
<br />
对于使用 Apache 的用户来说，它们二者可有着很大的不同，因为此时往往习惯于使用一个公共的目录权限配置文件。如果你使用了 SVNParentPath 指令，则指定版本库的名字是很重要的，因为假若你使用后者，那么 ``[/some/dir]`` 部分就会与所有代码库项目的 ``[/some/dir]`` 目录匹配。如果你使用 SVNPath 指令，则这两种表示方式就没有什么区别了，毕竟只有一个版本库。<br />
<br />
<br />
authz.conf 的其他注意点<br />
-----------------------<br />
<br />
1. 父目录的 ``r`` 权限，对子目录 ``w`` 权限的影响<br />
<br />
把这个问题专门提出来，是因为在1.3.1及其以前的版本里面，有个bug，即某个帐号为了对某个子目录具备写权限，则必须对其父目录具备读权限。因此现在使用了1.3.2及其更高的版本，就方便了那些想在一个代码库存放多个相互独立的项目的管理员，来分配权限了。比如说央舜公司建立一个大的代码库用于存放所有员工日志，叫做 diary，而arm事业部只是其中一个部门，则可以这样做::<br />
<br />
&nbsp;&nbsp;&nbsp; [diary:/]<br />
&nbsp;&nbsp;&nbsp; @g_chief_manager = rw<br />
<br />
&nbsp;&nbsp;&nbsp; [diary:/arm]<br />
&nbsp;&nbsp;&nbsp; @g_arm_manager = rw<br />
&nbsp;&nbsp;&nbsp; @g_arm = r<br />
<br />
这样，对于所有arm事业部的人员来说，就可以将 svn://192.168.0.1/diary/arm 这个URL当作根目录来进行日常操作，而完全不管它其实只是一个子目录，并且当有少数好奇心比较强的人想试着 checkout 一下 svn://192.168.0.1/diary 的时候，马上就会得到一个警告&ldquo;Access denied&rdquo;，哇，太酷了。<br />
<br />
<br />
2. 默认权限<br />
<br />
如果说我对某个目录不设置任何权限，会怎样？马上动手做个试验，将::<br />
<br />
&nbsp;&nbsp;&nbsp; [diary:/]<br />
&nbsp;&nbsp;&nbsp; @g_chief_manager = rw<br />
<br />
改成::<br />
<br />
&nbsp;&nbsp;&nbsp; [diary:/]<br />
&nbsp;&nbsp;&nbsp; # @g_chief_manager = rw<br />
<br />
这样就相当于什么都没有设置。在我的 svn 1.3.2 版本上，此时是禁止任何访问。也就是说，如果你想要让某人访问某目录，你一定要显式指明这一点。这个策略，看起来与防火墙的策略是一致的。<br />
<br />
<br />
<br />
3. 只读权限带来的一个小副作用<br />
<br />
若设置了::<br />
<br />
&nbsp;&nbsp;&nbsp; [arm:/diary]<br />
&nbsp;&nbsp;&nbsp; * = r<br />
<br />
则 Subversion 会认为，任何人都不允许改动 diary 目录，包括删除、 **改名** ，和 **新增** 。<br />
<br />
也就是说，如果你在项目初期创建目录时候，一不小心写错目录名称，比如因拼写错误写成 dairy，以后除非你改动 authz.conf 里面的这行设置，否则无法利用 svn mv 命令将错误的目录更正。<br />
<br />
<br />
4. anon-access 属性对目录权限的影响<br />
<br />
你想将你的代码库开放给所有人访问，于是你就开放了匿名访问权限，在 svnserve.conf 文件中添加一行： ``anon-access=read`` 。可是对于部分目录，你又不希望别人看到，于是针对那些特别目录，你在 authz.conf 里面进行配置，添加了授权访问的人，并添加了 ``* =`` 标记。你认为一切OK了，可是你缺发现，那个特别目录却无法访问了，总是提示 ``Not authorized to open root of edit operation`` 或者 ``未授权打开根进行编辑操作`` 。你再三检查你配置的用户名与密码，确认一切正确，还是无法解决问题。<br />
<br />
原来，Subversion 有个小 bug ，当 ``anon-access=read`` 并且某个目录有被设置上 ``* =`` 标记，则会出现上述问题。这个 bug 在当前最新版本上（v1.4）还存在，也许在下一版本内可以被改正吧。<br />
<br />
解决的办法是，在 svnserve.conf 中，将 anon-access 设置成 none 。<br />
<br />
<br />
<br />
改进<br />
====<br />
<br />
对中文目录的支持<br />
----------------<br />
<br />
上午上班的时候，Morson 来到 Michael 的桌子前面，说道：&ldquo;你是否可以将我们的北京办、上海办目录，改成用中文的，看着那些拼音我觉得很难受？&rdquo; Michael 心想，还好这两天刚了解了一些与 unicode 编码相关的知识，于是微笑地回答：&ldquo;当然可以，你明天下午就可以看到中文目录名称了。&rdquo;<br />
<br />
1. 使用 svn mv 指令，将原来的一些目录改名并 commit 入代码库，改名后的目录结构如下::<br />
<br />
&nbsp;&nbsp;&nbsp; arm<br />
&nbsp;&nbsp;&nbsp; ├─工作日志<br />
&nbsp;&nbsp;&nbsp; │&nbsp; ├─总部人员<br />
&nbsp;&nbsp;&nbsp; │&nbsp; ├─北京办<br />
&nbsp;&nbsp;&nbsp; │&nbsp; └─上海办<br />
&nbsp;&nbsp;&nbsp; ├─公司公共文件参考目录<br />
&nbsp;&nbsp;&nbsp; └─临时文件存放处<br />
<br />
2. 修改代码库的 authz.conf 文件，将相应目录逐一改名<br />
<br />
3. UTF-8 格式的 authz.conf 文件，以及 BOM<br />
<br />
&nbsp;&nbsp; 将配置文件转换成 UTF-8 格式之后，Subversion 就能够正确识别中文字符了。但是这里需要注意一点，即必须保证 UTF-8 文件不包含 BOM 。BOM 是 Byte order Mark 的缩写，指 UNICODE 文件头部用于指明高低字节排列顺序的几个字符，通常是 ``FF FE`` ，而将之用 UTF-8 编码之后，就是 ``EF BB BF`` 。由于 UTF-8 文件本身不存在字节序问题，所以对 UTF-16 等编码方式有重大意义的 BOM，对于 UTF-8 来说，只有一个作用&mdash;&mdash;表明这个文件是 UTF-8 格式。由于 BOM 会给文本处理带来很多难题，所以现在很多软件都要求使用不带 BOM 的 UTF-8 文件，特别是一些处理文本的软件，如 PHP、 UNIX 脚本文件等，svn 也是如此。<br />
<br />
&nbsp; 目前常用的一些文本编辑工具中，MS Windows 自带的&ldquo;记事本&rdquo;里面，&ldquo;另存为&rdquo;菜单保存出来的 UTF-8 格式文件，会自动带上 BOM 。新版本 UltraEdit 提供了选项，允许用户选择是否需要 BOM，而老版本的不会添加 BOM。请各位查看一下自己常用的编辑器的说明文件，看看它是否支持这个功能。<br />
<br />
&nbsp; 对于已经存在 BOM 的 UTF-8 文件，比如说就是微软&ldquo;记事本&rdquo;弄出来的，我们可以利用 UltraEdit 来将 BOM 去掉。方法是，首先利用&ldquo;UTF-8 TO ASCII&rdquo;菜单将文件转换成本地编码，通常是GB2312码，然后再使用&ldquo;ASCII TO UTF-8(UNICODE Editing)&rdquo;来转换到 UTF-8 即可。当然，这么操作之前，你肯定得先保证，你的 UltraEdit 保存出来的 UTF-8 文件的确是不带 BOM 的。<br />
<br />
&nbsp; Subversion 为什么讨厌 BOM 呢？我不知道，毕竟我也只是一个普通用户，不是开发人员。如果你感兴趣，并且英文够好的话，不妨参考一下这个讨论： http://subversion.tigris.org/ser ... ers&amp;msgNo=51334</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xiayuesong.com/article.asp?id=136" /> 
	  <id>http://www.xiayuesong.com/default.asp?id=136</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[SVN-WINDOWS 服务器架设和管理]]></title>
	  <author>
		 <name>xiayuesong</name>
		 <uri>http://www.xiayuesong.com/</uri>
		 <email>xia05070115@126.com</email>
	  </author>
	  <category term="" scheme="http://www.xiayuesong.com/default.asp?cateID=10" label="Server" /> 
	  <updated>2009-05-25T13:25:15+08:00</updated>
	  <published>2009-05-25T13:25:15+08:00</published>
		  <summary type="html"><![CDATA[<p>1. &nbsp;&nbsp; 环境和软件准备</p>
<div>&nbsp;</div>
<div>操作系统： windowsXP sp2</div>
<div>Window-Subvsersion ： <a href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91">http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91</a></div>
<div>Windows 常用客户端 TortoiseSVN ： <a href="http://tortoisesvn.net/downloads">http://tortoisesvn.net/downloads</a></div>
<div>&nbsp;</div>
<div>请下载 subversion 服务器软件和客户端，并默认安装（可以重新启动操作系统，以更新图标显示）。</div>
<div>2. &nbsp;&nbsp; 配置管理</div>
<div>2.1. 创建仓库 (svnadmin)</div>
<div>在硬盘上创建个空目录，作为 SVN 的仓库目录。如： E:\subversion\repository 。下面使用两种方式创建仓库的初时文件结构和存储方式。命令方式和 TortoiseSVN 客户端方式，后面所有文档都采用两种方式说明，其功能完全相同。请根据实际情况选择使用。</div>
<div>&nbsp;</div>
<div>命令方式（ DOS 下）：</div>
<div># 默认方式，采用 FSFS 方式存储数据，这是推荐方式，管理和迁移相对 bdb 方式简单</div>
<div>svnadmin create E:\subversion\repository</div>
<div>或</div>
<div>svnadmin create &ndash;fs-type bdb E:\subversion\repository</div>
<div>&nbsp;</div>
<div>TortoiseSVN 客户端</div>
<div>&nbsp;</div>
<div>注意在最新版本的 SVN1.4 ，采用本方式有兼容性问题，该客户端现在好想只支持 1.3 版本的 SVN 创建仓库</div>
<div>&nbsp;</div>
<div>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用 window exporer 或我的电脑，定位到 E:\subversion\repository ，并确保本目录为空。</div>
<div>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在本目录下，右键菜单中选择&ldquo; TortoiseSVN &rdquo;－ &gt; &ldquo; Create repository here&hellip; &rdquo;</div>
<div>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在弹出的窗口中选择数据存在文件系统方式，使用默认选取 (FSFS) ，点击确定。</div>
<div>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 检查本目录下是否有生产的系统文件和文件夹，如果有，成功！</div>
<div>2.2. 配置服务</div>
<div>进入仓库目录下的 conf 文件夹。也就是 E:\subversion\repository\conf</div>
<div>里面有 3 个默认的配置文件： authz ， passwd ， svnserve.conf</div>
<div>svnserve.conf 控制 svnserve 的启动配置选项，可以配置认证和授权方式，典型的配置是设置由 authz 控制授权， passwd 控制认证的方式来控制访问权限。也可以使用匿名方式，但不推荐。</div>
<div>&nbsp;</div>
<div>使用 authz 和 passwd 的典型配置：</div>
<div>&nbsp;</div>
<div>请特别注意：以下三个配置文件的配置，每行有效配置前不能有空格，不然配置会失败。</div>
<div>&nbsp;</div>
<div>服务配置文件 svnserve.conf</div>
<div>&hellip;&hellip;</div>
<div>### 匿名方式不允许访问</div>
<div>anon-access = none</div>
<div>&hellip;&hellip;</div>
<div>### Uncomment the line below to use the default password file.</div>
<div>### 表示访问仓库的认证有文件 passwd 提供的账户确定</div>
<div>password-db = passwd</div>
<div>&hellip;&hellip;</div>
<div>### Uncomment the line below to use the default authorization file.</div>
<div>### 表示认证后的账户访问权限由文件 authz 定义</div>
<div>authz-db = authz</div>
<div>### This option specifies the authentication realm of the repository.</div>
<div>&hellip;&hellip;</div>
<div>&nbsp;</div>
<div>认证配置文件 passwd</div>
<div>&nbsp;</div>
<div>passwd 文件实际提供访问本仓库的账户管理，文件格式就是 ini 方式的格式</div>
<div>&nbsp;</div>
<div>[users]</div>
<div>harry = harryssecret</div>
<div>sally = sallyssecret</div>
<div>user=usersecret</div>
<div>&nbsp;</div>
<div>这表示本仓库配置了二个用户及：其中一个用户 harry, 他的访问密码是 harryssecret 。访问密码可以使用明文，也可以使用 htpasswd.exe （ apache 服务器提供的工具方法，安装 apache 服务器后，在其 bin 目录中有该程序文件）进行加密处理。</div>
<div>&nbsp;</div>
<div>授权配置文件 authz</div>
<div>该文件负责认证后的用户的权限控制，配置稍微复杂，但其实也就是个 ini 配置文件而已。</div>
<div>典型配置：</div>
<div># groups 段提供配置组的功能 , 但组成员必须是 passwd 文件中定义的用户才有效。可以对组</div>
<div># 进行权限控制，所有组成员具有组对应的访问权限。</div>
<div>[groups]</div>
<div># 表示定义了一个管理组叫 admin_group, 包括 harry 和 sally ， admin_group 前千万不能有空格</div>
<div>admin_group= harry, sally</div>
<div>&nbsp;</div>
<div># 下面就是定义具体仓库下目录的访问权限</div>
<div>&nbsp;</div>
<div># 一般对管理员来说都具有整个仓库的读写权限，一般人员对整个敞开具有读取权限，下面</div>
<div># 就是这样的配置 ,[/] 表示整个仓库的根，组的引用使用 @ ，对应的权限可以是 r,w,rw 或空</div>
<div>[/]</div>
<div>@admin_group = rw</div>
<div>* = r</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>以上的配置完成后，我吗就可以启动服务器了，下面说明服务器的启动。</div>
<div>注意，以上 authz 和 passwd 文件在管理中因为具体项目的加入和人员的变动会经常的修改，这也是 SVN 管理主要的工作</div>
<div>2.3. 启动服务 (svnserve)</div>
<div>&nbsp;</div>
<div>Svn 服务器一般有三种方式， svnserve ， apache 和 SSH 。其中常用的有 svnserve 和 apache 方式。本文只以 svnserve 方式讲解。总的来说 svnserve 是最高效的方式，一般应用于内部开发网中使用。 Apache 方式因为可以很好的部署在 internet 上，所以公网使用最方便，但配置稍微相对复杂点点，呵呵～～。三种方式具体的优缺点，请参考本文后面的参考文档。</div>
<div>&nbsp;</div>
<div>命令方式（ DOS 下）：</div>
<div>&nbsp;</div>
<div>svnserve &ndash;d &ndash;r E:\subversion\repository</div>
<div>-d 参数是以独立服务的方式启动</div>
<div>-r 是制订要加载的仓库的物理路径</div>
<div>&nbsp;</div>
<div>Windows 系统服务</div>
<div>在 subversion1.4 后的版本，提供了安装为服务的支持</div>
<div>可以参考本文安装： .</div>
<div>&nbsp;</div>
<div>SC create svn1.4 binPath= &quot;\&quot;C:\Program Files\Subversion\bin\svnserve.exe\&quot; --service --root \&quot;E:\subversion\repository\&quot;&quot; depend= Tcpip start= auto</div>
<div>&nbsp;</div>
<div>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 红色部分： SVN 的安装目录</div>
<div>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 蓝色部分：仓库根目录</div>
<div>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 每个参数的格式是：参数名称 = 值。参数名称和 = 间没有空格， = 后必须有空格， SC 的变态特性，完全的 BUG.. 注意就可以了</div>
<div>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本命令方式只能用于 svn1.4 以上版本</div>
<div>5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 删除服务： sc delete svn1.4</div>
<div>2.4. 添加项目 (import)</div>
<div>上面的安装配置工作完成后，启动服务，现在进入使用的主题，首先一步是把需要进行版本管控的项目加入到仓库中。在作这个工作前，需要先接受下， SVN 推荐的项目路径结构。一般推荐是使用一个 trunk 保存项目主干最新版本， breaches 保存以后的多个分支， tags 一般保存发布或阶段性发布的标签版本。如下</div>
<div>&nbsp;</div>
<div>Project1/trunk</div>
<div>Project1/breaches</div>
<div>Project1/tags</div>
<div>&nbsp;</div>
<div>下面我吗使用该目录结构，加入一个测试的项目 project1 来演示添加项目的过程。</div>
<div>&nbsp;</div>
<div>在任意目录建立文件夹 test ，然后在 test 下建立上面推荐的项目目录结构。如下</div>
<div>&nbsp;</div>
<div>test/project1/trunk</div>
<div>test/project1/breaches</div>
<div>test/project1/tags</div>
<div>&nbsp;</div>
<div>命令方式：</div>
<div>DOS 下定位到 test 的上级目录</div>
<div>svn import test svn://localhost -m &quot;init project1&quot; --username harr y --password=harryssecret</div>
<div>&nbsp;</div>
<div>新增 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test\project1</div>
<div>新增 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test\project1\trunk</div>
<div>新增 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test\project1\readme.txt</div>
<div>新增 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test\project1\breaches</div>
<div>新增 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test\project1\tags</div>
<div>提交后的修订版为 1 。</div>
<div>&nbsp;</div>
<div>TortoiseSVN 客户端</div>
<div>&nbsp;</div>
<div>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 右键点击 test 目录，选择&ldquo; TortoiseSVN &rdquo;－ &gt; &ldquo; Import &rdquo;</div>
<div>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在弹出的操作界面中 URL repository 中输入服务器地址 svn://localhost</div>
<div>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在弹出的操作界面中 Import message 下面的文本域输入 init project1</div>
<div>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 点击 OK</div>
<div>5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果第一次使用，会弹出输入账户的界面，输入对应的用户账户，选择保存，下次使用就不用在输入账户认证信息了。</div>
<div>&nbsp;</div>
<div>查看是否添加成功：</div>
<div>&nbsp;</div>
<div>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用 window exporer 或我的电脑，定位到 E:\subversion\repository ，并确保本目录为空。</div>
<div>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在本目录下，右键菜单中选择&ldquo; TortoiseSVN &rdquo;－ &gt; &ldquo; Repo-browser &rdquo;</div>
<div>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在弹出的输入框中输入 SVN 服务器地址 svn://localhost</div>
<div>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在 Repository Browser 窗口中，你可以点击树形结构的仓库目录，查看是否存在你刚才添加的 project1</div>
<div>5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果你的用户有足够的权限，你可以在本界面的树目录上使用右键管理你的仓库和项目。</div>
<div>&nbsp;</div>
<div>2.5. 工作副本 (checkout)</div>
<div>工程加入到仓库后，下面就可以进入实际的研发使用了，首先是要建立个本地的工作副本，使用 checkout 。</div>
<div>&nbsp;</div>
<div>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在任意开发机上建立工作目录。如： D:\workspace\project1</div>
<div>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进入具体项目的工作目录，右键菜单中选择&ldquo; SVN Checkout &rdquo;</div>
<div>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在 checkout 窗口中：</div>
<div>URL of Repository 是你具体的项目的主干仓库访问地址</div>
<div>如： svn://localhost/project1/trunk</div>
<div>Checkout directory 是你本地副本的地址</div>
<div>如： D:\workspace\project1</div>
<div>其它的使用默认选项，如需要了解具体含义，请查看参考文档</div>
<div>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 点击 OK</div>
<div>&nbsp;</div>
<div>2.6. 常用开发操作</div>
<div>以下主要都是在工作副本的开发中的常用操作。</div>
<div>2.6.1. 更新和同步</div>
<div>其它开发人员或在其它工作副本上提交到仓库的最新版本文件，需要更新到你自己的工作副本的操作。使用更新使你的工作副本于服务器仓库代码同步。如果你更新的文件中本地副本和服务器仓库中的文件都是在同一版本上，本地副本作了修改文件操作后， SVN 没有办法更新，因为它不知道是否该放弃本地的修改，它默认会操作合并的方式，但往往很多时候有些文件是不能简单的自动合并的，所有最好的办法是以仓库的版本为准进行更新，这就是同步操作。</div>
<div>&nbsp;</div>
<div>下面主要说明使用客户端工具 TortoiseSVN 的操作方式，其它客户端工具和命令方式类似。</div>
<div>&nbsp;</div>
<div>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在需要更新或同步文件上或文件夹内右键点击，选择 SVN update 命令</div>
<div>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果需要同步某个文件或文件夹，需要先删除本地版本，然后在使用 SVN update</div>
<div>&nbsp;</div>
<div>2.6.2. 添加和提交</div>
<div>。。。</div>
<div>3. &nbsp;&nbsp;&nbsp;&nbsp; 参考文档</div>
<div>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Svn 安装后的官方文档</div>
<div>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SVN 中文官方网站： <a href="http://www.subversion.org.cn/">http://www.subversion.org.cn</a></div>
<div>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 中文文档： <a href="http://www.subversion.org.cn/svnbook/">http://www.subversion.org.cn/svnbook/</a></div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xiayuesong.com/article.asp?id=135" /> 
	  <id>http://www.xiayuesong.com/default.asp?id=135</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[在windows下搭建SVN服务器]]></title>
	  <author>
		 <name>xiayuesong</name>
		 <uri>http://www.xiayuesong.com/</uri>
		 <email>xia05070115@126.com</email>
	  </author>
	  <category term="" scheme="http://www.xiayuesong.com/default.asp?cateID=10" label="Server" /> 
	  <updated>2009-05-25T12:58:03+08:00</updated>
	  <published>2009-05-25T12:58:03+08:00</published>
		  <summary type="html"><![CDATA[<p>有两种方案：<br />
<br />
<font size="4"><span style="font-weight: bold">* VisualSVN Server，安装更简单、更直观：</span><a href="http://www.xiayuesong.com/javascript:void(0);/*1239780116932*/"><font size="2">http://www.visualsvn.com/server/download/</font></a><br style="font-weight: bold" />
<br style="font-weight: bold" />
<span style="font-weight: bold">* 传统的Subversion 服务器程序：</span><br style="font-weight: bold" />
</font>一、准备工作<br />
<br />
1、获取 Subversion 服务器程序<br />
<br />
到官方网站（http://subversion.tigris.org/）下载最新的服务器安装程序。目前最新的是1.5版本，具体下载地址在：<a href="http://www.xiayuesong.com/javascript:void(0);/*1239780125859*/">http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100&amp;expandFolder=8100&amp;folderID=91</a><br />
<br />
<br />
2、获取 TortoiseSVN 客户端程序<br />
<br />
从官方网站 <a href="http://www.xiayuesong.com/javascript:void(0);/*1239780139778*/">http://tortoisesvn.net/downloads</a> 获取最新的 TortoiseSVN 。TortoiseSVN 是一个客户端程序，用来与 subvers 服务器端通讯。Subversion 自带一个客户端程序 svn.exe ,但 TortoiseSVN 更好操作，提高效率。<br />
<br />
<br />
二、安装服务器端和客户端<br />
<br />
安装 Subversion（以下简称SVN）的服务器端和客户端。下载下来的服务器端是个 zip 压缩包，直接解压缩即可，比如我解压到 E:\subversion 。客户端安装文件是个 exe 可执行文件，直接运行按提示安装即可，客户端安装完成后提示重启。<br />
<br />
<br />
三、建立版本库（Repository）<br />
<br />
运行Subversion服务器需要首先要建立一个版本库（Repository）。版本库可以看作是服务器上集中存放和管理数据的地方。<br />
<br />
开始建立版本库。首先建立 e:\svn 空文件夹作为所有版本库的根目录。然后，进入命令行并切换到subversion的bin目录。输入如下命令：<br />
<br />
svnadmin create E:\svn\repos1<br />
<br />
此命令在 E:\svn 下建立一个版本库 repos1 。repos1 下面会自动生成一些文件夹和文件。<br />
<br />
我们也可以使用 TortoiseSVN 图形化的完成这一步：<br />
<br />
先建立空目录 E:\svn\repos1 ，注意一定是要空的。然后在 repos1 文件夹上&ldquo;右键-&gt;TortoiseSVN-&gt;Create Repository here...&rdquo;，然后可以选择版本库模式，这里使用默认的FSFS即可，然后就创建了一系列文件夹和文件，同命令行建立的一样。<br />
<br />
<br />
<br />
四、运行独立服务器<br />
<br />
此时 subversion 服务还没有开始，只是通过它的命令建立了版本库。继续在刚才的命令窗口输入：<br />
<br />
svnserve.exe --daemon<br />
<br />
svnserve 将会在端口 3690 等待请求，--daemon（两个短横线）选项告诉 svnserve 以守护进程方式运行，这样在手动终止之前不会退出。注意不要关闭命令行窗口，关闭窗口会把 svnserve 停止。<br />
<br />
为了验证svnserve正常工作，使用TortoiseSVN -&gt; Repo-browser 来查看版本库。在弹出的 URL 对话框中输入：<br />
<br />
svn://localhost/svn/repos1<br />
<br />
点 OK 按钮后就可以看见 repos1 版本库的目录树结构了，只不过这时 repos1 是个空库。<br />
<br />
你也可以使用--root选项设置根位置来限制服务器的访问目录，从而增加安全性和节约输入svnserve URL的时间：<br />
<br />
svnserve.exe --daemon --root drive:\path\to\repository<br />
<br />
以前面的测试作为例，svnserve 将会运行为：<br />
<br />
svnserve.exe --daemon --root e:\svn<br />
<br />
然后TortoiseSVN中的版本库浏览器URL缩减为：<br />
<br />
svn://localhost/repos1<br />
<br />
<br />
五、配置用户和权限<br />
<br />
用文本编辑器打开E:\svn\repos1\conf目录，修改svnserve.conf：<br />
<br />
将：<br />
<br />
# password-db = passwd<br />
<br />
改为：<br />
<br />
password-db = passwd<br />
<br />
即去掉前面的 # 注释符，注意前面不能有空格。<br />
<br />
然后修改同目录的passwd文件，增加一个帐号：<br />
<br />
将：<br />
<br />
[users]<br />
# harry = harryssecret<br />
# sally = sallyssecret<br />
<br />
增加帐号：<br />
<br />
[users]<br />
#harry = harryssecret<br />
#sally = sallyssecret<br />
test = test<br />
<br />
<br />
六、初始化导入<br />
<br />
下面就是将我们的数据（项目）导入到这个版本库，以后就由版本库管理我们的数据。我们的任何改动都回被版本库记录下来，甚至我们自己丢失、改错数据时版本库也能帮我们找回数据。<br />
<br />
比如，我在 d:\wwwroot 下有个 guestbook 文件夹，里面存放的是我编写的留言簿程序。在此文件夹上&ldquo;右键 -&gt; TortoiseSVN -&gt; Import...&rdquo; ，在弹出对话框的&ldquo;URL of repository&rdquo;输入&ldquo;svn://localhost/repos1/guestbook&rdquo;。在&ldquo;Import message&rdquo;输入&ldquo;导入整个留言簿&rdquo;作为注释。<br />
点 OK 后要求输入帐号。我们在用户名和密码处都输入 test 。完成后 guestbook 中的内容全部导入到了 svn://localhost/svn/repos1/guestbook 。<br />
<br />
我们看到在 e:\svn\repos1 没有任何变化，连个 guestbook 文件夹都没有建立，唯一的变化就是e:\svn\repos1容量变大了。实际上我们源guestbook中的内容已经导入 repos1 版本库了，源 guestbook 文件夹可以删除了。<br />
<br />
需要注意的是，这一步操作可以完全在另一台安装了 TortoiseSVN 的客户机上进行。例如运行svnserve的主机的IP是133.96.121.22，则URL部分输入的内容就是&ldquo;svn://133.96.121.22&rdquo; 。<br />
<br />
<br />
七、基本操作流程<br />
<br />
1、取出（check out）<br />
<br />
取出版本库到一个工作拷贝：<br />
<br />
来到任意空目录下，比如在f分区建立一个空文件夹 f:\work 。&ldquo;右键 -&gt; SVN Checkout&rdquo;。在&ldquo;URL of repository&rdquo;中输入&ldquo;svn://localhost/svn/repos1/guestbook&rdquo;，这样我们就得到了一份 guestbook 中内容的工作拷贝。<br />
<br />
2、存入（check in）/提交（commit）<br />
<br />
在工作拷贝中作出修改并提交：<br />
<br />
在 guestbook 工作拷贝中随便打开一个文件，作出修改，然后&ldquo;右键 -&gt; SVN Commit... &rdquo;。这样我们就把修改提交到了版本库，版本库根据情况存储我们提交的数据。<br />
<br />
在修改过的文件上&ldquo;右键 -&gt; TortoiseSVN -&gt; Show Log&rdquo; ，可以看到对这个文件所有的提交。在不同的 revision 条目上&ldquo;右键 -&gt; Compare with working copy&rdquo;，我们可以比较工作拷贝的文件和所选 revision 版本的区别。</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xiayuesong.com/article.asp?id=134" /> 
	  <id>http://www.xiayuesong.com/default.asp?id=134</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[ASP组件自动生成图片水印 ]]></title>
	  <author>
		 <name>xiayuesong</name>
		 <uri>http://www.xiayuesong.com/</uri>
		 <email>xia05070115@126.com</email>
	  </author>
	  <category term="" scheme="http://www.xiayuesong.com/default.asp?cateID=5" label="ASP" /> 
	  <updated>2009-05-22T12:01:11+08:00</updated>
	  <published>2009-05-22T12:01:11+08:00</published>
		  <summary type="html"><![CDATA[<p>一般做法都是用aspjpeg的组件，这里有份用法说明，看一下吧。</p>
<p>aspjpeg是一款非常强大的图片处理组件，纯英文版本。不过早已经有免费版和破解版，但是对其进行详细与深入介绍的文章却是不多，即使有也只牵涉到图片缩略和图片水印。可能是因为纯英文的缘故。</p>
<p>这里我就是针对这些问题谈谈aspjpeg的高级用法。这里的技术主要包括： <br />
图片缩略 <br />
图片水印 <br />
安全码技术 <br />
图片切割 <br />
图片合并 <br />
数据库支持 <br />
更多不常用的方法介绍 <br />
以及相关的一些实用技术</p>
<p>aspjpeg唯一点不足的就是输出方式比较单一。在这里，我们主要谈将图片处理保存后再调用的这种输出方法。另外，本人比较懒，所以有些代码仍然引用于原文档，不懂的地方偶会加以解释！</p>
<p>学过vb或者.net的同志肯定一看就明白了。刷子来着。呵呵。</p>
<p>一、图片缩略</p>
<p>&lt;% <br />
Set Jpeg = Server.CreateObject(&quot;Persits.Jpeg&quot;) 调用组件 <br />
Path = Server.MapPath(&quot;images&quot;) &amp; &quot;\clock.jpg&quot; 待处理图片路径 <br />
Jpeg.Open Path 打开图片 <br />
高与宽为原图片的1/2 <br />
Jpeg.Width = Jpeg.OriginalWidth / 2 <br />
Jpeg.Height = Jpeg.OriginalHeight / 2 <br />
保存图片 <br />
Jpeg.Save Server.MapPath(&quot;images&quot;) &amp; &quot;\clock_small.jpg&quot; <br />
%&gt; <br />
&lt;IMG SRC=&quot;images/clock_small.jpg&quot;&gt; 查看处理的图片</p>
<p>&nbsp;</p>
<p>二、图片水印</p>
<p>&lt;% <br />
Set Jpeg = Server.CreateObject(&quot;Persits.Jpeg&quot;) <br />
Jpeg.Open Server.MapPath(&quot;images/dodge_viper.jpg&quot;) <br />
开始写文字 <br />
Jpeg.Canvas.Font.Color = &amp;000000' red 颜色 <br />
Jpeg.Canvas.Font.Family = &quot;Courier New&quot; 字体 <br />
Jpeg.Canvas.Font.Bold = True 是否加粗 <br />
Jpeg.Canvas.Print 10, 10, &quot;Copyright ?nbsp;XYZ, Inc.&quot; <br />
打印坐标x 打印坐标y 需要打印的字符 <br />
以下是对图片进行边框处理 <br />
Jpeg.Canvas.Pen.Color = &amp;H000000' black 颜色 <br />
Jpeg.Canvas.Pen.Width = 2 画笔宽度 <br />
Jpeg.Canvas.Brush.Solid = False 是否加粗处理 <br />
Jpeg.Canvas.Bar 1, 1, Jpeg.Width, Jpeg.Height <br />
起始X坐标 起始Y坐标 输入长度 输入高度 <br />
Jpeg.Save Server.MapPath(&quot;images/dodge_viper_framed.jpg&quot;) 保存 <br />
%&gt;</p>
<p>&nbsp;</p>
<p>三、安全码</p>
<p>安全玛的道理和加水印差不多，很多朋友问我要具体的代码技术，在这里我就写出来和大家分享，一般人我还不告诉他。呵呵。 <br />
&lt;% <br />
生成安全码的函数 <a href="http://www.knowsky.com/">www.knowsky.com</a><br />
function make_randomize(max_len,w_n) max_len 生成长度，w_n：0 可能包含字母，1：只为数字 <br />
randomize <br />
for intcounter=1 to max_len <br />
whatnext=int((1-0+1)*rnd+w_n) <br />
if whatnext=0 then <br />
upper=122 <br />
lower=97 <br />
else <br />
upper=57 <br />
lower=48 <br />
end if <br />
strnewpass=strnewpass &amp; chr(int((upper-lower+1)*rnd)+lower) <br />
next <br />
make_randomize=strnewpass <br />
end function <br />
%&gt;</p>
<p>生成安全码的图片。当然你要预先准备一张背景图哦</p>
<p>&lt;%random_num=make_randomize(4,1) 生成4位数字的安全码 <br />
session(&quot;random_num&quot;)=random_num 为什么调用session，没有session的安全码是完全没有意义的。呵呵</p>
<p>Set Jpeg = Server.CreateObject(&quot;Persits.Jpeg&quot;) 调用组件 <br />
Jpeg.Open Server.MapPath(&quot;infos/random_pic/random_index.gif&quot;) 打开准备的图片 <br />
Jpeg.Canvas.Font.Color = &amp;H006699 <br />
Jpeg.Canvas.Font.Family = &quot;Arial Black&quot; <br />
Jpeg.Canvas.Font.Bold = false <br />
Jpeg.Canvas.PrintText 0, -2, random_num <br />
jpeg.save Server.MapPath(&quot;infos/random_pic/random_index.bmp&quot;) 保存 <br />
%&gt; &lt;img src=&quot;infos/random_pic/random_index.bmp&quot; border=&quot;0&quot; align=&quot;absmiddle&quot;&gt; <br />
自己做做看。呵呵。</p>
<p>&nbsp;</p>
<p>四、图片切割</p>
<p>一直以来，对aspjpeg不了解的人以为是无法用它来进行切割的。 <br />
其实有这样的一个方法的 <br />
crop x1,y1,x2,y2 <br />
切割长方型左上角x坐标，y坐标 右下角x坐标 y坐标 <br />
下面我就做一个演示哈 <br />
Set Jpeg = Server.CreateObject(&quot;Persits.Jpeg&quot;) <br />
jpeg.open server.MapPath(&quot;/pic/1.gif&quot;) <br />
jpeg.width=70 <br />
Jpeg.Height = Jpeg.OriginalHeight*70 / jpeg.Originawidth <br />
jpeg.crop 0,0,70,52 开始切割其实是把超过52象素的下部分去掉 <br />
jpeg.save server.MapPath(&quot;/temp_pic/small_1.gif&quot;) 保存 <br />
怎么样，很简单吧</p>
<p>&nbsp;</p>
<p>五、图片合并</p>
<p>我们这里是要把logo图片加到dodge_viper.jpg图片上去 <br />
其实，图片合并的方法也可以用来动态打水印哦 <br />
Set Photo = Server.CreateObject(&quot;Persits.Jpeg&quot;) <br />
PhotoPath = Server.MapPath(&quot;images&quot;) &amp; &quot;\dodge_viper.jpg&quot; <br />
Photo.Open PhotoPath <br />
Set Logo = Server.CreateObject(&quot;Persits.Jpeg&quot;) <br />
LogoPath = Server.MapPath(&quot;images&quot;) &amp; &quot;\clock.jpg&quot; <br />
Logo.Open LogoPath</p>
<p>Logo.Width = 70 <br />
Logo.Height = Logo.Width * Logo.OriginalHeight / Logo.OriginalWidth</p>
<p>Photo.DrawImage 0, 0, Logo</p>
<p>Photo.SendBinary 这里用了sendBinary的输出方法。当然，你也可以先保存更改后的dodge_viper.jpg，再输入也可以。我个人不大喜欢用sendBinary方法，在网速慢的时候容易出错。在速度方面也不怎样。呵呵。</p>
<p>&nbsp;</p>
<p>六、数据库支持</p>
<p>这里不多说了。其实就是Binary方法，大家知道图片存进数据库只能存为二进制的文件的。所以代码就懒的写了。</p>
<p>&nbsp;</p>
<p>七、更多方法介绍</p>
<p>Canvas.Line(Left, Top, Right, Bottom) <br />
画一条直线 <br />
Canvas.Ellipse(Left, Top, Right, Bottom) <br />
画出一个椭圆 <br />
Canvas.Circle(X, Y, Radius) <br />
画出一个圆 <br />
Canvas.Bar(Left, Top, Right, Bottom) <br />
画出一个长方形，上面有代码介绍了 <br />
Canvas.Font.ShadowColor <br />
文字阴影颜色 <br />
Canvas.Font.ShadowXOffset As Long <br />
阴影X坐标设定 <br />
Canvas.Font.ShadowYOffset As Long <br />
Y坐标设定 <br />
Canvas.Font.BkMode As String <br />
文字背景</p>
<p><br />
*******************************************************************</p>
<p>'//------ AspJpeg组件的预览和水印生成------开始------</p>
<p><br />
'创建预览图片:call CreateView(原始文件的路径,预览文件名及路径)<br />
Sub CreateView(imagename,tempFilename)<br />
'定义变量。<br />
Dim PreviewImageFolderName<br />
Dim ogvbox,objFont<br />
Dim Logobox,LogoPath<br />
LogoPath = Server.MapPath(&quot;images&quot;) &amp; &quot;\shuiyin.gif&quot;&nbsp; '//加入图片所在路径及文件名(我的是论坛\images\shuiyin.gif)。</p>
<p>Select Case upload_ViewType<br />
Case 0<br />
'---------------------CreatePreviewImage---------------<br />
set ogvbox = Server.CreateObject(&quot;CreatePreviewImage.cGvbox&quot;)<br />
ogvbox.SetSavePreviewImagePath=Server.MapPath(tempFilename)&nbsp;&nbsp; '预览图存放路径。<br />
ogvbox.SetPreviewImageSize =SetPreviewImageSize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '预览图宽度。<br />
ogvbox.SetImageFile = trim(Server.MapPath(imagename))&nbsp;&nbsp;&nbsp; 'imagename原始文件的物理路径。<br />
'创建预览图的文件。<br />
If ogvbox.DoImageProcess=false Then<br />
Response.write &quot;生成预览图错误:&quot;&amp; ogvbox.GetErrString<br />
End If<br />
Case 1<br />
'---------------------AspJpegV1.2---------------<br />
Set Logobox = Server.CreateObject(&quot;Persits.Jpeg&quot;)<br />
'//建议不要图片和文字水印同时使用，本代码为使用图片水印。<br />
Logobox.Open LogoPath&nbsp; '//读取添加的图片。</p>
<p>'//重新设置图片的大小。<br />
Logobox.Width = 186&nbsp; '//用做水印的图片的宽度值（像素）。<br />
Logobox.Height = 52&nbsp; '//用做水印的图片的高度值（像素）。<br />
'//添加水印。<br />
Set ogvbox = Server.CreateObject(&quot;Persits.Jpeg&quot;)<br />
'//读取要处理的原文件。<br />
ogvbox.Open Trim(Server.MapPath(imagename))<br />
If ogvbox.OriginalWidth&lt;Cint(ImageWidth) or ogvbox.Originalheight&lt;Cint(ImageHeight) Then<br />
&nbsp; F_Viewname=&quot;&quot;<br />
&nbsp; Set ogvbox = Nothing<br />
&nbsp; Exit Sub<br />
Else<br />
IF ImageMode&lt;&gt;&quot;&quot; and FileExt&lt;&gt;&quot;gif&quot; Then&nbsp; '//如果将这行改为IF ImageMode&lt;&gt;&quot;&quot; Then则可给上传的GIF图片也加上水印，但是那些动画的GIF在加了水印以后就只剩第一桢了，根据你的需求酌情处理吧。</p>
<p>'//关于修改字体及文字颜色的。<br />
'//ogvbox.Canvas.Font.Color = &amp;H0000FF&nbsp; '//水印文字的颜色，&amp;H后面输入色彩值。<br />
'//ogvbox.Canvas.Font.Size = 18&nbsp; '//水印文字的大小。<br />
'//ogvbox.Canvas.Font.Family = &quot;Arial&quot;&nbsp; '//水印文字的字体名称。<br />
'//ogvbox.Canvas.Font.ShadowColor = &amp;H000000&nbsp; '//水印文字的阴影色彩。<br />
'//ogvbox.Canvas.Font.ShadowXoffset = 1&nbsp; '//水印文字阴影向右偏移的像素值，输入负值则向左偏移。<br />
'//ogvbox.Canvas.Font.ShadowYoffset = 1&nbsp; '//水印文字阴影向下偏移的像素值，输入负值则向右偏移。<br />
'//ogvbox.Canvas.Font.Quality = 3&nbsp; '//水印文字的清晰度，从0～4，变换不是很大，建议用2或3。<br />
'//ogvbox.Canvas.Font.Bold = True&nbsp; '//水印文字是否为粗体，True=粗体 False=正常。</p>
<p>'ogvbox.Canvas.Print 10, 10, ImageMode&nbsp; '//水印文字的起始坐标（像素）。<br />
ogvbox.Canvas.Pen.Color&nbsp; = &amp;H000000&nbsp; '//增加水印后图片的边框色彩。<br />
ogvbox.Canvas.Pen.Width&nbsp; = 1&nbsp;&nbsp; '//增加水印后图片的边框宽度。<br />
ogvbox.Canvas.Brush.Solid = False&nbsp; '//边框内是否填充颜色，你可以试试看值为True时的效果^o^<br />
ogvbox.DrawImage ogvbox.width-186, ogvbox.height-52, Logobox, 0.5&nbsp; '//水印图片的起始坐标，我这里ogvbox.width-186, ogvbox.height-52,表示图片在右下角，因为我的图片宽是186，高是52，所以这样写，你可以根据自己的图片进行调整。0.5是透明度，我这里是半透明，1表示不透明，你也可以试试看0.7或者0.8的效果。<br />
ogvbox.Canvas.Bar 0, 0, ogvbox.Width, ogvbox.Height&nbsp; '//水印可用的范围。我这里表示左上角至右下角，即整张图片的任意为止都可加水印。<br />
ogvbox.Save Server.MapPath(imagename)&nbsp; '//根据以上参数生成增加水印后的图片文件。<br />
&nbsp;&nbsp; End If<br />
&nbsp;&nbsp; ogvbox.Width = ImageWidth<br />
&nbsp;&nbsp; ogvbox.height = ImageHeight<br />
&nbsp;&nbsp; 'ogvbox.height = ogvbox.Originalheight*ImageWidth\ogvbox.OriginalWidth<br />
&nbsp;&nbsp; ogvbox.Sharpen 1, 120<br />
&nbsp;&nbsp; ogvbox.Save Server.MapPath(tempFilename)&nbsp; '//生成增加水印后的图片的预览图片。<br />
&nbsp; End If<br />
&nbsp; Set Logobox=Nothing<br />
'//------ AspJpeg组件的预览和水印生成------结束------<br />
&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.xiayuesong.com/article.asp?id=133" /> 
	  <id>http://www.xiayuesong.com/default.asp?id=133</id>
  </entry>	
		
</feed>
