<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>无风的港湾 &#187; 工具</title>
	<atom:link href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7/feed" rel="self" type="application/rss+xml" />
	<link>http://www.5bay.cn</link>
	<description>让你我停泊~</description>
	<lastBuildDate>Fri, 16 Dec 2011 09:18:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Android在线开发工具 App Inventor</title>
		<link>http://www.5bay.cn/android%e7%ac%94%e8%ae%b0/androidzaixiankaifagongjuappinventor.html</link>
		<comments>http://www.5bay.cn/android%e7%ac%94%e8%ae%b0/androidzaixiankaifagongjuappinventor.html#comments</comments>
		<pubDate>Wed, 29 Jun 2011 06:20:36 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[Android笔记]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[div]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[上传]]></category>
		<category><![CDATA[属性]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[幸福]]></category>
		<category><![CDATA[成功]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[组件]]></category>
		<category><![CDATA[网站]]></category>
		<category><![CDATA[连接]]></category>
		<category><![CDATA[页面]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=578</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/android%e7%ac%94%e8%ae%b0/androidzaixiankaifagongjuappinventor.html"><img align="left" hspace="5" width="150" src="http://images.cnblogs.com/cnblogs_com/shenzhoulong/app%20inventor/20110525/projects.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>最近在博客园看到一篇报道关于一个人好像是别出心裁的用android程序求婚，最后成功了，在留言部分看到很多园友说：好浪漫，好幸福；文章中提到的一个在线开发程序，叫做app invertor，于是在网上稍微看了一下，下班回到家之后马上下载，起先是用迅雷下载的，结果下载进度一点也不动，于是乎，***用IE9 下载，下载了两次没有成功，原因可能是保存路径有问题，建议先保存到桌面，然后再安装，下载地址如下http://dl.google.com/dl/appinventor/installers/windows/appinventor_setup_installer_v_1_2.exe（建议***）；下载好之后安装就可以了，好像官方建议安装过程中的路径不要修改，以防在加载模拟器的时候找不到路径，当然你也可以自己定义路径，不过在使用模拟器的时候需要人工的输入模拟器的路径，以后就不会出现这种问题了，下面就可以进入按android的在线编辑页面了，请在浏览器的地址栏中输入：http://appinventor.googlelabs.com/ 就可以看到了，先放图··· 第一次进入是会出现下面的界面，请点击new，并填写相应的项目名称即可，我填写的是First 进入First项目，界面如下 &#160; 整个界面简洁，横向的可以分为四个部分，分别为palette（字典意思是调色板，就是工具），viewer（指示器），components（组件），properties（属性）； Palette：为我们所有将要用到的控件 Viewer：为android模拟器面板，可拖放控件至此 Components：Viewer中的空间都会在此显示其控件名称 Properties：当某个控件处于编辑状态时，显示其属性可编辑 下面建立我自己的第一个Demo 1.修改标题 2.拖放控件，修改属性 3.从本地上传文件 5.此时是图片正在上传图片，因为我们是在线编辑的，所以建议各位不要上传太大的图片 6.点击右上角的“Blocks Editor”按钮进入编辑界面，此时会显示正在下载，即从网站现在我们的程序，此时有可能会要求下载java6，点击下载即可，下载完成之后如果你的app inventor路径不是默认的，需要填写仿真器的路径 &#160; &#160; 7.连接本人的android2.2手机效果如下 &#160; 作者：神舟龙 出处：http://www.cnblogs.com/shenzhoulong/ &#160; 相关博文2010年05月23日 -- mysql优化及全文搜索 (0)2010年07月26日 -- PHP和Socket简介 (0)2010年07月26日 -- Ajax的工作原理 (1)2010年07月26日 -- AJAX的各种控件和类库 (0)2010年07月26日 -- 使用Ajax时的十个常犯的错误 (0)2010年07月26日 -- 基于JSON的高级AJAX开发技术 (0)2010年05月23日 -- Rsync详解 (0)2010年05月23日 -- 《高性能网站建设指南》读书笔记 (0)2010年07月28日 -- ASP防注入新方式，希望对大家是有用的 (0)2010年07月28日 -- [...]]]></description>
			<content:encoded><![CDATA[<div id="cnblogs_post_body">
<p>最近在博客园看到一篇报道关于一个人好像是别出心裁的用android程序求婚，最后成功了，在留言部分看到很多园友说：好浪漫，好幸福；文章中提到的一个在线开发程序，叫做app invertor，于是在网上稍微看了一下，下班回到家之后马上下载，起先是用迅雷下载的，结果下载进度一点也不动，于是乎，***用IE9 下载，下载了两次没有成功，原因可能是保存路径有问题，建议先保存到桌面，然后再安装，下载地址如下<a href="http://dl.google.com/dl/appinventor/installers/windows/appinventor_setup_installer_v_1_2.exe">http://dl.google.com/dl/appinventor/installers/windows/appinventor_setup_installer_v_1_2.exe</a>（建议***）；下载好之后安装就可以了，好像官方建议安装过程中的路径不要修改，以防在加载模拟器的时候找不到路径，当然你也可以自己定义路径，不过在使用模拟器的时候需要人工的输入模拟器的路径，以后就不会出现这种问题了，下面就可以进入按android的在线编辑页面了，请在浏览器的地址栏中输入：<a href="http://appinventor.googlelabs.com/">http://appinventor.googlelabs.com/</a> 就可以看到了，先放图···</p>
<p>第一次进入是会出现下面的界面，请点击new，并填写相应的项目名称即可，我填写的是First</p>
<p><img src="http://images.cnblogs.com/cnblogs_com/shenzhoulong/app%20inventor/20110525/projects.png" border="0" alt="" width="1000" height="528" /></p>
<p>进入First项目，界面如下<span id="more-578"></span></p>
<p><img src="http://images.cnblogs.com/cnblogs_com/shenzhoulong/app%20inventor/20110525/1.jpg" border="0" alt="" width="1000" height="538" /></p>
<p>&nbsp;</p>
<p>整个界面简洁，横向的可以分为四个部分，分别为palette（字典意思是调色板，就是工具），viewer（指示器），components（<a href="http://www.5bay.cn/tag/%E7%BB%84%E4%BB%B6" class="st_tag internal_tag" rel="tag" title="标签 组件 下的日志">组件</a>），properties（属性）；</p>
<p>Palette：为我们所有将要用到的控件</p>
<p>Viewer：为android模拟器面板，可拖放控件至此</p>
<p>Components：Viewer中的空间都会在此显示其控件名称</p>
<p>Properties：当某个控件处于编辑状态时，显示其属性可编辑</p>
<p>下面建立我自己的第一个Demo</p>
<p>1.修改标题</p>
<p><img src="http://images.cnblogs.com/cnblogs_com/shenzhoulong/app%20inventor/20110525/2.jpg" border="0" alt="" width="1000" height="543" /></p>
<p>2.拖放控件，修改属性</p>
<p><img src="http://images.cnblogs.com/cnblogs_com/shenzhoulong/app%20inventor/20110525/3.jpg" border="0" alt="" width="1000" height="544" /></p>
<p>3.从本地上传文件</p>
<p><img src="http://images.cnblogs.com/cnblogs_com/shenzhoulong/app%20inventor/20110525/4.jpg" border="0" alt="" width="1000" height="328" /></p>
<p>5.此时是图片正在上传图片，因为我们是在线编辑的，所以建议各位不要上传太大的图片</p>
<p><img src="http://images.cnblogs.com/cnblogs_com/shenzhoulong/app%20inventor/20110525/5.jpg" border="0" alt="" width="758" height="112" /></p>
<p>6.点击右上角的“Blocks Editor”按钮进入编辑界面，此时会显示正在下载，即从网站现在我们的程序，此时有可能会要求下载java6，点击下载即可，下载完成之后如果你的app inventor路径不是默认的，需要填写仿真器的路径</p>
<p><img src="http://images.cnblogs.com/cnblogs_com/shenzhoulong/app%20inventor/20110525/6.jpg" border="0" alt="" width="321" height="141" /></p>
<p><img src="http://images.cnblogs.com/cnblogs_com/shenzhoulong/app%20inventor/20110525/7.jpg" border="0" alt="" width="1000" height="489" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>7.连接本人的android2.2手机效果如下</p>
<p><img src="http://images.cnblogs.com/cnblogs_com/shenzhoulong/app%20inventor/20110525/8.png" border="0" alt="" width="236" height="447" /></p>
<p>&nbsp;</p>
</div>
<div id="MySignature">
<div>作者：<a href="http://www.cnblogs.com/shenzhoulong/" target="_blank">神舟龙</a></div>
<div>出处：<a href="http://www.cnblogs.com/shenzhoulong/" target="_blank">http://www.cnblogs.com/shenzhoulong/</a></div>
</div>
<p>&nbsp;</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (1)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库">AJAX的各种控件和类库</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/gaoxingnengwangzhanjianshezhinandushubiji.html" title="《高性能网站建设指南》读书笔记">《高性能网站建设指南》读书笔记</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/eeprn-asp-jpg.html" title="如何删除删不掉的”PRN.asp:.jpg”">如何删除删不掉的”PRN.asp:.jpg”</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/eeeeeeee-2.html" title="防止网卡被禁用的具体配置方法">防止网卡被禁用的具体配置方法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeaoe.html" title="AJAX应用程序开发七宗罪">AJAX应用程序开发七宗罪</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/innerhtmleenertexteeterhtmlqia.html" title="innerHTML、innerText和outerHTML的用法">innerHTML、innerText和outerHTML的用法</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/android" title="android" rel="tag">android</a>, <a href="http://www.5bay.cn/category/android%e7%ac%94%e8%ae%b0" title="Android笔记" rel="tag">Android笔记</a>, <a href="http://www.5bay.cn/tag/div" title="div" rel="tag">div</a>, <a href="http://www.5bay.cn/tag/google" title="google" rel="tag">google</a>, <a href="http://www.5bay.cn/tag/%E4%B8%8A%E4%BC%A0" title="上传" rel="tag">上传</a>, <a href="http://www.5bay.cn/tag/%E5%B1%9E%E6%80%A7" title="属性" rel="tag">属性</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E5%B9%B8%E7%A6%8F" title="幸福" rel="tag">幸福</a>, <a href="http://www.5bay.cn/tag/%E6%88%90%E5%8A%9F" title="成功" rel="tag">成功</a>, <a href="http://www.5bay.cn/tag/%E6%B5%8F%E8%A7%88%E5%99%A8" title="浏览器" rel="tag">浏览器</a>, <a href="http://www.5bay.cn/tag/%E7%BB%84%E4%BB%B6" title="组件" rel="tag">组件</a>, <a href="http://www.5bay.cn/tag/%E7%BD%91%E7%AB%99" title="网站" rel="tag">网站</a>, <a href="http://www.5bay.cn/tag/%E8%BF%9E%E6%8E%A5" title="连接" rel="tag">连接</a>, <a href="http://www.5bay.cn/tag/%E9%A1%B5%E9%9D%A2" title="页面" rel="tag">页面</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/android%e7%ac%94%e8%ae%b0/androidzaixiankaifagongjuappinventor.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>资深设计师Tony Ventrice解析手机游戏开发的四个层次</title>
		<link>http://www.5bay.cn/game-development/zishenshejishitonyventricejiexishoujiyouxikaifadesigecengci.html</link>
		<comments>http://www.5bay.cn/game-development/zishenshejishitonyventricejiexishoujiyouxikaifadesigecengci.html#comments</comments>
		<pubDate>Wed, 29 Jun 2011 03:48:08 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[游戏开发]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[对象]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[技巧]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[盈利]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[类]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[营销]]></category>
		<category><![CDATA[表]]></category>
		<category><![CDATA[解决]]></category>
		<category><![CDATA[设计]]></category>
		<category><![CDATA[鼠标]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=545</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/game-development/zishenshejishitonyventricejiexishoujiyouxikaifadesigecengci.html"><img align="left" hspace="5" width="150" src="http://pic001.cnblogs.com/images/2011/145819/2011052421021528.jpg" class="alignleft wp-post-image tfe" alt="" title="" /></a>营销人员可能明白强势品牌的重要性，但却对游戏机制一无所知；程序员可能深谙强大游戏机制的意义所在，但对游戏机制的传达方式一窍不通。这样的营销人员和程序员都无法各自打造出成功的游戏。因为一款成功的游戏离不开跨领域的协调性，然而，我们经常见到情况就如上所述，游戏制作团队的成员往往只熟悉游戏设计中面向己方的专业知识，对其他学科的知识所知甚少。 此时游戏设计师的职责显得尤为关键把不同专业的观点融合为全面的设计构想。如果设计师做不到，结果就是，团队里的成员各忙各的，把时间和精力浪费在毫不相干的工作上。 游戏设计包含了几个层次的工作，且各个层次彼此不同，就如游戏的市场营销和用户界面，把这些毫不相干的层次组合起来，这看似一项艰难的任务。完成这项任务需要明白游戏设计交叉性的理论框架、形象化游戏设计方案的下滴（上滴）效应。 手机平台的两个支点 手机游戏带给玩家的融入感可能不如掌机游戏或电脑游戏那么强烈，但如果要深入研究游戏设计结构，简易的手机游戏却是个理想的探索起点。手机游戏开发之所以独特基于两点：能简则简，以量取胜。 能简则简。你可能已经听说过这么句话：一旦所有可删除的对象都被删除了，一个游戏就趋于完美了。手机平台检验了这个论断。即使是在今天这个iPhone的黎明时代，手机游戏开发者仍然不得不应对手机游戏需局限于128K空间的难题，而这128K包括了美工、代码、游戏数据、声音和其他所有游戏要素。 这种容量限制几乎足以令任何一种游戏设置寸步难行，但游戏还是顽强地活下来了，虽然硕果仅存的是些再简单不过的游戏。这些残存下来的游戏拥有高度精炼和清晰可辩的设计构架。 以量取胜。在时间相对紧凑的开发周期中，手机游戏设计师要同时开工好几个游戏，这几乎囊括所有你能想得到的游戏类型。 同时设计三四款不同的游戏，你有两个选择：要么是通过一个共同的工作期掌握所有游戏的设计进程，要么顶着令人抓狂的压力分别跟进所有游戏设计进度。以下是一些手机游戏设计的经验总结。 tetris 层次 所有游戏设计都可以划分为四个基本的层次，即： 概念 范式 机制 界面 我们以手机游戏长青树《俄罗期方块》为例，该类戏设计的四个层次如下图所示： 俄罗斯方块的四个层次 概念 组合下落方块，尽可能把方块组合成完整的一行或多行，使之被消除，以延长游戏时间。 范式 范式是玩家与游戏时需要的思维框架。范式中所列的几何空间关系模式只是简单地指代玩家可能遇到的各种益智类游戏，例如拼图游戏、魔方、《无限回廊》、《音乐方块》和《跳跳球》等等。范式中的组合构建在游戏上就是所谓的匹配消除类游戏，例如《宝石方块》、《毛毛球》和《宝石迷阵》等等。 机制 机制由游戏内容构成的；内容对于支撑范式是必不可少的。 机制是第三层次的实质，内容也是建立在机制的基础之上。在《俄罗期方块》中，可阐述的机制非常多，没有办法列出全部，省略的要点如：方块阻塞，游戏结束和下落及接触这两个动词的解释。 界面 如图可见，并非所有的机制都需要直接的用户输入。在设计良好的游戏里，界面的利用限度是最低的，但能引起机制之间的连锁反应。例如，玩家通过影响方块的下落位置，从而决定底部的方块残排能否补全。 每一款游戏都可以描述为这四个层次。以下是对四个层次的详解。 概念 对许多人来说，游戏设计的起始都伴随着一个概念即从提出初步设想到形成完整的理念。 概念本身并不能阐明游戏的乐趣所在。提出设想的人通常是在头脑中想象着其他概念相似的游戏，并且假设所有游戏辅助细节都隐含其中。 如果你是一个设计师，你就会知道概念不是重点，但并不是说一个设计师应该抛弃设想。毕竟，概念是游戏设计的最高层次；如果概念本身不能讲述引人入胜的剧情，这样的游戏也不会有市场。 曾经存在着这么些卓越的游戏，因为其概念不能与用户产生共鸣，所以盈利表现不佳。游戏续作和电影授权游戏的成功很大程度上可以归结为，其游戏概念已深入人心。 在手机游戏里，没有所谓的游戏盒子或者视频演示游戏概念只能通过游戏名称体现出来。当我参与制作一个24 TV show授权游戏时，我们团队面临的最大障碍是游戏命名的问题。 我们那时已在开发游戏续作了，我们知道第一款游戏反响不佳可能得归咎于名称，所以24 Part 2这个名称就被淘汰了。而24: Jack Bauer’s Back等此类名称显然也不是我们的选择，最后只好将游戏命名为24: Agent Down。 在本作中，游戏的理念已经体现出来了；任何看过24的人都知道它是关于间谍和阴谋、黑客和枪战的电视节目，但通过简短的描述把这个概念完整地传达给用户几乎是不可能的事情。 《ER Rush》这个名称就不错。这是一款原创、以医院为主题的转盘游戏，与成功的《美女餐厅》类似。这两款游戏虽然在许多机制颇有偏差，但基本概念却是一致的用户各取所需（游戏邦注：玩家在该游戏中的任务就是在医院里四处奔走为病人提供服务），这款游戏的市场行情也非常走俏。 要产生一个理想的概念，最重要的是鼓励大胆创新；提取出最引人注目的内容对其进行扩充；体现游戏剧情。虽然这未必可以描述游戏的最终走向，但却是定义下一步–范式的前提。 范式 范式大概是四个游戏设计基本层次中最难称呼且最容易被忽略的一个层次了。范式听起来有些虚饰和抽象，但其意义却非常具体、明确：范式是玩家作用于游戏时的展望。 每一个挑中某款游戏的玩家都会带着先入为主的观念来玩游戏，这种观念是玩家本身、玩家所处的社会和人性所固有的特点。游戏反映生活，所以大多游戏带给玩家的普遍体验都不外乎打猎、收集和建造等等，这是自然而然的事。正是这些游戏体验定义了范式。 范式包含了一系列的玩家意料之中的规则。因此无需提醒，玩家凭直觉就知道范式固有的目标和风险，例如管理资源。如果一款游戏融合了各式体验，且每种体验都有各自的小目标，那么这个游戏可以说是融合了形形色色的范式。 范式与类型相似，但类型主要根据以往的游戏来创建原型，而范式则直接涉及人类体验的基本构建模块。 从类型方面举例，第一人称射击类游戏，展现了游戏的视觉范围和目标，但没有定义明确的范式。而FPS类游戏的特色在于：缓慢的节奏（系统的/计划前瞻性）、频繁地使用掩护（躲藏和搜索），战略武器升级（资源管理）和武器在不同情景的切换（工具管理）。这些游戏过程事实上都各有其小范式（即括号内的词组），并且每一个都是玩家熟悉的经历。玩家无需得到躲藏和搜索的前提解释，因为那就是人的本能。 范式和概念经常被混淆；许多概念能立即反映一个明显的范式（如猎鹿游戏需要躲藏和搜索的游戏内容），但这并不意味着其他范式不能与之共存。 [...]]]></description>
			<content:encoded><![CDATA[<p>营销人员可能明白强势品牌的重要性，但却对游戏机制一无所知；程序员可能深谙强大游戏机制的意义所在，但对游戏机制的传达方式一窍不通。这样的营销人员和程序员都无法各自打造出成功的游戏。因为一款成功的游戏离不开跨领域的协调性，然而，我们经常见到情况就如上所述，游戏制作团队的成员往往只熟悉游戏设计中面向己方的专业知识，对其他学科的知识所知甚少。</p>
<p>此时游戏设计师的职责显得尤为关键把不同专业的观点融合为全面的设计构想。如果设计师做不到，结果就是，团队里的成员各忙各的，把时间和精力浪费在毫不相干的工作上。</p>
<p>游戏设计包含了几个层次的工作，且各个层次彼此不同，就如游戏的市场营销和用户界面，把这些毫不相干的层次组合起来，这看似一项艰难的任务。完成这项任务需要明白游戏设计交叉性的理论框架、形象化游戏设计方案的下滴（上滴）效应。</p>
<p><strong> 手机平台的两个支点</strong></p>
<p>手机游戏带给玩家的融入感可能不如掌机游戏或电脑游戏那么强烈，但如果要深入研究游戏设计结构，简易的手机游戏却是个理想的探索起点。手机游戏开发之所以独特基于两点：能简则简，以量取胜。</p>
<p>能简则简。你可能已经听说过这么句话：一旦所有可删除的对象都被删除了，一个游戏就趋于完美了。手机平台检验了这个论断。即使是在今天这个iPhone的黎明时代，手机游戏开发者仍然不得不应对手机游戏需局限于128K空间的难题，而这128K包括了美工、代码、游戏数据、声音和其他所有游戏要素。</p>
<p>这种容量限制几乎足以令任何一种游戏设置寸步难行，但游戏还是顽强地活下来了，虽然硕果仅存的是些再简单不过的游戏。这些残存下来的游戏拥有高度精炼和清晰可辩的设计构架。</p>
<p>以量取胜。在时间相对紧凑的开发周期中，手机游戏设计师要同时开工好几个游戏，这几乎囊括所有你能想得到的游戏类型。</p>
<p>同时设计三四款不同的游戏，你有两个选择：要么是通过一个共同的工作期掌握所有游戏的设计进程，要么顶着令人抓狂的压力分别跟进所有游戏设计进度。以下是一些手机游戏设计的经验总结。<span id="more-545"></span></p>
<p><img src="http://pic001.cnblogs.com/images/2011/145819/2011052421021528.jpg" alt="" /></p>
<p>tetris</p>
<p><strong> 层次</strong></p>
<p>所有游戏设计都可以划分为四个基本的层次，即：</p>
<ul>
<li>概念</li>
<li>范式</li>
<li>机制</li>
<li>界面</li>
</ul>
<p>我们以手机游戏长青树《俄罗期方块》为例，该类戏设计的四个层次如下图所示：</p>
<p><img src="http://pic001.cnblogs.com/images/2011/145819/2011052421023784.jpg" alt="" /></p>
<p>俄罗斯方块的四个层次</p>
<p><strong> 概念</strong></p>
<p>组合下落方块，尽可能把方块组合成完整的一行或多行，使之被消除，以延长游戏时间。</p>
<p><strong> 范式</strong></p>
<p>范式是玩家与游戏时需要的思维框架。范式中所列的几何空间关系模式只是简单地指代玩家可能遇到的各种益智类游戏，例如拼图游戏、魔方、《无限回廊》、《音乐方块》和《跳跳球》等等。范式中的组合构建在游戏上就是所谓的匹配消除类游戏，例如《宝石方块》、《毛毛球》和《宝石迷阵》等等。</p>
<p><strong> 机制</strong></p>
<p>机制由游戏内容构成的；内容对于支撑范式是必不可少的。</p>
<p>机制是第三层次的实质，内容也是建立在机制的基础之上。在《俄罗期方块》中，可阐述的机制非常多，没有办法列出全部，省略的要点如：方块阻塞，游戏结束和下落及接触这两个动词的解释。</p>
<p><strong> 界面</strong></p>
<p>如图可见，并非所有的机制都需要直接的用户输入。在设计良好的游戏里，界面的利用限度是最低的，但能引起机制之间的连锁反应。例如，玩家通过影响方块的下落位置，从而决定底部的方块残排能否补全。</p>
<p>每一款游戏都可以描述为这四个层次。以下是对四个层次的详解。</p>
<p><strong> 概念</strong></p>
<p>对许多人来说，游戏设计的起始都伴随着一个概念即从提出初步设想到形成完整的理念。</p>
<p>概念本身并不能阐明游戏的乐趣所在。提出设想的人通常是在头脑中想象着其他概念相似的游戏，并且假设所有游戏辅助细节都隐含其中。</p>
<p>如果你是一个设计师，你就会知道概念不是重点，但并不是说一个设计师应该抛弃设想。毕竟，概念是游戏设计的最高层次；如果概念本身不能讲述引人入胜的剧情，这样的游戏也不会有市场。</p>
<p>曾经存在着这么些卓越的游戏，因为其概念不能与用户产生共鸣，所以盈利表现不佳。游戏续作和电影授权游戏的成功很大程度上可以归结为，其游戏概念已深入人心。</p>
<p>在手机游戏里，没有所谓的游戏盒子或者视频演示游戏概念只能通过游戏名称体现出来。当我参与制作一个24 TV show授权游戏时，我们团队面临的最大障碍是游戏命名的问题。</p>
<p>我们那时已在开发游戏续作了，我们知道第一款游戏反响不佳可能得归咎于名称，所以24 Part 2这个名称就被淘汰了。而24: Jack Bauer’s Back等此类名称显然也不是我们的选择，最后只好将游戏命名为24: Agent Down。</p>
<p>在本作中，游戏的理念已经体现出来了；任何看过24的人都知道它是关于间谍和阴谋、黑客和枪战的电视节目，但通过简短的描述把这个概念完整地传达给用户几乎是不可能的事情。</p>
<p>《ER Rush》这个名称就不错。这是一款原创、以医院为主题的转盘游戏，与成功的《美女餐厅》类似。这两款游戏虽然在许多机制颇有偏差，但基本概念却是一致的用户各取所需（游戏邦注：玩家在该游戏中的任务就是在医院里四处奔走为病人提供服务），这款游戏的市场行情也非常走俏。</p>
<p>要产生一个理想的概念，最重要的是鼓励大胆创新；提取出最引人注目的内容对其进行扩充；体现游戏剧情。虽然这未必可以描述游戏的最终走向，但却是定义下一步–范式的前提。</p>
<p><strong> 范式</strong></p>
<p>范式大概是四个游戏设计基本层次中最难称呼且最容易被忽略的一个层次了。范式听起来有些虚饰和抽象，但其意义却非常具体、明确：范式是玩家作用于游戏时的展望。</p>
<p>每一个挑中某款游戏的玩家都会带着先入为主的观念来玩游戏，这种观念是玩家本身、玩家所处的社会和人性所固有的特点。游戏反映生活，所以大多游戏带给玩家的普遍体验都不外乎打猎、收集和建造等等，这是自然而然的事。正是这些游戏体验定义了范式。</p>
<p>范式包含了一系列的玩家意料之中的规则。因此无需提醒，玩家凭直觉就知道范式固有的目标和风险，例如管理资源。如果一款游戏融合了各式体验，且每种体验都有各自的小目标，那么这个游戏可以说是融合了形形色色的范式。</p>
<p>范式与类型相似，但类型主要根据以往的游戏来创建原型，而范式则直接涉及人类体验的基本构建模块。</p>
<p>从类型方面举例，第一人称射击类游戏，展现了游戏的视觉范围和目标，但没有定义明确的范式。而FPS类游戏的特色在于：缓慢的节奏（系统的/计划前瞻性）、频繁地使用掩护（躲藏和搜索），战略武器升级（资源管理）和武器在不同情景的切换（工具管理）。这些游戏过程事实上都各有其小范式（即括号内的词组），并且每一个都是玩家熟悉的经历。玩家无需得到躲藏和搜索的前提解释，因为那就是人的本能。</p>
<p>范式和概念经常被混淆；许多概念能立即反映一个明显的范式（如猎鹿游戏需要躲藏和搜索的游戏内容），但这并不意味着其他范式不能与之共存。</p>
<p>范式和游戏机制同样不易区分。第一款游戏为了展开成功的范式，通常会构建一个机制先例，而这个机制先例总是被后来的游戏效仿。例如，技巧类桌面游戏总是围绕四个键的输入组合来做文章。这就是这类游戏多年以来形成的惯例。</p>
<p><strong> 机制与内容</strong></p>
<p>范式隐暗游戏规则，而机制决定游戏规则。在一定程度上可以说机制充当了游戏中的可操作部分。组合三个方块来消除一排或几排方块、重新装载枪支、用木材和铁搭建兵营或者其他在游戏中能做的事，这些都是一种机制。如果玩家可以改变或者影响游戏中的什么元素，那种元素就是机制。</p>
<p>机制具有详细性、技术性，且其细节包含的信息太多（游戏邦注：对一般人而言是如此，但游戏程序员和设计师除外）。一般人看到是本身只作为机制的集合体内容，而看不到其掩盖下的细节。</p>
<p>富有经验的设计师从游戏概念成形的那一刻起就在考虑游戏机制。如果有人建议做一款以玩家为上帝的游戏，且所有人都认同这是个了不起的概念，那么设计师肯定在所有人都开工前就确定好可控制的机制。</p>
<p>一个普遍而不言自明的手机游戏开发理念是：游戏功能和机制越多越好。这是因为游戏可玩的地方越多，游戏的价值就越大。</p>
<p>如果制作游戏过程不受时间、金钱和玩家注意力的限制，以上言论可能完全正确。但游戏设计师的当务之急是决定什么功能可以为整个游戏锦上添花，什么功能应该排除在外。</p>
<p>总体来说，设计师就像主管。想法是廉价的，但艺术构想却是无价的。程序员可以只将设计视为纯粹的机制，制作人员可以只当设计是纯粹的内容，但设计师却要把自己的视野放宽一些。</p>
<p>除了确定游戏的功能和特色，设计师还要凭借自己的经验和想象，将预定设想转化为赏心悦目、意义深远、一目了然的界面，且这个界面能激发玩家的凝聚力，平衡玩家的紧张感和松弛感。</p>
<p><strong> 界面</strong></p>
<p>游戏设计层次的底层是界面。界面是有形的视听提示，是沟通玩家与游戏机制的桥梁。</p>
<p>界面通常是由按钮组成的，但也可能包含虚拟摇杆、鼠标、麦克风、加速计或者移动传感手套等。</p>
<p>界面设计至少应把输入方式与机制相对应，但还要进一步考虑界面的平衡性不可用过多输入操作吓走玩家、避免难度较大的输入组合以及过分精确的定时设置，要让游戏的基调始终如一，简单易记。</p>
<p><img src="http://pic001.cnblogs.com/images/2011/145819/2011052421025639.jpg" alt="" /></p>
<p>Guitar Hero World Tour</p>
<p>因为手机有别于其他游戏设备，所以界面就成了运行手机游戏的一大挑战。设计手机版《吉他英雄之世界巡演》时，我很快就断定增加一击鼓键与玩家习惯了的三键相比，游戏难度将大大提升。玩家经常不得不彻底改变拿手机的方式以适应击鼓输入。</p>
<p>为了简化这种设置，我们把下排数字键（7、8、9）设定为有效的击鼓输入，同时进一步过滤音符数据，这样鼓的轨道上就不会产生多音符弦。</p>
<p>事实证明，这种额外简化设置确实有助于创造吉他和鼓模式之间的独特玩法，吉他的挑战难点在于控制复杂度渐进的和弦过渡，而鼓的挑战难点则在于通过更多输入实现单音符的快速衔接。</p>
<p>界面会对上游层次的机制产生影响只有玩家本能地知道如何与机制互动的时候，这种设计才能生效，所以我们必须针对界面调整游戏机制。所有关于界面设计的文献得出的最终结论都是：界面设计的目标是尽可能展现一目了然的用户界面。</p>
<p><strong> 结论</strong></p>
<p>此时你可能觉得现在已产生的问题比解决掉的问题还多。例如，如何平衡全新的概念和熟悉的概念？范式的定义应如何进一步精细化？如何组织游戏内容，才能使上层的范式和下层的机制对其产生定义作用？如何优先考虑界面的要求？</p>
<p>用四层次法界定游戏的好处在于它可以展示设计的结构，同时指出了一些更深层次而有待解决的问题。</p>
<p>事实上每一层次还各有深度：</p>
<ul>
<li>理念借助市场营销的威力</li>
<li>范式需要心理学上的分析</li>
<li>机制是纯游戏设计的结构单元</li>
<li>用户界面是实用性专家的关注焦点</li>
</ul>
<p>在一个小型手机游戏项目中，以上所述的任务很可能是设计师一个人的职责，但这也算是一种优势。当所有游戏设计的层次都为一人所掌握，那么这个人就应做出最明智、最有效的决策。如果整个团队都能理解游戏的整体状况，那么整个团队都能做出明智的决定。</p>
<p>本文的目的不在于解释如何设计游戏，而只是提供游戏设计的思路。解决了这四个层次的问题也还只是设计游戏的开端，但至少可以指引你朝着正确的方向前进，而不至于迷失方向。</p>
<p>&nbsp;</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%80%9D%E7%BB%B4%E7%9A%84%E6%83%AF%E6%80%A7.html" title="思维的惯性">思维的惯性</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E9%9A%8F%E6%9C%BA%E6%95%B0%E6%9C%89%E5%A4%9A%E9%9A%8F%E6%9C%BA%EF%BC%9F.html" title="随机数有多随机？">随机数有多随机？</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E7%94%A8%E5%9B%9B%E5%8F%89%E6%A0%91%E7%AE%A1%E7%90%86%E6%95%A3%E5%B8%83%E5%9C%A8%E5%B9%B3%E9%9D%A2%E4%B8%8A%E7%9A%84%E5%AF%B9%E8%B1%A1.html" title="用四叉树管理散布在平面上的对象">用四叉树管理散布在平面上的对象</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E7%9A%84%E5%B8%A7%E7%8E%87%E6%8E%A7%E5%88%B6.html" title="游戏的帧率控制">游戏的帧率控制</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途">eAccelerator与memcache的区别与用途</a> (2)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E8%AE%BE%E8%AE%A1.html" title="数据服务器的设计">数据服务器的设计</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E5%A4%9A%E8%BF%9B%E7%A8%8B%E7%9A%84%E6%B8%B8%E6%88%8F%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E8%AE%A1.html" title="多进程的游戏服务器设计">多进程的游戏服务器设计</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%B6%88%E6%81%AF%E7%9A%84%E5%B9%BF%E6%92%AD.html" title="服务器消息的广播">服务器消息的广播</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F%E7%9A%84%E5%AF%B9%E6%97%B6%E4%BB%A5%E5%8F%8A%E5%90%8C%E6%AD%A5%E9%97%AE%E9%A2%98.html" title="网络游戏的对时以及同步问题">网络游戏的对时以及同步问题</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E4%BB%A5%E4%BA%BA%E4%B8%BA%E6%9C%AC%EF%BC%8C%E7%BE%8E%E6%9C%AF%E8%B5%84%E6%BA%90%E7%9A%84%E5%BD%92%E6%A1%A3.html" title="以人为本，美术资源的归档">以人为本，美术资源的归档</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E8%B4%A7%E5%B8%81.html" title="游戏中的货币">游戏中的货币</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%86%85%E7%9A%84%E7%BB%84%E6%92%AD.html" title="游戏服务器内的组播">游戏服务器内的组播</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%AF%B9%E8%B1%A1" title="对象" rel="tag">对象</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E6%8A%80%E5%B7%A7" title="技巧" rel="tag">技巧</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/tag/%E6%B8%B8%E6%88%8F" title="游戏" rel="tag">游戏</a>, <a href="http://www.5bay.cn/category/game-development" title="游戏开发" rel="tag">游戏开发</a>, <a href="http://www.5bay.cn/tag/%E7%9B%88%E5%88%A9" title="盈利" rel="tag">盈利</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/tag/%E7%B1%BB" title="类" rel="tag">类</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/tag/%E8%90%A5%E9%94%80" title="营销" rel="tag">营销</a>, <a href="http://www.5bay.cn/tag/%E8%A1%A8" title="表" rel="tag">表</a>, <a href="http://www.5bay.cn/tag/%E8%A7%A3%E5%86%B3" title="解决" rel="tag">解决</a>, <a href="http://www.5bay.cn/tag/%E8%AE%BE%E8%AE%A1" title="设计" rel="tag">设计</a>, <a href="http://www.5bay.cn/tag/%E9%BC%A0%E6%A0%87" title="鼠标" rel="tag">鼠标</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/game-development/zishenshejishitonyventricejiexishoujiyouxikaifadesigecengci.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP防注入新方式，希望对大家是有用的</title>
		<link>http://www.5bay.cn/server-building/aspeaojie.html</link>
		<comments>http://www.5bay.cn/server-building/aspeaojie.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 02:00:27 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[人]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[类]]></category>
		<category><![CDATA[网站]]></category>
		<category><![CDATA[诫]]></category>
		<category><![CDATA[连接]]></category>
		<category><![CDATA[防注入]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=527</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/aspeaojie.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>最近我的网站经常把js脚本注入到数据，清除了又来。先后在网上找了很多的方法，还是没有用的，十分恼火。 首先先告诉大家一个批量清除代码的sql语句。 update 表名 set 字段=replace(字段,&#8217;script src=http://3b3.org/c.js&#62; 1、分析那些无聊的人，或者有些病态的人究竟做了些什么 。 通过iis的日志或者microsoft urlscan 日志查看，在一些通过id查询数据库内容的时候后面被人加了一段很长的字符窜。 %%3B%%44%%65%%43%%4C%%61%%52%%45%%类似这样的字符窜，一定是其他的方式编码 首先我们先用工具分析下如此之长的字符窜究竟包含了些什么内容。 通过批量替换工具把%%全部替换成空，然后把得到的字符串通过其他的转码工具，转成字符窜。 ;DeCLaRE @S NvArCHaR(4000);SeT @S=CaSt(0&#215;45这里代码去掉了06F007200 aS NvArChAR(4000));ExEc(@S);&#8211; 就是一段与通过id查询数据库同时执行的sql，就给数据库某些表的字段加入了js病毒连接。 2、所以我们的原来的防sql注入的字符串就需要升级了。 如果过滤16进制 ; 对应 3B DeCLaRE 对应 4465434C615245 @ 对应 40 NvArCHaR 对应 4E76417243486152 set 对应 536554 CaSt 对应 43615374 as 对应 6153 exec 对应 45784563 - 对应 2D 把16进制的代码用&#124;隔开放到injdata 里面 injdata = [...]]]></description>
			<content:encoded><![CDATA[<p>最近我的网站经常把js脚本注入到数据，清除了又来。先后在网上找了很多的方法，还是没有用的，十分恼火。</p>
<p>首先先告诉大家一个批量清除代码的sql语句。</p>
<p>update 表名 set 字段=replace(字段,&#8217;script src=http://3b3.org/c.<a href="http://www.5bay.cn/tag/js" class="st_tag internal_tag" rel="tag" title="标签 js 下的日志">js</a>&gt;<br />
1、分析那些无聊的人，或者有些病态的人究竟做了些什么 。</p>
<p>通过iis的日志或者microsoft urlscan 日志查看，在一些通过id查询数据库内容的时候后面被人加了一段很长的字符窜。</p>
<p>%%3B%%44%%65%%43%%4C%%61%%52%%45%%类似这样的字符窜，一定是其他的方式编码</p>
<p>首先我们先用工具分析下如此之长的字符窜究竟包含了些什么内容。</p>
<p>通过批量替换工具把%%全部替换成空，然后把得到的字符串通过其他的转码工具，转成字符窜。</p>
<p>;DeCLaRE @S NvArCHaR(4000);SeT @S=CaSt(0&#215;45这里代码去掉了06F007200 aS NvArChAR(4000));ExEc(@S);&#8211;</p>
<p>就是一段与通过id查询数据库同时执行的sql，就给数据库某些表的字段加入了js病毒连接。</p>
<p>2、所以我们的原来的防sql注入的字符串就需要升级了。</p>
<p>如果过滤16进制</p>
<p>; 对应 3B</p>
<p>DeCLaRE 对应 4465434C615245</p>
<p>@ 对应 40</p>
<p>NvArCHaR 对应 4E76417243486152</p>
<p>set 对应 536554</p>
<p>CaSt 对应 43615374</p>
<p>as 对应 6153</p>
<p>exec 对应 45784563</p>
<p>- 对应 2D</p>
<p>把16进制的代码用|隔开放到injdata 里面</p>
<p>injdata = “3B|2D|&#8217;|;|and|exec|insert|select|delete%20from|update|count|”</p>
<p>然后自己测试下，程序是否拦击了这些16进制的代码，本人测试过是可以拦击的，如果不加入这些是不拦击的</p>
<p>照样可以注入到数据库。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpfengzhuangchangyongjavascriptweijsleiyibiankuaisudiaoyong.html" title="PHP封装常用Javascript为JS类以便快速调用">PHP封装常用Javascript为JS类以便快速调用</a> (1)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (1)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库">AJAX的各种控件和类库</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/xmlhttpe.html" title="XMLHTTP对象封装技术">XMLHTTP对象封装技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途">eAccelerator与memcache的区别与用途</a> (2)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/asp" title="ASP" rel="tag">ASP</a>, <a href="http://www.5bay.cn/tag/js" title="js" rel="tag">js</a>, <a href="http://www.5bay.cn/tag/sql" title="sql" rel="tag">sql</a>, <a href="http://www.5bay.cn/tag/url" title="url" rel="tag">url</a>, <a href="http://www.5bay.cn/tag/%E4%BA%BA" title="人" rel="tag">人</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE%E5%BA%93" title="数据库" rel="tag">数据库</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/tag/%E7%B1%BB" title="类" rel="tag">类</a>, <a href="http://www.5bay.cn/tag/%E7%BD%91%E7%AB%99" title="网站" rel="tag">网站</a>, <a href="http://www.5bay.cn/tag/e" title="诫" rel="tag">诫</a>, <a href="http://www.5bay.cn/tag/%E8%BF%9E%E6%8E%A5" title="连接" rel="tag">连接</a>, <a href="http://www.5bay.cn/tag/%E9%98%B2%E6%B3%A8%E5%85%A5" title="防注入" rel="tag">防注入</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/aspeaojie.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何删除删不掉的”PRN.asp:.jpg”</title>
		<link>http://www.5bay.cn/server-building/eeprn-asp-jpg.html</link>
		<comments>http://www.5bay.cn/server-building/eeprn-asp-jpg.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 01:59:36 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[属性]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[操作系统]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[网站]]></category>
		<category><![CDATA[隐藏]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=525</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/eeprn-asp-jpg.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>一个用户的网站被挂马 很多以prn.开头的文件&#8230;这个文件其实是windows禁止建立的..但是可以在dos建立 所以在dos下用更改属性 结果不让改 然后想恢复权限 不让恢复 ，网站的跟目录被加了几个文件，怎么删也删不掉， prn.gupiao.asp prn.liuhe.asp com1.shouji.asp 或是COM2，COM8等文件主，   第一步：打开工具&#62;文件夹选项&#62;查看&#62;有一项为”隐藏受保护的操作系统文件(推荐)”,去掉其前边的钩,选中”显示所有文件和文件夹” 第二步：建立一个del.bat的文件 把以下代码黏贴进去&#8230; DEL /F /A /Q \\?\%1 RD /S /Q \\?\%1 然后要删那个文件就把那个文件拖进去即可&#8230;. 但是又遇到问题了&#8230;有一个顽固的&#8230;PRN.asp;.jpg 拖进去也删不掉&#8230;. 不过没问题 这个也可以删&#8230;先把这个文件的文件夹里的其他的文件备份&#8230; 然后把文件夹拖过去&#8230;^_^ 删了吧&#8230; 然后把备份的文件 拷回去 ok了 相关博文2010年05月23日 -- Rsync详解 (0)2010年07月28日 -- ASP防注入新方式，希望对大家是有用的 (0)2010年05月23日 -- mysql优化及全文搜索 (0)2011年06月29日 -- Android在线开发工具 App Inventor (0)2011年06月29日 -- 开源软件的盈利模式 (0)2011年06月29日 -- 资深设计师Tony Ventrice解析手机游戏开发的四个层次 (0)2010年07月26日 [...]]]></description>
			<content:encoded><![CDATA[<p>一个用户的网站被挂马 很多以prn.开头的文件&#8230;这个文件其实是windows禁止建立的..但是可以在dos建立</p>
<p>所以在dos下用更改属性 结果不让改</p>
<p>然后想恢复权限 不让恢复 ，网站的跟目录被加了几个文件，怎么删也删不掉，</p>
<p>prn.gupiao.<a href="http://www.5bay.cn/tag/asp" class="st_tag internal_tag" rel="tag" title="标签 ASP 下的日志">asp</a></p>
<p>prn.liuhe.asp</p>
<p>com1.shouji.asp</p>
<p>或是COM2，COM8等文件主，  </p>
<p>第一步：打开工具&gt;文件夹选项&gt;查看&gt;有一项为”隐藏受保护的操作系统文件(推荐)”,去掉其前边的钩,选中”显示所有文件和文件夹”</p>
<p>第二步：建立一个del.bat的文件 把以下代码黏贴进去&#8230;</p>
<p>DEL /F /A /Q \\?\%1</p>
<p>RD /S /Q \\?\%1<br />
然后要删那个文件就把那个文件拖进去即可&#8230;.</p>
<p>但是又遇到问题了&#8230;有一个顽固的&#8230;PRN.asp;.jpg 拖进去也删不掉&#8230;.</p>
<p>不过没问题 这个也可以删&#8230;先把这个文件的文件夹里的其他的文件备份&#8230;</p>
<p>然后把文件夹拖过去&#8230;^_^ 删了吧&#8230;</p>
<p>然后把备份的文件 拷回去 ok了</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2011年06月29日 -- <a href="http://www.5bay.cn/android%e7%ac%94%e8%ae%b0/androidzaixiankaifagongjuappinventor.html" title="Android在线开发工具 App Inventor">Android在线开发工具 App Inventor</a> (0)</li><li>2011年06月29日 -- <a href="http://www.5bay.cn/me/kaiyuanruanjiandeyinglimoshi.html" title="开源软件的盈利模式">开源软件的盈利模式</a> (0)</li><li>2011年06月29日 -- <a href="http://www.5bay.cn/game-development/zishenshejishitonyventricejiexishoujiyouxikaifadesigecengci.html" title="资深设计师Tony Ventrice解析手机游戏开发的四个层次">资深设计师Tony Ventrice解析手机游戏开发的四个层次</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (1)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库">AJAX的各种控件和类库</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途">eAccelerator与memcache的区别与用途</a> (2)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%95%B0%E5%80%BC%E5%85%AC%E5%BC%8F%E7%9A%84%E8%A1%A8%E8%B1%A1%E4%B8%8E%E6%9C%AC%E8%B4%A8.html" title="游戏数值公式的表象与本质">游戏数值公式的表象与本质</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/eeeeee389.html" title="无需输入密码登陆3389">无需输入密码登陆3389</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/asp" title="ASP" rel="tag">ASP</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%B1%9E%E6%80%A7" title="属性" rel="tag">属性</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F" title="操作系统" rel="tag">操作系统</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/tag/%E7%BD%91%E7%AB%99" title="网站" rel="tag">网站</a>, <a href="http://www.5bay.cn/tag/%E9%9A%90%E8%97%8F" title="隐藏" rel="tag">隐藏</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/eeprn-asp-jpg.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>完美解决“由于这台计算机没有终端服务器客户端访问许可证”</title>
		<link>http://www.5bay.cn/server-building/yaoeeechueeeeeeee.html</link>
		<comments>http://www.5bay.cn/server-building/yaoeeechueeeeeeee.html#comments</comments>
		<pubDate>Wed, 28 Jul 2010 01:29:01 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[密码]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[类]]></category>
		<category><![CDATA[解决]]></category>
		<category><![CDATA[连接]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=512</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/yaoeeechueeeeeeee.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>由于windows2003默认仅支持2个终端用户的登陆。当“终端连接超出了最大连接”的情况出现导致不能登录时，可以： 1、在另外一台Windows2003的机器上运行“tsmmc.msc”，打开远程桌面连接，添加一个新的连接，输入远程服务器的IP地址、远程登录帐号和密码，登录到远程服务器桌面。这个方式可以随时登录到远程桌面。 2、在登录出问题的服务器上， 单击“开始”，指向“管理工具”，然后单击“终端服务配置”。 3、 单击“服务器设置”，然后双击“授权模式”。 4、将“授权模式”更改为“每用户”，然后单击“确定”。 以后就不会出现此类问题了。 原因：Window Server 2003 不管理“用户 CAL”。这就是说，即使许可证服务器数据库中有一个“用户 CAL”，它在被使用时也不会减少。这样就不会为了让每个用户都有一个有效的终端服务器 (TS) CAL 而根据“最终用户许可协议”(EULA) 的要求删除管理员。在没有使用“设备 CAL”的情况下，如果不是每个用户都有一个“用户 CAL”，就会违反 EULA。 相关博文2010年05月23日 -- mysql优化及全文搜索 (0)2010年05月23日 -- Rsync详解 (0)2010年07月28日 -- ASP防注入新方式，希望对大家是有用的 (0)2010年07月26日 -- 最令PHP初学者头痛的十四个问题 (0)2010年07月26日 -- PHP和Socket简介 (0)2010年07月26日 -- PHP对文本数据库的基本操作方法 (0)2010年05月23日 -- PHP封装常用Javascript为JS类以便快速调用 (1)2008年10月17日 -- 多服务器的用户身份认证方案 (0)2011年06月29日 -- 资深设计师Tony Ventrice解析手机游戏开发的四个层次 (0)2010年07月26日 -- php的文档句法(heredoc)]]></description>
			<content:encoded><![CDATA[<p>由于windows2003默认仅支持2个终端用户的登陆。当“终端连接超出了最大连接”的情况出现导致不能登录时，可以：</p>
<p>1、在另外一台Windows2003的机器上运行“tsmmc.msc”，打开远程桌面连接，添加一个新的连接，输入远程服务器的IP地址、远程登录帐号和密码，登录到远程服务器桌面。这个方式可以随时登录到远程桌面。</p>
<p>2、在登录出问题的服务器上， 单击“开始”，指向“管理工具”，然后单击“终端服务配置”。</p>
<p>3、 单击“服务器设置”，然后双击“授权模式”。</p>
<p>4、将“授权模式”更改为“每用户”，然后单击“确定”。 以后就不会出现此类问题了。</p>
<p>原因：Window <a href="http://www.5bay.cn/tag/server" class="st_tag internal_tag" rel="tag" title="标签 server 下的日志">Server</a> 2003 不管理“用户 CAL”。这就是说，即使许可证服务器数据库中有一个“用户 CAL”，它在被使用时也不会减少。这样就不会为了让每个用户都有一个有效的终端服务器 (TS) CAL 而根据“最终用户许可协议”(EULA) 的要求删除管理员。在没有使用“设备 CAL”的情况下，如果不是每个用户都有一个“用户 CAL”，就会违反 EULA。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpfengzhuangchangyongjavascriptweijsleiyibiankuaisudiaoyong.html" title="PHP封装常用Javascript为JS类以便快速调用">PHP封装常用Javascript为JS类以便快速调用</a> (1)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E5%A4%9A%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E8%AE%A4%E8%AF%81%E6%96%B9%E6%A1%88.html" title="多服务器的用户身份认证方案">多服务器的用户身份认证方案</a> (0)</li><li>2011年06月29日 -- <a href="http://www.5bay.cn/game-development/zishenshejishitonyventricejiexishoujiyouxikaifadesigecengci.html" title="资深设计师Tony Ventrice解析手机游戏开发的四个层次">资深设计师Tony Ventrice解析手机游戏开发的四个层次</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途">eAccelerator与memcache的区别与用途</a> (2)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpzhongdememcachehanshukumemcachefunctions.html" title="PHP中的Memcache函数库（Memcache Functions）">PHP中的Memcache函数库（Memcache Functions）</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%95%B0%E6%8D%AE%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E8%AE%BE%E8%AE%A1.html" title="数据服务器的设计">数据服务器的设计</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E5%A4%9A%E8%BF%9B%E7%A8%8B%E7%9A%84%E6%B8%B8%E6%88%8F%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E8%AE%A1.html" title="多进程的游戏服务器设计">多进程的游戏服务器设计</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/server" title="server" rel="tag">server</a>, <a href="http://www.5bay.cn/tag/%E5%AF%86%E7%A0%81" title="密码" rel="tag">密码</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE%E5%BA%93" title="数据库" rel="tag">数据库</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/%E7%B1%BB" title="类" rel="tag">类</a>, <a href="http://www.5bay.cn/tag/%E8%A7%A3%E5%86%B3" title="解决" rel="tag">解决</a>, <a href="http://www.5bay.cn/tag/%E8%BF%9E%E6%8E%A5" title="连接" rel="tag">连接</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/yaoeeechueeeeeeee.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rsync详解</title>
		<link>http://www.5bay.cn/server-building/rsyncxiangjie.html</link>
		<comments>http://www.5bay.cn/server-building/rsyncxiangjie.html#comments</comments>
		<pubDate>Sat, 22 May 2010 21:38:09 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[include]]></category>
		<category><![CDATA[mod]]></category>
		<category><![CDATA[path]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[判断]]></category>
		<category><![CDATA[失败]]></category>
		<category><![CDATA[实例]]></category>
		<category><![CDATA[密码]]></category>
		<category><![CDATA[属性]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[搜索]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[更新]]></category>
		<category><![CDATA[源代码]]></category>
		<category><![CDATA[版本]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[类]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[网站]]></category>
		<category><![CDATA[表]]></category>
		<category><![CDATA[说明]]></category>
		<category><![CDATA[连接]]></category>
		<category><![CDATA[链接]]></category>
		<category><![CDATA[错误]]></category>
		<category><![CDATA[镜像]]></category>
		<category><![CDATA[隐藏]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=380</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/rsyncxiangjie.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>1、什么是Rsync Rsync（remote synchronize）是一个远程数据同步工具，可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步，这个算法只传送两个文件的不同部分，而不是每次都整份传送，因此速度相当快。   Rsync本来是用于替代rcp的一个工具，目前由rsync.samba.org维护，所以rsync.conf文件的格式类似于samba的主配置文件。Rsync可以通过rsh或ssh使用，也能以daemon模式去运行，在以daemon方式运行时Rsync server会打开一个873端口，等待客户端去连接。连接时，Rsync server会检查口令是否相符，若通过口令查核，则可以开始进行文件传输。第一次连通完成时，会把整份文件传输一次，以后则就只需进行增量备份。 Rsync支持大多数的类Unix系统，无论是Linux、Solaris还是BSD上都经过了良好的测试。此外，它在windows平台下也有相应的版本，如cwRsync和Sync2NAS等工具。 Rsync的基本特点如下： 1.可以镜像保存整个目录树和文件系统； 2.可以很容易做到保持原来文件的权限、时间、软硬链接等； 3.无须特殊权限即可安装； 4.优化的流程，文件传输效率高； 5.可以使用rsh、ssh等方式来传输文件，当然也可以通过直接的socket连接； 6.支持匿名传输。 2、Rsync同步算法 Rsync只所以同步文件的速度相当快，是因为“Rsync同步算法”能在很短的时间内计算出需要备份的数据，关于Rsync的同步算法描述如下： 假定在1号和2号两台计算机之间同步相似的文件A与B，其中1号对文件A拥有访问权，2号对文件B拥有访问权。并且假定主机1号与2号之间的网络带宽很小。那么rsync算法将通过下面的五个步骤来完成： 1、2号将文件B分割成一组不重叠的固定大小为S字节的数据块，最后一块可能会比S 小。 2、2号对每一个分割好的数据块执行两种校验：一种是32位的滚动弱校验，另一种是128位的MD4强校验。 3、2号将这些校验结果发给1号。 4、1号通过搜索文件A的所有大小为S的数据块(偏移量可以任选，不一定非要是S的倍数)，来寻找与文件B的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。 5、1号发给2号一串指令来生成文件A在2号上的备份。这里的每一条指令要么是对文件B经拥有某一个数据块而不须重传的证明，要么是一个数据块，这个数据块肯定是没有与文件B的任何一个数据块匹配上的。 3、Rsync参数说明 3.1 rsyncd.conf配置文件 －、全局参数 在文件中[module]之前的所有参数都是全局参数，当然也可以在全局参数部分定义模块参数，这时候该参数的值就是所有模块的默认值。 port 指定后台程序使用的端口号，默认为873。 motd file “motd file”参数用来指定一个消息文件，当客户连接服务器时该文件的内容显示给客户，默认是没有motd文件的。 log file “log file”指定rsync的日志文件，而不将日志发送给syslog。比如可指定为“/var/log/rsyncd.log”。 pid file 指定rsync的pid文件，通常指定为“/var/run/rsyncd.pid”。 syslog facility 指定rsync发送日志消息给syslog时的消息级别，常见的消息级别是：uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, [...]]]></description>
			<content:encoded><![CDATA[<p>1、什么是Rsync</p>
<p>Rsync（remote synchronize）是一个远程数据同步工具，可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步，这个算法只传送两个文件的不同部分，而不是每次都整份传送，因此速度相当快。</p>
<p> <span id="more-380"></span></p>
<p>Rsync本来是用于替代rcp的一个工具，目前由rsync.samba.org维护，所以rsync.conf文件的格式类似于samba的主配置文件。Rsync可以通过rsh或ssh使用，也能以daemon模式去运行，在以daemon方式运行时Rsync server会打开一个873端口，等待客户端去连接。连接时，Rsync server会检查口令是否相符，若通过口令查核，则可以开始进行文件传输。第一次连通完成时，会把整份文件传输一次，以后则就只需进行增量备份。</p>
<p>Rsync支持大多数的类Unix系统，无论是Linux、Solaris还是BSD上都经过了良好的测试。此外，它在windows平台下也有相应的版本，如cwRsync和Sync2NAS等工具。</p>
<p>Rsync的基本特点如下：</p>
<p>1.可以镜像保存整个目录树和文件系统；</p>
<p>2.可以很容易做到保持原来文件的权限、时间、软硬链接等；</p>
<p>3.无须特殊权限即可安装；</p>
<p>4.优化的流程，文件传输效率高；</p>
<p>5.可以使用rsh、ssh等方式来传输文件，当然也可以通过直接的socket连接；</p>
<p>6.支持匿名传输。<br />
2、Rsync同步算法</p>
<p>Rsync只所以同步文件的速度相当快，是因为“Rsync同步算法”能在很短的时间内计算出需要备份的数据，关于Rsync的同步算法描述如下：</p>
<p>假定在1号和2号两台计算机之间同步相似的文件A与B，其中1号对文件A拥有访问权，2号对文件B拥有访问权。并且假定主机1号与2号之间的网络带宽很小。那么rsync算法将通过下面的五个步骤来完成：</p>
<p>1、2号将文件B分割成一组不重叠的固定大小为S字节的数据块，最后一块可能会比S 小。<br />
2、2号对每一个分割好的数据块执行两种校验：一种是32位的滚动弱校验，另一种是128位的MD4强校验。<br />
3、2号将这些校验结果发给1号。<br />
4、1号通过搜索文件A的所有大小为S的数据块(偏移量可以任选，不一定非要是S的倍数)，来寻找与文件B的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。<br />
5、1号发给2号一串指令来生成文件A在2号上的备份。这里的每一条指令要么是对文件B经拥有某一个数据块而不须重传的证明，要么是一个数据块，这个数据块肯定是没有与文件B的任何一个数据块匹配上的。</p>
<p>3、Rsync参数说明<br />
3.1 rsyncd.conf配置文件<br />
－、全局参数</p>
<p>在文件中[module]之前的所有参数都是全局参数，当然也可以在全局参数部分定义模块参数，这时候该参数的值就是所有模块的默认值。</p>
<p>port</p>
<p>指定后台程序使用的端口号，默认为873。<br />
motd file</p>
<p>“motd file”参数用来指定一个消息文件，当客户连接服务器时该文件的内容显示给客户，默认是没有motd文件的。<br />
log file</p>
<p>“log file”指定rsync的日志文件，而不将日志发送给syslog。比如可指定为“/var/log/rsyncd.log”。<br />
pid file</p>
<p>指定rsync的pid文件，通常指定为“/var/run/rsyncd.pid”。<br />
syslog facility</p>
<p>指定rsync发送日志消息给syslog时的消息级别，常见的消息级别是：uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默认值是daemon。</p>
<p>二、模块参数</p>
<p>主要是定义服务器哪个目录要被同步。其格式必须为“[module]”形式，这个名字就是在rsync 客户端看到的名字，其实有点象Samba服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的。我们可以根据自己的需要，来指定多个模块，模块中可以定义以下参数：</p>
<p>comment</p>
<p>给模块指定一个描述，该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。<br />
path</p>
<p>指定该模块的供备份的目录树路径，该参数是必须指定的。<br />
use chroot</p>
<p>如果”use chroot”指定为true，那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护，但是缺点是需要以roots权限，并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true。<br />
uid</p>
<p>该选项指定当该模块传输文件时守护进程应该具有的uid，配合gid选项使用可以确定哪些可以访问怎么样的文件权限，默认值是”nobody”。<br />
gid</p>
<p>该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为”nobody”。<br />
max connections</p>
<p>指定该模块的最大并发连接数量以保护服务器，超过限制的连接请求将被告知随后再试。默认值是0，也就是没有限制。<br />
list</p>
<p>该选项设定当客户请求可以使用的模块列表时，该模块是否应该被列出。如果设置该选项为false，可以创建隐藏的模块。默认值是true。<br />
read only</p>
<p>该选项设定是否允许客户上载文件。如果为true那么任何上载请求都会失败，如果为false并且服务器目录读写权限允许那么上载是允许的。默认值为true。<br />
exclude</p>
<p>用来指定多个由空格隔开的多个文件或目录(相对路径)，并将其添加到exclude列表中。这等同于在客户端命令中使用&#8211;exclude来指定模式，一个模块只能指定一个exclude选项。但是需要注意的一点是该选项有一定的安全性问题，客户很有可能绕过exclude列表，如果希望确保特定的文件不能被访问，那就最好结合uid/gid选项一起使用。<br />
exclude from</p>
<p>指定一个包含exclude模式的定义的文件名，服务器从该文件中读取exclude列表定义。<br />
include</p>
<p>用来指定不排除符合要求的文件或目录。这等同于在客户端命令中使用&#8211;include来指定模式，结合include和exclude可以定义复杂的exclude/include规则。<br />
include from</p>
<p>指定一个包含include模式的定义的文件名，服务器从该文件中读取include列表定义。<br />
auth users</p>
<p>该选项指定由空格或逗号分隔的用户名列表，只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果”auth users”被设置，那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在”secrets file”选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。<br />
secrets file</p>
<p>该选项指定一个包含定义用户名:密码对的文件。只有在”auth users”被定义时，该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名，需要限式指定一个(例如：/etc/rsyncd.passwd)。注意：该文件的权限一定要是600，否则客户端将不能连接服务器。<br />
strict modes</p>
<p>该选项指定是否监测密码文件的权限，如果该选项值为true那么密码文件只能被rsync服务器运行身份的用户访问，其他任何用户不可以访问该文件。默认值为true。<br />
hosts allow</p>
<p>该选项指定哪些IP的客户允许连接该模块。客户模式定义可以是以下形式：</p>
<p>单个IP地址，例如：192.167.0.1<br />
整个网段，例如：192.168.0.0/24，也可以是192.168.0.0/255.255.255.0</p>
<p>多个IP或网段需要用空格隔开，“*”则表示所有，默认是允许所有主机连接。<br />
hosts deny</p>
<p>指定不允许连接rsync服务器的机器，可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义。<br />
ignore errors</p>
<p>指定rsyncd在判断是否运行传输时的删除操作时忽略server上的IO错误，一般来说rsync在出现IO错误时将将跳过&#8211;delete操作，以防止因为暂时的资源不足或其它IO错误导致的严重问题。<br />
ignore nonreadable</p>
<p>指定rysnc服务器完全忽略那些用户没有访问权限的文件。这对于在需要备份的目录中有些文件是不应该被备份者得到的情况是有意义的。<br />
lock file</p>
<p>指定支持max connections参数的锁文件，默认值是/var/run/rsyncd.lock。<br />
transfer logging</p>
<p>使rsync服务器使用ftp格式的文件来记录下载和上载操作在自己单独的日志中。<br />
log format</p>
<p>通过该选项用户在使用transfer logging可以自己定制日志文件的字段。其格式是一个包含格式定义符的字符串，可以使用的格式定义符如下所示：</p>
<p>%h 远程主机名</p>
<p>%a 远程IP地址</p>
<p>%l 文件长度字符数</p>
<p>%p 该次rsync会话的进程id</p>
<p>%o 操作类型：”send”或”recv”</p>
<p>%f 文件名</p>
<p>%P 模块路径</p>
<p>%m 模块名</p>
<p>%t 当前时间</p>
<p>%u 认证的用户名(匿名时是null)</p>
<p>%b 实际传输的字节数</p>
<p>%c 当发送文件时，该字段记录该文件的校验码</p>
<p>默认log格式为：”%o %h [%a] %m (%u) %f %l”，一般来说,在每行的头上会添加”%t [%p] “。在源代码中同时发布有一个叫rsyncstats的perl脚本程序来统计这种格式的日志文件。<br />
timeout</p>
<p>通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟，0表示没有超时定义，这也是默认值。对于匿名rsync服务器来说，一个理想的数字是600。<br />
refuse options</p>
<p>通过该选项可以定义一些不允许客户对该模块使用的命令参数列表。这里必须使用命令全名，而不能是简称。但发生拒绝某个命令的情况时服务器将报告错误信息然后退出。如果要防止使用压缩，应该是：”dont compress = *”。<br />
dont compress</p>
<p>用来指定那些不进行压缩处理再传输的文件，默认值是*.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz</p>
<p>3.2 Rsync命令</p>
<p>在对rsync服务器配置结束以后，下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具，其命令也有很多功能特色选项，我们下面就对它的选项一一进行分析说明。</p>
<p>Rsync的命令格式可以为以下六种：<br />
rsync [OPTION]&#8230; SRC DEST</p>
<p>rsync [OPTION]&#8230; SRC [USER@]HOST:DEST</p>
<p>rsync [OPTION]&#8230; [USER@]HOST:SRC DEST</p>
<p>rsync [OPTION]&#8230; [USER@]HOST::SRC DEST</p>
<p>rsync [OPTION]&#8230; SRC [USER@]HOST::DEST</p>
<p>rsync [OPTION]&#8230; rsync://[USER@]HOST[:PORT]/SRC [DEST]<br />
对应于以上六种命令格式，rsync有六种不同的工作模式：</p>
<p>1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。如：rsync -a /data /backup</p>
<p>2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。如：rsync -avz *.c foo:src</p>
<p>3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。如：rsync -avz foo:src/bar /data</p>
<p>4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。如：rsync -av <a href="mailto:root@172.16.78.192::www">root@172.16.78.192::www</a> /databack</p>
<p>5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。如：rsync -av /databack <a href="mailto:root@172.16.78.192::www">root@172.16.78.192::www</a></p>
<p>6)列远程机的文件列表。这类似于rsync传输，不过只要在命令中省略掉本地机信息即可。如：rsync -v rsync://172.16.78.192/www<br />
rsync参数的具体解释如下：<br />
-v, &#8211;verbose 详细模式输出<br />
-q, &#8211;quiet 精简输出模式<br />
-c, &#8211;checksum 打开校验开关，强制对文件传输进行校验<br />
-a, &#8211;archive 归档模式，表示以递归方式传输文件，并保持所有文件属性，等于-rlptgoD<br />
-r, &#8211;recursive 对子目录以递归模式处理<br />
-R, &#8211;relative 使用相对路径信息<br />
-b, &#8211;backup 创建备份，也就是对于目的已经存在有同样的文件名时，将老的文件重新命名为~filename。可以使用&#8211;suffix选项来指定不同的备份文件前缀。<br />
&#8211;backup-dir 将备份文件(如~filename)存放在在目录下。<br />
-suffix=SUFFIX 定义备份文件前缀<br />
-u, &#8211;update 仅仅进行更新，也就是跳过所有已经存在于DST，并且文件时间晚于要备份的文件。(不覆盖更新的文件)<br />
-l, &#8211;links 保留软链结<br />
-L, &#8211;copy-links 想对待常规文件一样处理软链结<br />
&#8211;copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结<br />
&#8211;safe-links 忽略指向SRC路径目录树以外的链结<br />
-H, &#8211;hard-links 保留硬链结<br />
-p, &#8211;perms 保持文件权限<br />
-o, &#8211;owner 保持文件属主信息<br />
-g, &#8211;group 保持文件属组信息<br />
-D, &#8211;devices 保持设备文件信息<br />
-t, &#8211;times 保持文件时间信息<br />
-S, &#8211;sparse 对稀疏文件进行特殊处理以节省DST的空间<br />
-n, &#8211;dry-run现实哪些文件将被传输<br />
-W, &#8211;whole-file 拷贝文件，不进行增量检测<br />
-x, &#8211;one-file-system 不要跨越文件系统边界<br />
-B, &#8211;block-size=SIZE 检验算法使用的块尺寸，默认是700字节<br />
-e, &#8211;rsh=COMMAND 指定使用rsh、ssh方式进行数据同步<br />
&#8211;rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息<br />
-C, &#8211;cvs-exclude 使用和CVS一样的方法自动忽略文件，用来排除那些不希望传输的文件<br />
&#8211;existing 仅仅更新那些已经存在于DST的文件，而不备份那些新创建的文件<br />
&#8211;delete 删除那些DST中SRC没有的文件<br />
&#8211;delete-excluded 同样删除接收端那些被该选项指定排除的文件<br />
&#8211;delete-after 传输结束以后再删除<br />
&#8211;ignore-errors 及时出现IO错误也进行删除<br />
&#8211;max-delete=NUM 最多删除NUM个文件<br />
&#8211;partial 保留那些因故没有完全传输的文件，以是加快随后的再次传输<br />
&#8211;force 强制删除目录，即使不为空<br />
&#8211;numeric-ids 不将数字的用户和组ID匹配为用户名和组名<br />
&#8211;timeout=TIME IP超时时间，单位为秒<br />
-I, &#8211;ignore-times 不跳过那些有同样的时间和长度的文件<br />
&#8211;size-only 当决定是否要备份文件时，仅仅察看文件大小而不考虑文件时间<br />
&#8211;modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口，默认为0<br />
-T &#8211;temp-dir=DIR 在DIR中创建临时文件<br />
&#8211;compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份<br />
-P 等同于 &#8211;partial<br />
&#8211;progress 显示备份过程<br />
-z, &#8211;compress 对备份的文件在传输时进行压缩处理<br />
&#8211;exclude=PATTERN 指定排除不需要传输的文件模式<br />
&#8211;include=PATTERN 指定不排除而需要传输的文件模式<br />
&#8211;exclude-from=FILE 排除FILE中指定模式的文件<br />
&#8211;include-from=FILE 不排除FILE指定模式匹配的文件<br />
&#8211;version 打印版本信息<br />
&#8211;address 绑定到特定的地址<br />
&#8211;config=FILE 指定其他的配置文件，不使用默认的rsyncd.conf文件<br />
&#8211;port=PORT 指定其他的rsync服务端口<br />
&#8211;blocking-io 对远程shell使用阻塞IO<br />
-stats 给出某些文件的传输状态<br />
&#8211;progress 在传输时现实传输过程<br />
&#8211;log-format=formAT 指定日志文件格式<br />
&#8211;password-file=FILE 从FILE中得到密码<br />
&#8211;bwlimit=KBPS 限制I/O带宽，KBytes per second<br />
-h, &#8211;help 显示帮助信息</p>
<p>4、Rsync使用实例<br />
4.1、SSH方式</p>
<p>1、首先在服务端启动ssh服务：<br />
# service sshd start</p>
<p>启动 sshd： [确定]<br />
2、使用rsync进行同步</p>
<p>接下来就可以在客户端使用rsync命令来备份服务端上的数据了，SSH方式是通过系统用户来进行备份的，如下：<br />
# rsync -vzrtopg &#8211;progress -e ssh &#8211;delete <a href="mailto:work@172.16.78.192:/www/">work@172.16.78.192:/www/</a>* /databack/experiment/rsync</p>
<p><a href="mailto:work@172.16.78.192%20s">work@172.16.78.192&#8242;s</a> password:</p>
<p>receiving file list &#8230;</p>
<p>5 files to consider</p>
<p>test/</p>
<p>a</p>
<p>0 100% 0.00kB/s 527:35:41 (1, 20.0% of 5)</p>
<p>b</p>
<p>67 100% 65.43kB/s 0:00:00 (2, 40.0% of 5)</p>
<p>c</p>
<p>0 100% 0.00kB/s 527:35:41 (3, 60.0% of 5)</p>
<p>dd</p>
<p>100663296 100% 42.22MB/s 0:00:02 (4, 80.0% of 5)</p>
<p>sent 96 bytes received 98190 bytes 11563.06 bytes/sec</p>
<p>total size is 100663363 speedup is 1024.19<br />
上面的信息描述了整个的备份过程，以及总共备份数据的大小。<br />
4.2 、后台服务方式</p>
<p>1、启动rsync服务</p>
<p>编辑/etc/xinetd.d/rsync文件，将其中的disable=yes改为disable=no，并重启xinetd服务，如下：<br />
# vi /etc/xinetd.d/rsync</p>
<p>#default: off</p>
<p># description: The rsync <a href="http://www.5bay.cn/tag/server" class="st_tag internal_tag" rel="tag" title="标签 server 下的日志">server</a> is a good addition to an ftp <a href="http://www.5bay.cn/tag/server" class="st_tag internal_tag" rel="tag" title="标签 server 下的日志">server</a>, as it \</p>
<p># allows crc checksumming etc.</p>
<p>service rsync</p>
<p>{</p>
<p>disable = no</p>
<p>socket_type = stream</p>
<p>wait = no</p>
<p>user = root</p>
<p>server = /usr/bin/rsync</p>
<p>server_args = &#8211;daemon</p>
<p>log_on_failure += USERID</p>
<p>}</p>
<p># /etc/init.d/xinetd restart</p>
<p>停止 xinetd： [确定]</p>
<p>启动 xinetd： [确定]<br />
2、创建配置文件</p>
<p>默认安装好rsync程序后，并不会自动创建rsync的主配置文件，需要手工来创建，其主配置文件为“/etc/rsyncd.conf”，创建该文件并插入如下内容：<br />
# vi /etc/rsyncd.conf</p>
<p>uid=root</p>
<p>gid=root</p>
<p>max connections=4</p>
<p>log file=/var/log/rsyncd.log</p>
<p>pid file=/var/run/rsyncd.pid</p>
<p>lock file=/var/run/rsyncd.lock</p>
<p>secrets file=/etc/rsyncd.passwd</p>
<p>hosts deny=172.16.78.0/22</p>
<p>[www]</p>
<p>comment= backup <a href="http://www.5bay.cn/tag/web" class="st_tag internal_tag" rel="tag" title="标签 web 下的日志">web</a></p>
<p>path=/www</p>
<p>read only = no</p>
<p>exclude=test</p>
<p>auth users=work<br />
3、创建密码文件</p>
<p>采用这种方式不能使用系统用户对客户端进行认证，所以需要创建一个密码文件，其格式为“username:password”，用户名可以和密码可以随便定义，最好不要和系统帐户一致，同时要把创建的密码文件权限设置为600，这在前面的模块参数做了详细介绍。<br />
# echo “work:abc123&#8243; &gt; /etc/rsyncd.passwd</p>
<p># chmod 600 /etc/rsyncd.passwd<br />
4、备份</p>
<p>完成以上工作，现在就可以对数据进行备份了，如下：<br />
# rsync -avz &#8211;progress &#8211;delete <a href="mailto:work@172.16.78.192::www">work@172.16.78.192::www</a> /databack/experiment/rsync</p>
<p>Password:</p>
<p>receiving file list &#8230;</p>
<p>6 files to consider</p>
<p>./ files&#8230;</p>
<p>a</p>
<p>0 100% 0.00kB/s 528:20:41 (1, 50.0% of 6)</p>
<p>b</p>
<p>67 100% 65.43kB/s 0:00:00 (2, 66.7% of 6)</p>
<p>c</p>
<p>0 100% 0.00kB/s 528:20:41 (3, 83.3% of 6)</p>
<p>dd</p>
<p>100663296 100% 37.49MB/s 0:00:02 (4, 100.0% of 6)</p>
<p>sent 172 bytes received 98276 bytes 17899.64 bytes/sec</p>
<p>total size is 150995011 speedup is 1533.75<br />
5、恢复</p>
<p>当服务器的数据出现问题时，那么这时就需要通过客户端的数据对服务端进行恢复，但前提是服务端允许客户端有写入权限，否则也不能在客户端直接对服务端进行恢复，使用rsync对数据进行恢复的方法如下：<br />
# rsync -avz &#8211;progress /databack/experiment/rsync/ <a href="mailto:work@172.16.78.192::www">work@172.16.78.192::www</a></p>
<p>Password:</p>
<p>building file list &#8230;</p>
<p>6 files to consider</p>
<p>./</p>
<p>a</p>
<p>b</p>
<p>67 100% 0.00kB/s 0:00:00 (2, 66.7% of 6)</p>
<p>c</p>
<p>sent 258 bytes received 76 bytes 95.43 bytes/sec</p>
<p>total size is 150995011 speedup is 452080.87</p>
<p>5、示例脚本</p>
<p>这里这些脚本都是rsync网站上的例子：<br />
1、每隔七天将数据往中心服务器做增量备份<br />
#!/bin/sh<br />
# This script does personal backups to a rsync backup server. You will end up<br />
# with a 7 day rotating incremental backup. The incrementals will go<br />
# into subdirectories named after the day of the week, and the current<br />
# full backup goes into a directory called “current”<br />
# <a href="mailto:tridge@linuxcare.com">tridge@linuxcare.com</a><br />
# directory to backup<br />
BDIR=/home/$USER<br />
# excludes file &#8211; this contains a wildcard pattern per line of files to exclude<br />
EXCLUDES=$HOME/cron/excludes<br />
# the name of the backup machine<br />
BSERVER=owl<br />
# your password on the backup server<br />
export RSYNC_PASSWORD=XXXXXX<br />
########################################################################<br />
BACKUPDIR=`date +%A`<br />
OPTS=”&#8211;force &#8211;ignore-errors &#8211;delete-excluded &#8211;exclude-from=$EXCLUDES<br />
&#8211;delete &#8211;backup &#8211;backup-dir=/$BACKUPDIR -a”<br />
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin<br />
# the following line clears the last weeks incremental directory<br />
[ -d $HOME/emptydir ] || mkdir $HOME/emptydir<br />
rsync &#8211;delete -a $HOME/emptydir/ $BSERVER::$USER/$BACKUPDIR/<br />
rmdir $HOME/emptydir<br />
# now the actual transfer<br />
rsync $OPTS $BDIR $BSERVER::$USER/current<br />
2、备份至一个空闲的硬盘<br />
#!/bin/sh<br />
export PATH=/usr/local/bin:/usr/bin:/bin<br />
LIST=”rootfs usr data data2&#8243;<br />
for d in $LIST; do<br />
mount /backup/$d<br />
rsync -ax &#8211;exclude fstab &#8211;delete /$d/ /backup/$d/<br />
umount /backup/$d<br />
done<br />
DAY=`date “+%A”`<br />
rsync -a &#8211;delete /usr/local/apache /data2/backups/$DAY<br />
rsync -a &#8211;delete /data/solid /data2/backups/$DAY<br />
3、对vger.rutgers.edu的cvs树进行镜像<br />
#!/bin/bash<br />
cd /var/www/cvs/vger/<br />
PATH=/usr/local/bin:/usr/freeware/bin:/usr/bin:/bin<br />
RUN=`lps x | grep rsync | grep -v grep | wc -l`<br />
if [ "$RUN" -gt 0 ]; then<br />
echo already running<br />
exit 1<br />
fi<br />
rsync -az vger.rutgers.edu::cvs/CVSROOT/ChangeLog $HOME/ChangeLog<br />
sum1=`sum $HOME/ChangeLog`<br />
sum2=`sum /var/www/cvs/vger/CVSROOT/ChangeLog`<br />
if [ "$sum1" = "$sum2" ]; then<br />
echo nothing to do<br />
exit 0<br />
fi<br />
rsync -az &#8211;delete &#8211;force vger.rutgers.edu::cvs/ /var/www/cvs/vger/<br />
exit 0<br />
6、FAQ</p>
<p>Q：如何通过ssh进行rsync，而且无须输入密码？</p>
<p>A：可以通过以下几个步骤<br />
1. 通过ssh-keygen在server A上建立SSH keys，不要指定密码，你会在~/.ssh下看到identity和identity.pub文件</p>
<p>2. 在server B上的home目录建立子目录.ssh</p>
<p>3. 将A的identity.pub拷贝到server B上</p>
<p>4. 将identity.pub加到~[user b]/.ssh/authorized_keys</p>
<p>5. 于是server A上的A用户，可通过下面命令以用户B ssh到server B上了</p>
<p>e.g. ssh -l userB serverB</p>
<p>这样就使server A上的用户A就可以ssh以用户B的身份无需密码登陆到server B上了。<br />
Q：如何通过在不危害安全的情况下通过防火墙使用rsync?</p>
<p>A：解答如下：<br />
这通常有两种情况，一种是服务器在防火墙内，一种是服务器在防火墙外。无论哪种情况，通常还是使用ssh，这时最好新建一个备份用户，并且配置sshd仅允许这个用户通过RSA认证方式进入。如果服务器在防火墙内，则最好限定客户端的IP地址，拒绝其它所有连接。如果客户机在防火墙内，则可以简单允许防火墙打开TCP端口22的ssh外发连接就ok了。<br />
Q：我能将更改过或者删除的文件也备份上来吗？</p>
<p>A：当然可以：<br />
你可以使用如：rsync -other -options -backupdir = ./backup-2000-2-13 &#8230;这样的命令来实现。</p>
<p>这样如果源文件:/path/to/some/file.c改变了，那么旧的文件就会被移到./backup-2000-2-13/path/to/some/file.c，</p>
<p>这里这个目录需要自己手工建立起来<br />
Q：我需要在防火墙上开放哪些端口以适应rsync？</p>
<p>A：视情况而定<br />
rsync可以直接通过873端口的tcp连接传文件，也可以通过22端口的ssh来进行文件传递，但你也可以通过下列命令改变它的端口：<br />
rsync &#8211;port 8730 otherhost::</p>
<p>或者</p>
<p>rsync -e &#8216;ssh -p 2002&#8242; otherhost:<br />
Q：我如何通过rsync只复制目录结构，忽略掉文件呢？</p>
<p>A：rsync -av &#8211;include &#8216;*/&#8217; &#8211;exclude &#8216;*&#8217; source-dir dest-dir<br />
Q：为什么我总会出现”Read-only file system”的错误呢？</p>
<p>A：看看是否忘了设”read only = no”了<br />
Q：为什么我会出现<a href="mailto:%20@ERROR">&#8216;@ERROR</a>: invalid gid&#8217;的错误呢？</p>
<p>A：rsync使用时默认是用uid=nobody;gid=nobody来运行的，如果你的系统不存在nobody组的话，就会出现这样的错误，可以试试gid = nogroup或者其它<br />
Q：绑定端口873失败是怎么回事？</p>
<p>A：如果你不是以root权限运行这一守护进程的话，因为1024端口以下是特权端口，会出现这样的错误。你可以用&#8211;port参数来改变。<br />
Q：为什么我认证失败？</p>
<p>A：从你的命令行看来：<br />
你用的是：<br />
&gt; bash$ rsync -a 144.16.251.213::test test</p>
<p>&gt; Password:</p>
<p>&gt; @ERROR: auth failed on module test</p>
<p>&gt;</p>
<p>&gt; I dont understand this. Can somebody explain as to how to acomplish this.</p>
<p>&gt; All suggestions are welcome.</p>
<p>应该是没有以你的用户名登陆导致的问题，试试rsync -a <a href="mailto:max@144.16.251.213::test">max@144.16.251.213::test</a> test</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/webshelleechueeee.html" title="Webshell下破解计算机管理员密码">Webshell下破解计算机管理员密码</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (1)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eesoneeajaxeehuai.html" title="基于JSON的高级AJAX开发技术">基于JSON的高级AJAX开发技术</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/nginxderewriteguize.html" title="nginx的rewrite规则">nginx的rewrite规则</a> (1)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpzhongdememcachehanshukumemcachefunctions.html" title="PHP中的Memcache函数库（Memcache Functions）">PHP中的Memcache函数库（Memcache Functions）</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E9%9A%8F%E6%9C%BA%E6%95%B0%E6%9C%89%E5%A4%9A%E9%9A%8F%E6%9C%BA%EF%BC%9F.html" title="随机数有多随机？">随机数有多随机？</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/ie" title="ie" rel="tag">ie</a>, <a href="http://www.5bay.cn/tag/include" title="include" rel="tag">include</a>, <a href="http://www.5bay.cn/tag/mod" title="mod" rel="tag">mod</a>, <a href="http://www.5bay.cn/tag/path" title="path" rel="tag">path</a>, <a href="http://www.5bay.cn/tag/server" title="server" rel="tag">server</a>, <a href="http://www.5bay.cn/tag/web" title="web" rel="tag">web</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%88%A4%E6%96%AD" title="判断" rel="tag">判断</a>, <a href="http://www.5bay.cn/tag/%E5%A4%B1%E8%B4%A5" title="失败" rel="tag">失败</a>, <a href="http://www.5bay.cn/tag/%E5%AE%9E%E4%BE%8B" title="实例" rel="tag">实例</a>, <a href="http://www.5bay.cn/tag/%E5%AF%86%E7%A0%81" title="密码" rel="tag">密码</a>, <a href="http://www.5bay.cn/tag/%E5%B1%9E%E6%80%A7" title="属性" rel="tag">属性</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E6%90%9C%E7%B4%A2" title="搜索" rel="tag">搜索</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/tag/%E6%9B%B4%E6%96%B0" title="更新" rel="tag">更新</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/%E6%BA%90%E4%BB%A3%E7%A0%81" title="源代码" rel="tag">源代码</a>, <a href="http://www.5bay.cn/tag/%E7%89%88%E6%9C%AC" title="版本" rel="tag">版本</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/tag/%E7%B1%BB" title="类" rel="tag">类</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/tag/%E7%BD%91%E7%AB%99" title="网站" rel="tag">网站</a>, <a href="http://www.5bay.cn/tag/%E8%A1%A8" title="表" rel="tag">表</a>, <a href="http://www.5bay.cn/tag/%E8%AF%B4%E6%98%8E" title="说明" rel="tag">说明</a>, <a href="http://www.5bay.cn/tag/%E8%BF%9E%E6%8E%A5" title="连接" rel="tag">连接</a>, <a href="http://www.5bay.cn/tag/%E9%93%BE%E6%8E%A5" title="链接" rel="tag">链接</a>, <a href="http://www.5bay.cn/tag/%E9%94%99%E8%AF%AF" title="错误" rel="tag">错误</a>, <a href="http://www.5bay.cn/tag/%E9%95%9C%E5%83%8F" title="镜像" rel="tag">镜像</a>, <a href="http://www.5bay.cn/tag/%E9%9A%90%E8%97%8F" title="隐藏" rel="tag">隐藏</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/rsyncxiangjie.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>eAccelerator与memcache的区别与用途</title>
		<link>http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html</link>
		<comments>http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html#comments</comments>
		<pubDate>Sat, 22 May 2010 21:18:41 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[服务器构建&安全]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[函数]]></category>
		<category><![CDATA[区别]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[提速]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[类]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[连接]]></category>

		<guid isPermaLink="false">http://www.5bay.cn/?p=361</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>eAccelerator和memcache，是目前较为主流的两个可使用在PHP之中的缓存加速工具． eAccelerator专门为PHP开发，而memcache不仅仅用在PHP之中，其他所有的语言都可以使用． 　eAccelerator的主要功能：    1. 缓存PHP文件的执行代码：在被缓存的代码再次被调用时，将直接从内存读取，从而在很大程度了PHP运行的速度．    2. 提供了共享内存操作函数：用户可以将自己的常见非资源对像，保存到内存之中，并可以随时读取出来． 　memcache的主要功能： 　提供共享内存操作函数，可以保存和读取数据 　两者的共同点： 　共同点：都提供了共享内存操作函数，可以用来保存和读取自己的数据 　两者的区别： 　eAccelerator作为PHP的扩展库存在，那么仅在PHP运行时，可以操作和读写共享内存，一般情况，只能由操作共享内存的程序自己调用． 　同时，eAccelerator可以缓存PHP程序的执行代码，提升程序的调入和执行速度． 　memcache主要作为一个共享内存服务器，其PHP扩展库仅仅作为PHP到memcache的连接库存在，类似MySQL扩展库．因而，memcache可以完全脱离PHP，其共享的数据，可以被不同的程序调用． 　根据两者的不同，我们将他们使用在真真需要的地方： 　eAccelerator主要用于单机PHP提速，缓存中间数据．对于实时性高，但数据操作量小的情况下，非常实用． 　memcache用于分布式或者集群系统，多台服务器可以共享数据．对于实时性高，同时数据操作量大的情况下，非常实用． 相关博文2010年05月23日 -- mysql优化及全文搜索 (0)2010年07月26日 -- PHP和Socket简介 (0)2010年07月26日 -- php的文档句法(heredoc)]]></description>
			<content:encoded><![CDATA[<p>eAccelerator和memcache，是目前较为主流的两个可使用在PHP之中的缓存加速工具．</p>
<p>eAccelerator专门为PHP开发，而memcache不仅仅用在PHP之中，其他所有的语言都可以使用．</p>
<p>　eAccelerator的主要功能：<br />
   1. 缓存PHP文件的执行代码：在被缓存的代码再次被调用时，将直接从内存读取，从而在很大程度了PHP运行的速度．<br />
   2. 提供了共享内存操作函数：用户可以将自己的常见非资源对像，保存到内存之中，并可以随时读取出来．</p>
<p>　memcache的主要功能：<br />
　提供共享内存操作函数，可以保存和读取数据</p>
<p>　两者的共同点：<br />
　共同点：都提供了共享内存操作函数，可以用来保存和读取自己的数据</p>
<p>　两者的区别：<br />
　eAccelerator作为PHP的扩展库存在，那么仅在PHP运行时，可以操作和读写共享内存，一般情况，只能由操作共享内存的程序自己调用．<br />
　同时，eAccelerator可以缓存PHP程序的执行代码，提升程序的调入和执行速度．<br />
　memcache主要作为一个共享内存服务器，其PHP扩展库仅仅作为PHP到memcache的连接库存在，类似MySQL扩展库．因而，memcache可以完全脱离PHP，其共享的数据，可以被不同的程序调用．</p>
<p>　根据两者的不同，我们将他们使用在真真需要的地方：<br />
　eAccelerator主要用于单机PHP提速，缓存中间数据．对于实时性高，但数据操作量小的情况下，非常实用．<br />
　memcache用于分布式或者集群系统，多台服务器可以共享数据．对于实时性高，同时数据操作量大的情况下，非常实用．</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeecketee.html" title="PHP和Socket简介">PHP和Socket简介</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeefangeredoc.html" title="php的文档句法(heredoc)<<<和PHP字符串操作">php的文档句法(heredoc)<<<和PHP字符串操作</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpzhongdememcachehanshukumemcachefunctions.html" title="PHP中的Memcache函数库（Memcache Functions）">PHP中的Memcache函数库（Memcache Functions）</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpfengzhuangchangyongjavascriptweijsleiyibiankuaisudiaoyong.html" title="PHP封装常用Javascript为JS类以便快速调用">PHP封装常用Javascript为JS类以便快速调用</a> (1)</li><li>2011年06月29日 -- <a href="http://www.5bay.cn/game-development/zishenshejishitonyventricejiexishoujiyouxikaifadesigecengci.html" title="资深设计师Tony Ventrice解析手机游戏开发的四个层次">资深设计师Tony Ventrice解析手机游戏开发的四个层次</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeeeeeeeehuai.html" title="PHP对文本数据库的基本操作方法">PHP对文本数据库的基本操作方法</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/requireeecludexi.html" title="require和include的异同">require和include的异同</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeee.html" title="Ajax的工作原理">Ajax的工作原理</a> (1)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E5%A4%9A%E8%BF%9B%E7%A8%8B%E7%9A%84%E6%B8%B8%E6%88%8F%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E8%AE%A1.html" title="多进程的游戏服务器设计">多进程的游戏服务器设计</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aoeempirebakeebshell.html" title="帝国备份王(Empirebak)拿webshell">帝国备份王(Empirebak)拿webshell</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/cache" title="cache" rel="tag">cache</a>, <a href="http://www.5bay.cn/tag/mysql" title="mysql" rel="tag">mysql</a>, <a href="http://www.5bay.cn/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.5bay.cn/tag/sql" title="sql" rel="tag">sql</a>, <a href="http://www.5bay.cn/tag/%E4%BB%A3%E7%A0%81" title="代码" rel="tag">代码</a>, <a href="http://www.5bay.cn/tag/%E5%87%BD%E6%95%B0" title="函数" rel="tag">函数</a>, <a href="http://www.5bay.cn/tag/%E5%8C%BA%E5%88%AB" title="区别" rel="tag">区别</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E6%8F%90%E9%80%9F" title="提速" rel="tag">提速</a>, <a href="http://www.5bay.cn/tag/%E6%95%B0%E6%8D%AE" title="数据" rel="tag">数据</a>, <a href="http://www.5bay.cn/category/server-building" title="服务器构建&amp;安全" rel="tag">服务器构建&amp;安全</a>, <a href="http://www.5bay.cn/tag/%E7%A8%8B%E5%BA%8F" title="程序" rel="tag">程序</a>, <a href="http://www.5bay.cn/tag/%E7%B1%BB" title="类" rel="tag">类</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/tag/%E8%BF%9E%E6%8E%A5" title="连接" rel="tag">连接</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>网络游戏中的货币系统</title>
		<link>http://www.5bay.cn/game-development/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E8%B4%A7%E5%B8%81%E7%B3%BB%E7%BB%9F.html</link>
		<comments>http://www.5bay.cn/game-development/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E8%B4%A7%E5%B8%81%E7%B3%BB%E7%BB%9F.html#comments</comments>
		<pubDate>Fri, 17 Oct 2008 17:22:05 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[游戏开发]]></category>
		<category><![CDATA[人]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[自身]]></category>
		<category><![CDATA[设计]]></category>

		<guid isPermaLink="false">?p=300</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/game-development/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E8%B4%A7%E5%B8%81%E7%B3%BB%E7%BB%9F.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>现在 MMO 中经济系统往往是设计的关键。可能是网络游戏发展的时间较短，并没有形成系统的理论的缘故，我所了解的网络游戏中都没有特别好的处理好经济系统中货币的控制和流通问题。我们知道，货币只是一种经济活动中一种媒介，货币本身是没有价值的。但是，网络游戏中却很难体现这一点。系统对游戏直接的货币投放是不可控制的，虽然很多设计人员企图控制，但只是收效不同而已。大体上，大家都是用玩家的在线时间换取系统货币总量的增加，而用玩家自身的修炼回收掉货币。还有一小部分是用上税和赌博的形式回收掉。云风正在设计的游戏很不一样，是基于国家间的贸易和战争而不是个人修炼的。强调一种政府的管理，而非玩家自发组成的团体。我更希望做出一个战略感的游戏，而不是强调团体战术或者个人战斗。国家间的竞争正是一种整体经济实力的竞争，所以经济系统尤其重要。我不得不慎重仔细的考虑这一块，方案考虑了好几次，这次总算有点条理了。详细的策划案只能写在内部网络上，这里放出的只能是初期的一些构想，希望能给同好们一些启发。首先只考虑单个服务器（单个国家）的发展：作为单个服务器，在没有政府的前提下，我们可只提供以物易物的手段。npc 不买卖物品，所以不需要提供货币。很多游戏经济崩溃后，其实又回到了这种状态，那么，还不如只提供这种手段。既而当政府成立后，再启动货币系统。这个时候，系统发放给政府一笔货币，作为运作之用，之后系统不会平空给政府任何货币了。货币其实是没有价值的，在初期，我们也不可能发生进行周遍贸易或者掠夺，所以暂时把服务器看成一个独立封闭的状态。这笔货币就是作为一种经济活动的辅助工具使用，作为一个服务器玩家的群体，若想让整个服务器更快的发展，就应该让货币更频繁的流通。如果少部分玩家由于私心占有了大量货币不花出去，在宏观上会导致国家发展缓慢。货币怎样在城市建设中发挥作用？这里以盖一幢建筑为例：假设一幢建筑需要三天建成，每天需要 100 单位的木材。游戏系统强制木材只能从木材厂采购，而不能由玩家直接提供。木材的政府收购价格由政府的一个机构（由玩家担任）确定，但是不能任意指定。只能在一个范围做浮动，每天的浮动范围也被限制。收购价一旦定下来，货币先支付给木材厂，第二天，如果木材厂中有指定数量的木材，则强制收购；如果没有达到限定数量的木材，则延期。木材提供请求将被放入队列，队列满的时候，不能再接受预订请求。对于木材厂，它本身拥有一定大小的现金库保存流动资金。每天木材厂可以在定额范围内向玩家征集木材（即木材厂的加工量是被限制的），价格由木材厂主根据现金存量标价。木材逐个单位的从玩家手头收购，每天的第一单位木材价格先被强制定为前一天收盘价，接着并允许木材厂主对其在小范围浮动。木材厂主每天注入一定数量的总金额，一旦这笔资金消耗干净，则不能再收购木材。每天可按一定时间周期（比如一小时或半小时）调整一次价格。如果一个时间单位没有人提供木材，木材价格会增长一个小幅度。在一个时间单位内提供超过一个单位的木材，从第2单位起，价格逐步下降。这个做法是让商品的价格一定程度上受到市场的影响。通过以上流程，可以将政府的货币转移到玩家身上。玩家便可以用货币为媒介做交易了。同时，政府对玩家之间的经济活动征收交易税，以回收货币。其他回收货币的方法还有很多，比如传统的让玩家以提升自己能力的形式回收等。但是整个服务器内的总体货币在这个循环内不变。额外的，我们设定一种特定的资源，比如金矿。只有政府自己可以把金矿制成货币。金矿可以由政府这个环节变成货币。私人是被禁止制币的。通过这个途径，整个国家的货币总量可以被得到增加。而整个系统内的货币总量的消耗途径则是永久不再玩游戏的玩家带走的。以上只是一些大略的构想，单从这点设计上，一定存在许多矛盾和不完善。想完整实施还需要很多的设计，文章仅仅是给有兴趣的朋友一些启发罢了。 相关博文2008年10月17日 -- 游戏数值公式的表象与本质 (0)2008年10月17日 -- 思维的惯性 (0)2008年10月17日 -- 游戏中的货币 (0)2008年10月17日 -- 随机数有多随机？ (0)2008年10月17日 -- 游戏的帧率控制 (0)2008年10月17日 -- 游戏数值调整~ (0)2011年06月29日 -- 资深设计师Tony Ventrice解析手机游戏开发的四个层次 (0)2010年07月26日 -- AJAX应用程序开发七宗罪 (0)2010年07月26日 -- ajax的缺点 (0)2008年10月17日 -- 多进程的游戏服务器设计 (0)2008年10月17日 -- 服务器消息的广播 (0)2008年10月17日 -- 网络游戏的对时以及同步问题 (0)2008年10月17日 -- 贴图的合并 (0)2008年10月17日 -- 以人为本，美术资源的归档 (0)2008年10月17日 -- 游戏，一种奇怪的软件 (0) 标签Tags：人, 工具, [...]]]></description>
			<content:encoded><![CDATA[<p>现在 MMO 中经济系统往往是设计的关键。可能是网络游戏发展的时间较短，并没有形成系统的理论的缘故，我所了解的网络游戏中都没有特别好的处理好经济系统中货币的控制和流通问题。<br/><br/>我们知道，货币只是一种经济活动中一种媒介，货币本身是没有价值的。但是，网络游戏中却很难体现这一点。系统对游戏直接的货币投放是不可控制的，虽然很多设计人员企图控制，但只是收效不同而已。大体上，大家都是用玩家的在线时间换取系统货币总量的增加，而用玩家自身的修炼回收掉货币。还有一小部分是用上税和赌博的形式回收掉。<br/><br/>云风正在设计的游戏很不一样，是基于国家间的贸易和战争而不是个人修炼的。强调一种政府的管理，而非玩家自发组成的团体。我更希望做出一个战略感的游戏，而不是强调团体战术或者个人战斗。<span id="more-300"></span><br/><br/>国家间的竞争正是一种整体经济实力的竞争，所以经济系统尤其重要。我不得不慎重仔细的考虑这一块，方案考虑了好几次，这次总算有点条理了。<br/><br/>详细的策划案只能写在内部网络上，这里放出的只能是初期的一些构想，希望能给同好们一些启发。<br/><br/>首先只考虑单个服务器（单个国家）的发展：作为单个服务器，在没有政府的前提下，我们可只提供以物易物的手段。npc 不买卖物品，所以不需要提供货币。很多游戏经济崩溃后，其实又回到了这种状态，那么，还不如只提供这种手段。既而当政府成立后，再启动货币系统。<br/><br/>这个时候，系统发放给政府一笔货币，作为运作之用，之后系统不会平空给政府任何货币了。货币其实是没有价值的，在初期，我们也不可能发生进行周遍贸易或者掠夺，所以暂时把服务器看成一个独立封闭的状态。这笔货币就是作为一种经济活动的辅助工具使用，作为一个服务器玩家的群体，若想让整个服务器更快的发展，就应该让货币更频繁的流通。如果少部分玩家由于私心占有了大量货币不花出去，在宏观上会导致国家发展缓慢。<br/><br/>货币怎样在城市建设中发挥作用？这里以盖一幢建筑为例：<br/><br/>假设一幢建筑需要三天建成，每天需要 100 单位的木材。游戏系统强制木材只能从木材厂采购，而不能由玩家直接提供。木材的政府收购价格由政府的一个机构（由玩家担任）确定，但是不能任意指定。只能在一个范围做浮动，每天的浮动范围也被限制。收购价一旦定下来，货币先支付给木材厂，第二天，如果木材厂中有指定数量的木材，则强制收购；如果没有达到限定数量的木材，则延期。木材提供请求将被放入队列，队列满的时候，不能再接受预订请求。<br/><br/>对于木材厂，它本身拥有一定大小的现金库保存流动资金。每天木材厂可以在定额范围内向玩家征集木材（即木材厂的加工量是被限制的），价格由木材厂主根据现金存量标价。木材逐个单位的从玩家手头收购，每天的第一单位木材价格先被强制定为前一天收盘价，接着并允许木材厂主对其在小范围浮动。木材厂主每天注入一定数量的总金额，一旦这笔资金消耗干净，则不能再收购木材。每天可按一定时间周期（比如一小时或半小时）调整一次价格。如果一个时间单位没有人提供木材，木材价格会增长一个小幅度。在一个时间单位内提供超过一个单位的木材，从第2单位起，价格逐步下降。这个做法是让商品的价格一定程度上受到市场的影响。<br/><br/>通过以上流程，可以将政府的货币转移到玩家身上。玩家便可以用货币为媒介做交易了。同时，政府对玩家之间的经济活动征收交易税，以回收货币。其他回收货币的方法还有很多，比如传统的让玩家以提升自己能力的形式回收等。但是整个服务器内的总体货币在这个循环内不变。<br/><br/>额外的，我们设定一种特定的资源，比如金矿。只有政府自己可以把金矿制成货币。金矿可以由政府这个环节变成货币。私人是被禁止制币的。通过这个途径，整个国家的货币总量可以被得到增加。<br/><br/>而整个系统内的货币总量的消耗途径则是永久不再玩游戏的玩家带走的。<br/><br/>以上只是一些大略的构想，单从这点设计上，一定存在许多矛盾和不完善。想完整实施还需要很多的设计，文章仅仅是给有兴趣的朋友一些启发罢了。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%95%B0%E5%80%BC%E5%85%AC%E5%BC%8F%E7%9A%84%E8%A1%A8%E8%B1%A1%E4%B8%8E%E6%9C%AC%E8%B4%A8.html" title="游戏数值公式的表象与本质">游戏数值公式的表象与本质</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%80%9D%E7%BB%B4%E7%9A%84%E6%83%AF%E6%80%A7.html" title="思维的惯性">思维的惯性</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E8%B4%A7%E5%B8%81.html" title="游戏中的货币">游戏中的货币</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E9%9A%8F%E6%9C%BA%E6%95%B0%E6%9C%89%E5%A4%9A%E9%9A%8F%E6%9C%BA%EF%BC%9F.html" title="随机数有多随机？">随机数有多随机？</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E7%9A%84%E5%B8%A7%E7%8E%87%E6%8E%A7%E5%88%B6.html" title="游戏的帧率控制">游戏的帧率控制</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%95%B0%E5%80%BC%E8%B0%83%E6%95%B4%7E.html" title="游戏数值调整~">游戏数值调整~</a> (0)</li><li>2011年06月29日 -- <a href="http://www.5bay.cn/game-development/zishenshejishitonyventricejiexishoujiyouxikaifadesigecengci.html" title="资深设计师Tony Ventrice解析手机游戏开发的四个层次">资深设计师Tony Ventrice解析手机游戏开发的四个层次</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeaoe.html" title="AJAX应用程序开发七宗罪">AJAX应用程序开发七宗罪</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E5%A4%9A%E8%BF%9B%E7%A8%8B%E7%9A%84%E6%B8%B8%E6%88%8F%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E8%AE%A1.html" title="多进程的游戏服务器设计">多进程的游戏服务器设计</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%B6%88%E6%81%AF%E7%9A%84%E5%B9%BF%E6%92%AD.html" title="服务器消息的广播">服务器消息的广播</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F%E7%9A%84%E5%AF%B9%E6%97%B6%E4%BB%A5%E5%8F%8A%E5%90%8C%E6%AD%A5%E9%97%AE%E9%A2%98.html" title="网络游戏的对时以及同步问题">网络游戏的对时以及同步问题</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E8%B4%B4%E5%9B%BE%E7%9A%84%E5%90%88%E5%B9%B6.html" title="贴图的合并">贴图的合并</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E4%BB%A5%E4%BA%BA%E4%B8%BA%E6%9C%AC%EF%BC%8C%E7%BE%8E%E6%9C%AF%E8%B5%84%E6%BA%90%E7%9A%84%E5%BD%92%E6%A1%A3.html" title="以人为本，美术资源的归档">以人为本，美术资源的归档</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%EF%BC%8C%E4%B8%80%E7%A7%8D%E5%A5%87%E6%80%AA%E7%9A%84%E8%BD%AF%E4%BB%B6.html" title="游戏，一种奇怪的软件">游戏，一种奇怪的软件</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/%E4%BA%BA" title="人" rel="tag">人</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/tag/%E6%B8%B8%E6%88%8F" title="游戏" rel="tag">游戏</a>, <a href="http://www.5bay.cn/category/game-development" title="游戏开发" rel="tag">游戏开发</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/tag/%E8%87%AA%E8%BA%AB" title="自身" rel="tag">自身</a>, <a href="http://www.5bay.cn/tag/%E8%AE%BE%E8%AE%A1" title="设计" rel="tag">设计</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/game-development/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E8%B4%A7%E5%B8%81%E7%B3%BB%E7%BB%9F.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>贴图的合并</title>
		<link>http://www.5bay.cn/game-development/%E8%B4%B4%E5%9B%BE%E7%9A%84%E5%90%88%E5%B9%B6.html</link>
		<comments>http://www.5bay.cn/game-development/%E8%B4%B4%E5%9B%BE%E7%9A%84%E5%90%88%E5%B9%B6.html#comments</comments>
		<pubDate>Fri, 17 Oct 2008 17:20:01 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[游戏开发]]></category>
		<category><![CDATA[人]]></category>
		<category><![CDATA[图片]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[解决]]></category>
		<category><![CDATA[解决方法]]></category>

		<guid isPermaLink="false">?p=298</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/game-development/%E8%B4%B4%E5%9B%BE%E7%9A%84%E5%90%88%E5%B9%B6.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>3d 游戏会用到大量的帖图，许多显卡要求贴图的尺寸必须是2的整数次方。这样，许多贴图的边角都会被浪费掉。尤其是大量无关的小贴图，我们通常想把他们合并在一张贴图上，尽量充满整个区域。合并这些零碎贴图的算法，在学术上被称为排料问题。我尚未找到特别好的解决方法，所以这里就不展开写了。这里想讨论的是这些小贴图的管理。我们现在的思路是，在engine 的比较上的层次，不用关心需要用的贴图在哪里，在哪张图片上的哪个区域。这样做，就不用局限于相关的图放在一张物理的图片上，可以由工具任意分割打包组合。固然，不相干的贴图过于零碎的逻辑贴图分散在不同的物理图片上，会降低效率。但这个问题就和内存分配器的实现中，内存碎片的问题一样，是不可避免但却可以有诸多方法来改善的。其实 DirectX 本就充当了一个显存管理器的工作。我们做的只是在这种基于动态的管理模式上再加一层事前的开发期优化而已。实现的方法很简单，用一个文本文件描述另一个图片文件的区域即可。engine 只需要把这个文件当作一个逻辑贴图打开解析。至于物理图片文件的管理，交给资源管理模块即可。而这个文件的生成和管理，就得另写一个工具了。能写出优秀的图片自动组合工具固然好，如果没有也可以退而求其次，做一个可以给人像搭积木一样的拼图工具也可以。可以方便的让人来把零散的图片见缝插针的拼到一起，未尝不是一件趣事 相关博文2010年05月23日 -- 《高性能网站建设指南》读书笔记 (0)2008年10月17日 -- 服务器消息的广播 (0)2008年10月17日 -- 网络游戏中的货币系统 (0)2008年10月17日 -- 网络游戏的对时以及同步问题 (0)2008年10月17日 -- 以人为本，美术资源的归档 (0)2008年10月17日 -- 思维的惯性 (0)2008年10月17日 -- 游戏中的货币 (0)2008年10月17日 -- 游戏的帧率控制 (0)2008年10月17日 -- 游戏数值公式的表象与本质 (0)2011年06月29日 -- 资深设计师Tony Ventrice解析手机游戏开发的四个层次 (0)2010年07月28日 -- ASP防注入新方式，希望对大家是有用的 (0)2010年07月26日 -- 最令PHP初学者头痛的十四个问题 (0)2010年07月26日 -- 使用Ajax时的十个常犯的错误 (0)2010年07月26日 -- ajax的缺点 (0)2008年10月17日 -- 用四叉树管理散布在平面上的对象 (0) 标签Tags：人, 图片, [...]]]></description>
			<content:encoded><![CDATA[<p>3d 游戏会用到大量的帖图，许多显卡要求贴图的尺寸必须是2的整数次方。这样，许多贴图的边角都会被浪费掉。尤其是大量无关的小贴图，我们通常想把他们合并在一张贴图上，尽量充满整个区域。<br/><br/>合并这些零碎贴图的算法，在学术上被称为排料问题。我尚未找到特别好的解决方法，所以这里就不展开写了。这里想讨论的是这些小贴图的管理。<br/><br/>我们现在的思路是，在engine 的比较上的层次，不用关心需要用的贴图在哪里，在哪张图片上的哪个区域。这样做，就不用局限于相关的图放在一张物理的图片上，可以由工具任意分割打包组合。固然，不相干的贴图过于零碎的逻辑贴图分散在不同的物理图片上，会降低效率。但这个问题就和内存分配器的实现中，内存碎片的问题一样，是不可避免但却可以有诸多方法来改善的。<br/><br/>其实 DirectX 本就充当了一个显存管理器的工作。我们做的只是在这种基于动态的管理模式上再加一层事前的开发期优化而已。<br/><br/>实现的方法很简单，用一个文本文件描述另一个图片文件的区域即可。engine 只需要把这个文件当作一个逻辑贴图打开解析。至于物理图片文件的管理，交给资源管理模块即可。<br/><br/>而这个文件的生成和管理，就得另写一个工具了。能写出优秀的图片自动组合工具固然好，如果没有也可以退而求其次，做一个可以给人像搭积木一样的拼图工具也可以。可以方便的让人来把零散的图片见缝插针的拼到一起，未尝不是一件趣事 <img src='http://www.5bay.cn/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/gaoxingnengwangzhanjianshezhinandushubiji.html" title="《高性能网站建设指南》读书笔记">《高性能网站建设指南》读书笔记</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%B6%88%E6%81%AF%E7%9A%84%E5%B9%BF%E6%92%AD.html" title="服务器消息的广播">服务器消息的广播</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E8%B4%A7%E5%B8%81%E7%B3%BB%E7%BB%9F.html" title="网络游戏中的货币系统">网络游戏中的货币系统</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F%E7%9A%84%E5%AF%B9%E6%97%B6%E4%BB%A5%E5%8F%8A%E5%90%8C%E6%AD%A5%E9%97%AE%E9%A2%98.html" title="网络游戏的对时以及同步问题">网络游戏的对时以及同步问题</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E4%BB%A5%E4%BA%BA%E4%B8%BA%E6%9C%AC%EF%BC%8C%E7%BE%8E%E6%9C%AF%E8%B5%84%E6%BA%90%E7%9A%84%E5%BD%92%E6%A1%A3.html" title="以人为本，美术资源的归档">以人为本，美术资源的归档</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%80%9D%E7%BB%B4%E7%9A%84%E6%83%AF%E6%80%A7.html" title="思维的惯性">思维的惯性</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E8%B4%A7%E5%B8%81.html" title="游戏中的货币">游戏中的货币</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E7%9A%84%E5%B8%A7%E7%8E%87%E6%8E%A7%E5%88%B6.html" title="游戏的帧率控制">游戏的帧率控制</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%95%B0%E5%80%BC%E5%85%AC%E5%BC%8F%E7%9A%84%E8%A1%A8%E8%B1%A1%E4%B8%8E%E6%9C%AC%E8%B4%A8.html" title="游戏数值公式的表象与本质">游戏数值公式的表象与本质</a> (0)</li><li>2011年06月29日 -- <a href="http://www.5bay.cn/game-development/zishenshejishitonyventricejiexishoujiyouxikaifadesigecengci.html" title="资深设计师Tony Ventrice解析手机游戏开发的四个层次">资深设计师Tony Ventrice解析手机游戏开发的四个层次</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eeeeeeee.html" title="最令PHP初学者头痛的十四个问题">最令PHP初学者头痛的十四个问题</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeeeee.html" title="使用Ajax时的十个常犯的错误">使用Ajax时的十个常犯的错误</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxxuan.html" title="ajax的缺点">ajax的缺点</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E7%94%A8%E5%9B%9B%E5%8F%89%E6%A0%91%E7%AE%A1%E7%90%86%E6%95%A3%E5%B8%83%E5%9C%A8%E5%B9%B3%E9%9D%A2%E4%B8%8A%E7%9A%84%E5%AF%B9%E8%B1%A1.html" title="用四叉树管理散布在平面上的对象">用四叉树管理散布在平面上的对象</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/%E4%BA%BA" title="人" rel="tag">人</a>, <a href="http://www.5bay.cn/tag/%E5%9B%BE%E7%89%87" title="图片" rel="tag">图片</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/tag/%E6%B8%B8%E6%88%8F" title="游戏" rel="tag">游戏</a>, <a href="http://www.5bay.cn/category/game-development" title="游戏开发" rel="tag">游戏开发</a>, <a href="http://www.5bay.cn/tag/%E8%A7%A3%E5%86%B3" title="解决" rel="tag">解决</a>, <a href="http://www.5bay.cn/tag/%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95" title="解决方法" rel="tag">解决方法</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/game-development/%E8%B4%B4%E5%9B%BE%E7%9A%84%E5%90%88%E5%B9%B6.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>游戏数值公式的表象与本质</title>
		<link>http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%95%B0%E5%80%BC%E5%85%AC%E5%BC%8F%E7%9A%84%E8%A1%A8%E8%B1%A1%E4%B8%8E%E6%9C%AC%E8%B4%A8.html</link>
		<comments>http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%95%B0%E5%80%BC%E5%85%AC%E5%BC%8F%E7%9A%84%E8%A1%A8%E8%B1%A1%E4%B8%8E%E6%9C%AC%E8%B4%A8.html#comments</comments>
		<pubDate>Fri, 17 Oct 2008 16:49:23 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[游戏开发]]></category>
		<category><![CDATA[人]]></category>
		<category><![CDATA[函数]]></category>
		<category><![CDATA[判断]]></category>
		<category><![CDATA[属性]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[方法]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[系统]]></category>
		<category><![CDATA[表]]></category>
		<category><![CDATA[设计]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[错误]]></category>

		<guid isPermaLink="false">?p=285</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%95%B0%E5%80%BC%E5%85%AC%E5%BC%8F%E7%9A%84%E8%A1%A8%E8%B1%A1%E4%B8%8E%E6%9C%AC%E8%B4%A8.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>拿魔兽世界（后面全简写作 wow ）举例说事，恐怕是唯一不容易遭人非议的了。我们注意到， wow 之前有很多网络游戏，甚至暴雪之前也有一款很接近现代网游的游戏—— diablo 的 battle net 版，都采用了一种让玩家展现个性化角色的设计。那就是随着升级，为角色自由分配属性点，再由属性点影响角色的能力。我可以举出长长的例子证明这一点，甚至电脑 RPG 的鼻祖，D&#038;D ，也是有自由加点的设定的。虽然 D&#038;D 里玩家可以加的点很少，暴雪在 diablo 里加强了这个设计。为什么在这么多已有的网游中，大家都沿袭了这个设定，把它作为提供玩家个性化的必要手段时，暴雪绝然抛弃了它，把个性化转移到了天赋系统中。是为了创新吗？我不是暴雪的游戏设计师，我没有答案。但我们知道，暴雪从来不是一个以创新为名的游戏制作公司。而天赋树从外观上看，就是 diablo 中技能树的延续。熟悉 wow 的玩家可能会说，是为了平衡。没错，但这是表象。我们需要进一步看清本质。前段试玩了一个新出的网游，工作需要。可能是我已经厌倦了 wow ，对 wow like 的东西更提不起精神来。我试图说服自己，我觉得这个游戏比 wow 还无趣，是因为早先年打 wow 打累了。一丁点不如 wow 的地方都会被放大来看，甚至比 wow 做的好的，也会被忽略掉。在公式化的游戏进程里，我玩到了游戏设计者“体贴”玩家的地方，比如升级飞快，轻松的接交任务等等。但是让我能理解，又觉得不可理喻的地方是，游戏依然保留着“传统”MMORPG 的设定，那就是每次升级都可以自由分配属性点。亲身体验后，更加坚定了我的想法：自由分配属性点在大多数游戏中是一个极其鸡肋的设定。或许是大部分游戏设计师认为，我们要提供给玩家一些自由度，而用户接受了自由加点这个设定，那么这就是一个廉价稳定的方案，我们也要提供它，没什么坏处，不是吗？其实，大多数用户根本不知道他们真的需要什么，只是服务提供商对他们反复强化一些东西，这些东西反过来才成了必须品。在软件行业中，这样的例子比比皆是。“不要听用户的”是我去年听到的深合我意的一个声音。当然，千万不要曲解这句话。我从来没有否认过，用户调查，市场分析，等等这些对于游戏开发的重要性。作为游戏设计人，我们到底想提供给用户多少自由度，怎样的自由度，这些都必须在设计时考虑在内。我们不是神，可以创造出简洁的自然法则构建出如此复杂的世界，任其发展。而且上百亿年了，其中的智能生物都无法完全了解这些规则。说回属性点自由分配的设计，看似自由，比如一个小角色从1 级到满级可能得到上十点甚至上百点自由分配组合在 4 到 6 个不同的属性上。实际上，真正有用的组合方式寥寥无几。有天真的设计师，指望玩家可以摸索出超出自己想象的自由属性点组合方案吗？如果真的出现了，那么对游戏平衡一定是一个灾难。如果你有信心对你没有预料到的东西做出合理的判断（不至于引起灾难），那么只有一种可能，那就是你做出了数值背后更深层次的规律的探索。可惜，大部分设计师没有这么做。总结一下。如果你给了玩家一些自由度，让他们自由组合一些东西，达到个性化的目的，那么在设计阶段，作为设计师的你，就一定要全面列出所有的组合可能，并一一对其审视。几十上百个的属性点自由分配的组合方案，从绝对数字上说实在是太大了。没有人会一一排到纸上演算。实际上也没有这个必要，因为大多数组合间是有规律的，不至于把量变堆积为质变。大量的组合方案在对玩家来说都是无意义的，没有人会那么组合，除非他犯错误，否则一定能找到一个达到他期望目的（PvP PvE 或者别的目的）的更优解。从我信奉的 KISS 哲学上看，允许这么多理论上的属性点组合方案本身就是一个错误。如果我们希望玩家有 10 种个性化方案，就应该用最少的元素提供出 10 种这个数量级的变化规则。而不是提供上千种，让玩家从中选出 10 种。网络游戏中，提供自由度而存在的规则和设定不是为了考验玩家的智力（有时连智力都不需要，只需要机械性的忍受力）而存在的。我相信很多人在接触一款新游戏时，都有过和我一样的迷茫：不知道升级后点该怎么加，只是无谓的犹豫不决，或是干脆一古脑把点全加在最需要的方面（比如物理攻击职业把点全堆在力量上）。再来看看，大家沿袭最多的 MMO 系统，还是暴雪的——装备系统。很多玩家迷恋于装备上 +20 力量，+10 敏捷这些属性点加成。我想大家在开发网游的时候，也自然而然的把这个系统做进产品里去了吧。提一个问题：为了暴雪在做的时候，不把 [...]]]></description>
			<content:encoded><![CDATA[<p>拿魔兽世界（后面全简写作 wow ）举例说事，恐怕是唯一不容易遭人非议的了。我们注意到， wow 之前有很多网络游戏，甚至暴雪之前也有一款很接近现代网游的游戏—— diablo 的 battle net 版，都采用了一种让玩家展现个性化角色的设计。那就是随着升级，为角色自由分配属性点，再由属性点影响角色的能力。<br/><br/>我可以举出长长的例子证明这一点，甚至电脑 RPG 的鼻祖，D&#038;D ，也是有自由加点的设定的。虽然 D&#038;D 里玩家可以加的点很少，暴雪在 diablo 里加强了这个设计。<br/><br/>为什么在这么多已有的网游中，大家都沿袭了这个设定，把它作为提供玩家个性化的必要手段时，暴雪绝然抛弃了它，把个性化转移到了天赋系统中。是为了创新吗？我不是暴雪的游戏设计师，我没有答案。但我们知道，暴雪从来不是一个以创新为名的游戏制作公司。而天赋树从外观上看，就是 diablo 中技能树的延续。<span id="more-285"></span><br/><br/>熟悉 wow 的玩家可能会说，是为了平衡。没错，但这是表象。我们需要进一步看清本质。<br/><br/>前段试玩了一个新出的网游，工作需要。可能是我已经厌倦了 wow ，对 wow like 的东西更提不起精神来。我试图说服自己，我觉得这个游戏比 wow 还无趣，是因为早先年打 wow 打累了。一丁点不如 wow 的地方都会被放大来看，甚至比 wow 做的好的，也会被忽略掉。<br/><br/>在公式化的游戏进程里，我玩到了游戏设计者“体贴”玩家的地方，比如升级飞快，轻松的接交任务等等。但是让我能理解，又觉得不可理喻的地方是，游戏依然保留着“传统”MMORPG 的设定，那就是每次升级都可以自由分配属性点。<br/><br/>亲身体验后，更加坚定了我的想法：自由分配属性点在大多数游戏中是一个极其鸡肋的设定。<br/><br/>或许是大部分游戏设计师认为，我们要提供给玩家一些自由度，而用户接受了自由加点这个设定，那么这就是一个廉价稳定的方案，我们也要提供它，没什么坏处，不是吗？<br/><br/>其实，大多数用户根本不知道他们真的需要什么，只是服务提供商对他们反复强化一些东西，这些东西反过来才成了必须品。在软件行业中，这样的例子比比皆是。“不要听用户的”是我去年听到的深合我意的一个声音。当然，千万不要曲解这句话。我从来没有否认过，用户调查，市场分析，等等这些对于游戏开发的重要性。<br/><br/>作为游戏设计人，我们到底想提供给用户多少自由度，怎样的自由度，这些都必须在设计时考虑在内。我们不是神，可以创造出简洁的自然法则构建出如此复杂的世界，任其发展。而且上百亿年了，其中的智能生物都无法完全了解这些规则。<br/><br/>说回属性点自由分配的设计，看似自由，比如一个小角色从1 级到满级可能得到上十点甚至上百点自由分配组合在 4 到 6 个不同的属性上。实际上，真正有用的组合方式寥寥无几。有天真的设计师，指望玩家可以摸索出超出自己想象的自由属性点组合方案吗？如果真的出现了，那么对游戏平衡一定是一个灾难。<br/><br/>如果你有信心对你没有预料到的东西做出合理的判断（不至于引起灾难），那么只有一种可能，那就是你做出了数值背后更深层次的规律的探索。可惜，大部分设计师没有这么做。<br/><br/>总结一下。如果你给了玩家一些自由度，让他们自由组合一些东西，达到个性化的目的，那么在设计阶段，作为设计师的你，就一定要全面列出所有的组合可能，并一一对其审视。<br/><br/>几十上百个的属性点自由分配的组合方案，从绝对数字上说实在是太大了。没有人会一一排到纸上演算。实际上也没有这个必要，因为大多数组合间是有规律的，不至于把量变堆积为质变。大量的组合方案在对玩家来说都是无意义的，没有人会那么组合，除非他犯错误，否则一定能找到一个达到他期望目的（PvP PvE 或者别的目的）的更优解。<br/><br/>从我信奉的 KISS 哲学上看，允许这么多理论上的属性点组合方案本身就是一个错误。如果我们希望玩家有 10 种个性化方案，就应该用最少的元素提供出 10 种这个数量级的变化规则。而不是提供上千种，让玩家从中选出 10 种。网络游戏中，提供自由度而存在的规则和设定不是为了考验玩家的智力（有时连智力都不需要，只需要机械性的忍受力）而存在的。<br/><br/>我相信很多人在接触一款新游戏时，都有过和我一样的迷茫：不知道升级后点该怎么加，只是无谓的犹豫不决，或是干脆一古脑把点全加在最需要的方面（比如物理攻击职业把点全堆在力量上）。<br/><br/>再来看看，大家沿袭最多的 MMO <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" class="st_tag internal_tag" rel="tag" title="标签 系统 下的日志">系统</a>，还是暴雪的——装备系统。很多玩家迷恋于装备上 +20 力量，+10 敏捷这些属性点加成。<br/><br/>我想大家在开发网游的时候，也自然而然的把这个系统做进产品里去了吧。<br/><br/>提一个问题：为了暴雪在做的时候，不把 +20 点力量直接写成 + XXX 点伤害力呢？这样玩家不就可以直接知道这个东西对他有什么好处了。<br/><br/>在 diablo 的年代，属性点意味着高级技能学习的先决条件；而 wow 中，同样的属性点，对于不同职业的实际效果反应是不一样的。比如敏捷可以增加盗贼的攻击力，而对战士则没有这样的效果。即使是同样依赖力量增加战斗力的职业，一点力量意味的伤害力的增强也是不同的。<br/><br/>所以，本质上，wow 中属性点到实际伤害计算公式中参量的变换，是为同一装备对不同职业的效能差异服务的。如果 wow 中，每个职业都用他们各自专有的装备，互不影响，那么，属性点的设计就是多余的。至少没有必要展现给玩家看，只让它作为设计战斗公式时的辅助工具就够了。<br/><br/>几年前，我曾经跟一个同事争论过一些游戏数值设定的方法。我坚持认为，一切都是数学公式，我们在设计时完全可以用 A B C D E 代替我们想要的东西，甚至一些公式也不用先定好具体函数是什么，而只需要根据最终的需要反过来推导。反正最终都是一些初等函数的变换，不可能跳出大框价。<br/><br/>但是很多设计师总期望先从现实中或是小说设定中找到对应物，非搞清楚为什么力量影响攻击力，根骨导致 HP 总量更长。那些名词到底是什么更为重要。以此可以展开更多的想象。<br/><br/>我说的名词还包括，“法师”、“战士”、“盗贼”、“牧师”这些……<br/><br/>最近我自己在做数值设定了，亲身感受后，果然合适的名词的确能辅助设计。没错，我们总需要借助一些更有意义的词来在头脑中建立起概念。但是，最终我也发现，一旦能克服对这些名词的依赖，纯数学的构建出基本的关系，无偏袒的，只为了数字上的平衡和变化去设计整体的框架。后期再根据需要找到合适的词并套入系统，以此展开细节上的联想，效果可能更好。更能帮助我们跳出玩过的前人的总总游戏的框架，找到新的东西。</p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E9%9A%8F%E6%9C%BA%E6%95%B0%E6%9C%89%E5%A4%9A%E9%9A%8F%E6%9C%BA%EF%BC%9F.html" title="随机数有多随机？">随机数有多随机？</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E7%9A%84%E5%B8%A7%E7%8E%87%E6%8E%A7%E5%88%B6.html" title="游戏的帧率控制">游戏的帧率控制</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E8%A7%92%E8%89%B2%E5%8A%A8%E4%BD%9C%E6%8E%A7%E5%88%B6%E6%8E%A5%E5%8F%A3%E7%9A%84%E8%AE%BE%E8%AE%A1.html" title="角色动作控制接口的设计">角色动作控制接口的设计</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/phpeezhanchang.html" title="PHP安全之数据过滤">PHP安全之数据过滤</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%B6%88%E6%81%AF%E7%9A%84%E5%B9%BF%E6%92%AD.html" title="服务器消息的广播">服务器消息的广播</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E8%B4%A7%E5%B8%81%E7%B3%BB%E7%BB%9F.html" title="网络游戏中的货币系统">网络游戏中的货币系统</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E8%B4%A7%E5%B8%81.html" title="游戏中的货币">游戏中的货币</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%95%B0%E5%80%BC%E8%B0%83%E6%95%B4%7E.html" title="游戏数值调整~">游戏数值调整~</a> (0)</li><li>2011年06月29日 -- <a href="http://www.5bay.cn/game-development/zishenshejishitonyventricejiexishoujiyouxikaifadesigecengci.html" title="资深设计师Tony Ventrice解析手机游戏开发的四个层次">资深设计师Tony Ventrice解析手机游戏开发的四个层次</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/peeeeee.html" title="深入探讨PHP中的内存管理问题">深入探讨PHP中的内存管理问题</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpzhongdememcachehanshukumemcachefunctions.html" title="PHP中的Memcache函数库（Memcache Functions）">PHP中的Memcache函数库（Memcache Functions）</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E7%BD%91%E7%BB%9C%E6%B8%B8%E6%88%8F%E7%9A%84%E5%AF%B9%E6%97%B6%E4%BB%A5%E5%8F%8A%E5%90%8C%E6%AD%A5%E9%97%AE%E9%A2%98.html" title="网络游戏的对时以及同步问题">网络游戏的对时以及同步问题</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%EF%BC%8C%E4%B8%80%E7%A7%8D%E5%A5%87%E6%80%AA%E7%9A%84%E8%BD%AF%E4%BB%B6.html" title="游戏，一种奇怪的软件">游戏，一种奇怪的软件</a> (0)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/tag/%E4%BA%BA" title="人" rel="tag">人</a>, <a href="http://www.5bay.cn/tag/%E5%87%BD%E6%95%B0" title="函数" rel="tag">函数</a>, <a href="http://www.5bay.cn/tag/%E5%88%A4%E6%96%AD" title="判断" rel="tag">判断</a>, <a href="http://www.5bay.cn/tag/%E5%B1%9E%E6%80%A7" title="属性" rel="tag">属性</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E6%96%B9%E6%B3%95" title="方法" rel="tag">方法</a>, <a href="http://www.5bay.cn/tag/%E6%B8%B8%E6%88%8F" title="游戏" rel="tag">游戏</a>, <a href="http://www.5bay.cn/category/game-development" title="游戏开发" rel="tag">游戏开发</a>, <a href="http://www.5bay.cn/tag/%E7%B3%BB%E7%BB%9F" title="系统" rel="tag">系统</a>, <a href="http://www.5bay.cn/tag/%E8%A1%A8" title="表" rel="tag">表</a>, <a href="http://www.5bay.cn/tag/%E8%AE%BE%E8%AE%A1" title="设计" rel="tag">设计</a>, <a href="http://www.5bay.cn/tag/%E8%BD%AF%E4%BB%B6" title="软件" rel="tag">软件</a>, <a href="http://www.5bay.cn/tag/%E9%94%99%E8%AF%AF" title="错误" rel="tag">错误</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%95%B0%E5%80%BC%E5%85%AC%E5%BC%8F%E7%9A%84%E8%A1%A8%E8%B1%A1%E4%B8%8E%E6%9C%AC%E8%B4%A8.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP常用函数表（新手们的好工具）</title>
		<link>http://www.5bay.cn/network-programming/asp/asp%E5%B8%B8%E7%94%A8%E5%87%BD%E6%95%B0%E8%A1%A8%EF%BC%88%E6%96%B0%E6%89%8B%E4%BB%AC%E7%9A%84%E5%A5%BD%E5%B7%A5%E5%85%B7%EF%BC%89.html</link>
		<comments>http://www.5bay.cn/network-programming/asp/asp%E5%B8%B8%E7%94%A8%E5%87%BD%E6%95%B0%E8%A1%A8%EF%BC%88%E6%96%B0%E6%89%8B%E4%BB%AC%E7%9A%84%E5%A5%BD%E5%B7%A5%E5%85%B7%EF%BC%89.html#comments</comments>
		<pubDate>Fri, 09 Feb 2007 19:34:16 +0000</pubDate>
		<dc:creator>江小邪</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[常用函数]]></category>
		<category><![CDATA[新手]]></category>
		<category><![CDATA[表]]></category>

		<guid isPermaLink="false">?p=197</guid>
		<description><![CDATA[<a href="http://www.5bay.cn/network-programming/asp/asp%E5%B8%B8%E7%94%A8%E5%87%BD%E6%95%B0%E8%A1%A8%EF%BC%88%E6%96%B0%E6%89%8B%E4%BB%AC%E7%9A%84%E5%A5%BD%E5%B7%A5%E5%85%B7%EF%BC%89.html"><img align="left" hspace="5" width="150" height="150" src="http://www.5bay.cn/wp-content/plugins/thumbnail-for-excerpts/tfe_no_thumb.png" class="alignleft wp-post-image tfe" alt="" title="" /></a>Array() 函数返回一个数组 表达式 Array(list) 允许数据类型: 字符，数字均可 实例： &#60;%Dim myArray()For i = 1 to 7Redim Preserve myArray(i)myArray(i) = WeekdayName(i)Next%&#62; 返回结果: 建立了一个包含7个元素的数组myArraymyArray(&#34;Sunday&#34;,&#34;Monday&#34;, &#8230; &#8230; &#34;Saturday&#34;) CInt() 函数将一个表达式转化为数字类型 表达式 CInt(expression)允许数据类型: 任何有效的字符均可(不大于32767)实例： &#60;%f = &#34;234&#34;response.write cINT(f) + 2%&#62; 返回结果: 236转化字符&#34;234&#34;为数字&#34;234&#34;，如果字符串为空，则返回0值 CreateObject() 函数建立和返回一个已注册的ACTIVEX组件的实例。 表达式 CreateObject(objName) 允许数据类型: objName 是任何一个有效、已注册的ACTIVEX组件的名字. 实例： &#60;%Set con = Server.CreateObject(&#34;ADODB.Connection&#34;)%&#62; CStr() 函数转化一个表达式为字符串. 表达式 CStr(expression) 允许数据类型: expression 是任何有效的表达式。 [...]]]></description>
			<content:encoded><![CDATA[<p>Array() <br/>函数返回一个数组 <br/>表达式 Array(list) <br/>允许数据类型: 字符，数字均可 <br/><a href="http://www.5bay.cn/tag/%E5%AE%9E%E4%BE%8B" class="st_tag internal_tag" rel="tag" title="标签 实例 下的日志">实例</a>： &lt;%<br/>Dim myArray()<br/>For i = 1 to 7<br/>Redim Preserve myArray(i)<br/>myArray(i) = WeekdayName(i)<br/>Next<br/>%&gt; <br/>返回结果: 建立了一个包含7个元素的数组myArray<br/>myArray(&quot;Sunday&quot;,&quot;Monday&quot;, &#8230; &#8230; &quot;Saturday&quot;) <br/><br/>CInt() <br/>函数将一个表达式转化为数字类型 <br/>表达式 CInt(expression)<br/>允许数据类型: 任何有效的字符均可(不大于32767)<br/>实例： &lt;%<br/>f = &quot;234&quot;<br/>response.write cINT(f) + 2<br/>%&gt; <br/>返回结果: 236<br/>转化字符&quot;234&quot;为数字&quot;234&quot;，如果字符串为空，则返回0值 <br/><br/>CreateObject() <br/>函数建立和返回一个已注册的ACTIVEX组件的实例。 <br/>表达式 CreateObject(objName) <br/>允许数据类型: objName 是任何一个有效、已注册的ACTIVEX组件的名字. <br/>实例： &lt;%<br/>Set con = <a href="http://www.5bay.cn/tag/server" class="st_tag internal_tag" rel="tag" title="标签 server 下的日志">Server</a>.CreateObject(&quot;ADODB.Connection&quot;)<br/>%&gt; <br/><span id="more-197"></span><br/>CStr() <br/>函数转化一个表达式为字符串. <br/>表达式 CStr(expression) <br/>允许数据类型: expression 是任何有效的表达式。 <br/>实例： &lt;%<br/>s = 3 + 2<br/>response.write &quot;The 返回结果 is: &quot; &amp; cStr(s)<br/>%&gt; <br/>返回结果: 转化数字“5”为字符“5”。 <br/><br/>Date() <br/>函数返回当前系统日期. <br/>表达式 Date() <br/>允许数据类型: None. <br/>实例： &lt;%=Date%&gt; <br/>返回结果: 9/9/00 <br/><br/>DateAdd() <br/>函数返回一个被改变了的日期。 <br/>表达式 DateAdd(timeinterval,number,date) <br/>允许数据类型:<br/>timeinterval is the time interval to add; <br/>number is amount of time intervals to add; <br/>and date is the starting date. <br/>实例： &lt;%<br/>currentDate = #9/9/00#<br/>newDate = DateAdd(&quot;m&quot;,3,currentDate)<br/>response.write newDate<br/>%&gt;<br/>&lt;%<br/>currentDate = #12:34:45 PM#<br/>newDate = DateAdd(&quot;h&quot;,3,currentDate)<br/>response.write newDate<br/>%&gt; <br/>返回结果: 9/9/00<br/>3:34:45 PM<br/>&quot;m&quot; = &quot;month&quot;;<br/>&quot;d&quot; = &quot;day&quot;;<br/>If currentDate is in time format then,<br/>&quot;h&quot; = &quot;hour&quot;; <br/>&quot;s&quot; = &quot;second&quot;; <br/><br/>DateDiff() <br/>函数返回两个日期之间的差值 。 <br/>表达式 DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]]) <br/>允许数据类型: timeinterval 表示相隔时间的类型，如“M“表示“月”。 <br/>实例： &lt;%<br/>fromDate = #9/9/00#<br/>toDate = #1/1/2000#<br/>response.write &quot;There are &quot; &amp; _<br/>DateDiff(&quot;d&quot;,fromDate,toDate) &amp; _<br/>&quot; days to millenium from 9/9/00.&quot;<br/>%&gt; <br/>返回结果: 从9/9/00 到2000年还有 150 天. <br/><br/>Day() <br/>函数返回一个月的第几日 . <br/>表达式 Day(date) <br/>允许数据类型: date 是任何有效的日期。 <br/>实例： &lt;%=Day(#9/9/00#)%&gt; <br/>返回结果: 9 <br/><br/>formatCurrency() <br/>函数返回表达式，此表达式已被格式化为货币值 <br/>表达式 formatCurrency(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) <br/>允许数据类型: Digit 指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置; LeadingDigit 三态常数，指示是否显示小数值小数点前面的零。 <br/>实例： &lt;%=formatCurrency(34.3456)%&gt; <br/>返回结果: $34.35 <br/><br/>formatDateTime() <br/>函数返回表达式，此表达式已被格式化为日期或时间 <br/>表达式 formatDateTime(Date, [, Namedformat]) <br/>允许数据类型: Namedformat 指示所使用的日期/时间格式的数值，如果省略，则使用 vbGeneralDate. <br/>实例： &lt;%=formatDateTime(&quot;09/9/00&quot;, vbLongDate)%&gt; <br/>返回结果: Sunday, September 09, 2000<br/><br/>formatNumber() <br/>函数返回表达式，此表达式已被格式化为数值. <br/>表达式 formatNumber(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) <br/>允许数据类型: Digit 指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置。; LeadingDigit i指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置。; Paren 指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置。; GroupDigit i指示小数点右侧显示位数的数值。默认值为 -1，指示使用的是计算机的区域设置。. [Page]<br/>实例： &lt;%=formatNumber(45.324567, 3)%&gt; <br/>返回结果: 45.325 <br/><br/>formatPercent() <br/>函数返回表达式，此表达式已被格式化为尾随有 % 符号的百分比（乘以 100 ）。 (%) <br/>表达式 formatPercent(Expression [, Digit [, LeadingDigit [, Paren [, GroupDigit]]]]) <br/>允许数据类型: 同上. <br/>实例： &lt;%=formatPercent(0.45267, 3)%&gt; <br/>返回结果: 45.267% <br/><br/>Hour() <br/>函数以24时返回小时数. <br/>表达式 Hour(time) <br/>允许数据类型: <br/>实例： &lt;%=Hour(#4:45:34 PM#)%&gt; <br/>返回结果: 16<br/>(Hour has been converted to 24-hour system) <br/><br/>Instr() <br/>函数返回字符或字符串在另一个字符串中第一次出现的位置. <br/>表达式 Instr([start, ] strToBeSearched, strSearchFor [, compare]) <br/>允许数据类型: Start为搜索的起始值，strToBeSearched接受搜索的字符串 strSearchFor要搜索的字符.compare比较方式（详细见ASP常数） <br/>实例： &lt;%<br/>strText = &quot;This is a test!!&quot;<br/>pos = Instr(strText, &quot;a&quot;)<br/>response.write pos<br/>%&gt; <br/>返回结果: 9 <br/><br/>InstrRev() <br/>函数同上，只是从字符串的最后一个搜索起 <br/>表达式 InstrRev([start, ] strToBeSearched, strSearchFor [, compare]) <br/>允许数据类型: 同上. <br/>实例： &lt;%<br/>strText = &quot;This is a test!!&quot;<br/>pos = InstrRev(strText, &quot;s&quot;)<br/>response.write pos<br/>%&gt; <br/>返回结果: 13<br/><br/>Int() <br/>函数返回数值类型,不四舍五入。 <br/>表达式 Int(number) <br/>允许数据类型: <br/>实例： &lt;%=INT(32.89)%&gt; <br/>返回结果: 32 <br/><br/>IsArray() <br/>函数判断一对象是否为数组，返回布尔值 . <br/>表达式 IsArray(name) <br/>实例： &lt;%<br/>strTest = &quot;Test!&quot;<br/>response.write IsArray(strTest)<br/>%&gt; <br/>返回结果: False <br/><br/>IsDate() <br/>函数判断一对象是否为日期，返回布尔值 <br/>表达式 IsDate(expression) <br/>实例： &lt;%<br/>strTest = &quot;9/4/2000&quot;<br/>response.write IsDate(strTest)<br/>%&gt; <br/>返回结果: True <br/><br/>IsEmpty() <br/>函数判断一对象是否初始化，返回布尔值. <br/>表达式 IsEmpty(expression) <br/>实例： &lt;%<br/>Dim i<br/>response.write IsEmpty(i)<br/>%&gt; <br/>返回结果: True <br/><br/>IsNull() <br/>函数判断一对象是否为空，返回布尔值. <br/>表达式 IsNull(expression) <br/>实例： &lt;%<br/>Dim i<br/>response.write IsNull(i)<br/>%&gt; <br/>返回结果: False <br/><br/>IsNumeric() <br/>函数判断一对象是否为数字，返回布尔值. <br/>表达式 IsNumeric(expression) <br/>实例： &lt;%<br/>i = &quot;345&quot;<br/>response.write IsNumeric(i)<br/>%&gt; <br/>返回结果: True<br/>就算数字加了引号，ASP还是认为它是数字。 <br/><br/>IsObject() <br/>函数判断一对象是否为对象，返回布尔值. <br/>表达式 IsObject(expression) <br/>实例： &lt;%<br/>Set con = Server.CreateObject(&quot;ADODB.Connection&quot;)<br/>response.write IsObject(con)<br/>%&gt; <br/>返回结果: True <br/><br/>LBound() <br/>函数返回指定数组维的最小可用下标. <br/>表达式 Lbound(arrayname [, dimension]) <br/>实例： &lt;%<br/>i = Array(&quot;Monday&quot;,&quot;Tuesday&quot;,&quot;Wednesday&quot;)<br/>response.write LBound(i)<br/>%&gt; <br/>返回结果: 0 <br/><br/>LCase() <br/><a href="http://www.5bay.cn/tag/%E5%87%BD%E6%95%B0" class="st_tag internal_tag" rel="tag" title="标签 函数 下的日志">函数</a> 返回字符串的小写形式 <br/>表达式 Lcase(string) <br/>实例： &lt;%<br/>strTest = &quot;This is a test!&quot;<br/>response.write LCase(strTest)<br/>%&gt; <br/>返回结果: this is a test! <br/><br/>Left() <br/>函数返回字符串左边第length个字符以前的字符（含第length个字符). <br/>表达式 Left(string, length) <br/>实例： &lt;%<br/>strTest = &quot;This is a test!&quot;<br/>response.write Left(strTest, 3)<br/>%&gt; <br/>返回结果: Thi <br/><br/>Len() <br/>函数返回字符串的长度. <br/>表达式 Len(string &#124; varName) <br/>实例： &lt;%<br/>strTest = &quot;This is a test!&quot;<br/>response.write Len(strTest)<br/>%&gt; <br/>返回结果: 15 <br/><br/>LTrim() <br/>函数去掉字符串左边的空格. <br/>表达式 LTrim(string) <br/>实例： &lt;%<br/>strTest = &quot; This is a test!&quot;<br/>response.write LTrim(strTest)<br/>%&gt; <br/>返回结果: This is a test! <br/><br/>Mid() <br/>函数返回特定长度的字符串(从start开始,长度为length). [Page]<br/>表达式 Mid(string, start [, length]) <br/>实例： &lt;%<br/>strTest = &quot;This is a test! Today is Monday.&quot;<br/>response.write Mid(strTest, 17, 5)<br/>%&gt; <br/>返回结果: Today <br/><br/>Minute() <br/>函数返回时间的分钟. <br/>表达式 Minute(time) <br/>实例： &lt;%=Minute(#12:45:32 PM#)%&gt; <br/>返回结果: 45 <br/><br/>Month() <br/>函数返回日期. <br/>表达式 Month(date) <br/>实例： &lt;%=Month(#08/04/99#)%&gt; <br/>返回结果: 8 <br/><br/>MonthName() <br/>函数返回指定月份<br/>表达式 MonthName(month, [, Abb]) <br/>实例： &lt;%=MonthName(Month(#08/04/99#))%&gt; <br/>返回结果: August <br/><br/>Now() <br/>函数返回系统时间 <br/>表达式 Now() <br/>实例： &lt;%=Now%&gt; <br/>返回结果: 9/9/00 9:30:16 AM <br/><br/>Right() <br/>函数返回字符串右边第length个字符以前的字符（含第length个字符). <br/>表达式 Right(string, length) <br/>实例： &lt;% <br/>strTest = &quot;This is an test!&quot;<br/>response.write Right(strTest, 3)<br/>%&gt; <br/>返回结果: st! <br/><br/>Rnd() <br/>函数产生一个随机数. <br/>表达式 Rnd [ (number) ] <br/>实例： &lt;%<br/>Randomize()<br/>response.write RND()<br/>%&gt; <br/>返回结果: 任何一个在0 到 1 之间的数 <br/><br/>Round() <br/>函数返回按指定位数进行四舍五入的数值. <br/>表达式 Round(expression [, numRight]) <br/>实例： &lt;%<br/>i = 32.45678<br/>response.write Round(i)<br/>%&gt; <br/>返回结果: 32 <br/><br/>Rtrim() <br/>函数去掉字符串右边的字符串. <br/>表达式 Rtrim(string) <br/>实例： &lt;%<br/>strTest = &quot;This is a test!! &quot;<br/>response.write RTrim(strTest)<br/>%&gt; <br/>返回结果: This is a test!! <br/><br/>Split()<br/>函数将一个字符串分割并返回分割结果<br/>表达式 Split (S[，d]) <br/>实例：&lt;%V= Split(A,B,C)<br/>For i = 0 To UBound(V)<br/>Response.Write V(i)<br/>Next<br/>%&gt;<br/>返回结果: A B C<br/><br/>Second() <br/>函数返回秒. <br/>表达式 Second(time) <br/>实例： &lt;%=Second(#12:34:28 PM#)%&gt; <br/>返回结果: 28 <br/><br/>StrReverse() <br/>函数反排一字符串 <br/>表达式 StrReverse(string) <br/>实例： &lt;%<br/>strTest = &quot;This is a test!!&quot;<br/>response.write StrReverse(strTest)<br/>%&gt; <br/>返回结果: !!tset a si sihT <br/><br/>Time() <br/>函数返回系统时间. <br/>表达式 Time() <br/>实例： &lt;%=Time%&gt; <br/>返回结果: 9:58:28 AM <br/><br/>Trim() <br/>函数去掉字符串左右的空格. <br/>表达式 Trim(string) <br/>实例： &lt;%<br/>strTest = &quot; This is a test!! &quot;<br/>response.write Trim(strTest)<br/>%&gt; <br/>返回结果: This is a test!! <br/><br/>UBound() <br/>函数返回指定数组维数的最大可用下标&gt;. <br/>表达式 Ubound(arrayname [, dimension]) <br/>实例： &lt;%<br/>i = Array(&quot;Monday&quot;,&quot;Tuesday&quot;,&quot;Wednesday&quot;)<br/>response.write UBound(i)<br/>%&gt; <br/>返回结果: 2 <br/><br/>UCase() <br/>函数返回字符串的大写形式. <br/>表达式 UCase(string) <br/>允许数据类型: <br/>实例： &lt;%<br/>strTest = &quot;This is a test!!&quot;<br/>response.write UCase(strTest)<br/>%&gt; <br/>返回结果: THIS IS A TEST!! <br/><br/>VarType() <br/>函数返回指示变量子类型的值 <br/>表达式 VarType(varName) <br/>实例： &lt;%<br/>i = 3<br/>response.write varType(i)<br/>%&gt; <br/>返回结果: 2(数字)详见&quot;asp常数&quot; <br/><br/>WeekDay() <br/>函数返回在一周的第几天. <br/>表达式 WeekDay(date [, firstdayofweek]) <br/>实例： &lt;%<br/>d = #9/9/00#<br/>response.write Weekday(d)<br/>%&gt; <br/>返回结果: 4(星期三) <br/><br/>WeekDayName() <br/>函数返回一周第几天的名字. <br/>表达式 WeekDayName(weekday [, Abb [, firstdayofweek]]) <br/>实例： &lt;%<br/>d = #9/9/00#<br/>response.write WeekdayName(Weekday(d))<br/>%&gt; <br/>返回结果: Wednesday <br/><br/>Year() <br/>函数返回当前的年份. <br/>表达式 Year(date) <br/>实例： &lt;%=Year(#9/9/00#)%&gt; <br/>返回结果: 1999 <br/><br/></p>
<h2  class="related_post_title">相关博文</h2><ul class="related_post"><li>2011年06月29日 -- <a href="http://www.5bay.cn/me/kaiyuanruanjiandeyinglimoshi.html" title="开源软件的盈利模式">开源软件的盈利模式</a> (0)</li><li>2011年06月29日 -- <a href="http://www.5bay.cn/game-development/zishenshejishitonyventricejiexishoujiyouxikaifadesigecengci.html" title="资深设计师Tony Ventrice解析手机游戏开发的四个层次">资深设计师Tony Ventrice解析手机游戏开发的四个层次</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/aspeaojie.html" title="ASP防注入新方式，希望对大家是有用的">ASP防注入新方式，希望对大家是有用的</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/eeprn-asp-jpg.html" title="如何删除删不掉的”PRN.asp:.jpg”">如何删除删不掉的”PRN.asp:.jpg”</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/rsyncxiangjie.html" title="Rsync详解">Rsync详解</a> (0)</li><li>2008年10月17日 -- <a href="http://www.5bay.cn/game-development/%E6%B8%B8%E6%88%8F%E6%95%B0%E5%80%BC%E5%85%AC%E5%BC%8F%E7%9A%84%E8%A1%A8%E8%B1%A1%E4%B8%8E%E6%9C%AC%E8%B4%A8.html" title="游戏数值公式的表象与本质">游戏数值公式的表象与本质</a> (0)</li><li>2011年06月29日 -- <a href="http://www.5bay.cn/android%e7%ac%94%e8%ae%b0/androidzaixiankaifagongjuappinventor.html" title="Android在线开发工具 App Inventor">Android在线开发工具 App Inventor</a> (0)</li><li>2010年07月28日 -- <a href="http://www.5bay.cn/server-building/yaoeeechueeeeeeee.html" title="完美解决“由于这台计算机没有终端服务器客户端访问许可证”">完美解决“由于这台计算机没有终端服务器客户端访问许可证”</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajaxeeaoe.html" title="AJAX应用程序开发七宗罪">AJAX应用程序开发七宗罪</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/ajax.html" title="AJAX的各种控件和类库">AJAX的各种控件和类库</a> (0)</li><li>2010年07月26日 -- <a href="http://www.5bay.cn/network-programming/eejaxeeetpit.html" title="了解Ajax中的Get和Post ">了解Ajax中的Get和Post </a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/network-programming/phpfengzhuangchangyongjavascriptweijsleiyibiankuaisudiaoyong.html" title="PHP封装常用Javascript为JS类以便快速调用">PHP封装常用Javascript为JS类以便快速调用</a> (1)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/mysqlyouhuajiquanwensousuo.html" title="mysql优化及全文搜索">mysql优化及全文搜索</a> (0)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/eacceleratoryumemcachedequbieyuyongtu.html" title="eAccelerator与memcache的区别与用途">eAccelerator与memcache的区别与用途</a> (2)</li><li>2010年05月23日 -- <a href="http://www.5bay.cn/server-building/nginxderewriteguize.html" title="nginx的rewrite规则">nginx的rewrite规则</a> (1)</li></ul>
	标签Tags：<a href="http://www.5bay.cn/category/network-programming/asp" title="ASP" rel="tag">ASP</a>, <a href="http://www.5bay.cn/tag/asp" title="ASP" rel="tag">ASP</a>, <a href="http://www.5bay.cn/tag/%E5%B7%A5%E5%85%B7" title="工具" rel="tag">工具</a>, <a href="http://www.5bay.cn/tag/%E5%B8%B8%E7%94%A8%E5%87%BD%E6%95%B0" title="常用函数" rel="tag">常用函数</a>, <a href="http://www.5bay.cn/tag/%E6%96%B0%E6%89%8B" title="新手" rel="tag">新手</a>, <a href="http://www.5bay.cn/tag/%E8%A1%A8" title="表" rel="tag">表</a><br />
]]></content:encoded>
			<wfw:commentRss>http://www.5bay.cn/network-programming/asp/asp%E5%B8%B8%E7%94%A8%E5%87%BD%E6%95%B0%E8%A1%A8%EF%BC%88%E6%96%B0%E6%89%8B%E4%BB%AC%E7%9A%84%E5%A5%BD%E5%B7%A5%E5%85%B7%EF%BC%89.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

