<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>郑州网建 - 软件开发</title><link>http://camnpr.com/</link><description>Good Good Study ,Day Day Up! - </description><generator>RainbowSoft Studio Z-Blog 1.8 Walle Build 100427</generator><language>zh-CN</language><copyright>豫ICP备10013645号 Copyright 2009-2022 camnpr.com</copyright><pubDate>Sun, 03 May 2026 07:45:52 +0800</pubDate><item><title>Visual Studio结合YUI Compressor 在编译任务时压缩js和css文件</title><author>kuabaobao_com@163.com (kuabaobao)</author><link>http://camnpr.com/software-dev/1998.html</link><pubDate>Sat, 09 May 2015 11:11:58 +0800</pubDate><guid>http://camnpr.com/software-dev/1998.html</guid><description><![CDATA[<p>如今网站都在说优化，压缩js和css文件就成了最基本的一种方法，js和css压缩有很多方法，很多网站也提供了这样的功能，也可以用YUI提供的包手动压缩，但是这都不效率啊，能不能在vs生成部署包的时候把js和css压缩好呢？当然可以。</p><p>首先请<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=https%3A%2F%2Fgithub%7Ccom%2Fyui%2Fyuicompressor" target="_blank">下载</a>YUI Compressor，YUI Compressor是个Java库，你需要安装Java的运行环境，请点这里<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Fwww%7Cjava%7Ccom%2Fzh_CN%2Fdownload%2F" target="_blank">下载</a>。（关于Java环境的配置请大家自行google，另外YUI Compressor是github的链接，应该被墙了，请自备爬梯工具）。</p><p>新建一个批处理文件，代码如下：</p><pre class="brush:text">@echo off<br />if &quot;%1&quot; == &quot;&quot; goto exit<br />if &quot;%2&quot; == &quot;&quot; goto exit<br />pushd &quot;%1&quot;<br />echo 正在压缩Css文件<br />for /r %%i in (*.css) do call &quot;D:\Program Files\Java\jre\bin\java.exe&quot; -jar G:\tools\yuicompressor-2.4.7.jar -o %%i %%i<br />echo 正在压缩js文件<br />for /r %%i in (*.js) do call &quot;D:\Program Files\Java\jre\bin\java.exe&quot; -jar G:\tools\yuicompressor-2.4.7.jar -o %%i %%i<br />::call &quot;D:\Program Files\7-Zip\7z.exe&quot; a %2.7z -r PackageTmp<br />pause<br />:exit<br />exit</pre><p>&nbsp;批处理的第一个参数接收项目生成部署包的路径，vs默认路径是：\obj\Release，第二个参数是生成压缩包的名字（这里是生成的7z的压缩包，如果需要生成，请把call那行的注释去掉）。</p><p>然后就是编辑你的项目文件，比如Test.csproj，打开它，在根路径下添加如下代码：</p><pre class="brush:xml">&lt;Target Name=&quot;Compressor&quot; BeforeTargets=&quot;Package&quot; Condition=&quot;'$(ConfigurationName)'=='Release'&quot;&gt;<br /> &lt;Message Text=&quot;Starting Compress Javascript Files and Css Files&quot; /&gt;<br /> &lt;Exec Command=&quot;call F:\Users\Documents\Compressor.bat $(ProjectDir)obj\$(ConfigurationName)\Package\ $(ProjectName)&quot; /&gt;<br />&lt;/Target&gt;</pre><p>稍微解释下这段代码，BeforeTargets=&quot;Package&quot;是在打包Web文件前调用压缩，Condition=&quot;'$(ConfigurationName)'=='Release'&quot;，只有Release模式下才压缩，你不会想一边Debug一边压缩js和css文件吧。Command命令中，请自行替换刚才建立的批处理文件的路径，$(ProjectDir)是项目路径，$ConfigurationName是当前的生成配置，$ProjectName是项目名称。</p><p>现在在项目上右击，生成部署包，然后看看js和css文件是不是都已经压缩了呢？</p>]]></description><category>软件开发</category><comments>http://camnpr.com/software-dev/1998.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1998</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1998&amp;key=6d26bddf</trackback:ping></item><item><title>微软推出前端开发神器：Visual Studio Code (VSCode)</title><author>bubuol@126.com (llmaomi)</author><link>http://camnpr.com/software-dev/2006.html</link><pubDate>Thu, 07 May 2015 10:15:49 +0800</pubDate><guid>http://camnpr.com/software-dev/2006.html</guid><description><![CDATA[<div id="noimgcss"><p>目前市场上比较常见的一些GUI编辑器的产品：Sublime、Notepad++、Atom、H5 Builder、Brackets等等，包括终端下的Vim、Emacs等等，都是这个vscode的竞品。</p><p>首先明确一下，这个<strong>Visual Studio Code（以下简称vscode）是一个带GUI的代码编辑器</strong>，也就是只能完成简单的代码编辑功能，并不是一个集成开发环境（IDE）。而Visual Studio、WebStorm这类的开发工具是IDE，功能强大，这两个是不一样的概念。</p><h2>总结四点特性：</h2><p><br /><strong>1. 免费</strong><br /><strong>2. 用户体验细节好，IDE版的智能特性</strong><br /><strong>3. 流畅，完全不卡</strong><br /><strong>4. 一个运行于 OS X，Windows 和 Linux 之上的，针对于编写现代web和云应用的跨平台编辑器</strong></p><p>推出这个vscode对微软来说，就是标志着他们要开始席卷了，先让你们用上这种编辑器再说。当然对开发者来说，不管喜不喜欢用，反正不花钱多了一个选择，挺好的。</p><h2>如何安装？</h2><p>Linux下：</p><pre class="brush:text">wget http://download.microsoft.com/download/0/D/5/0D57186C-834B-463A-AECB-BC55A8E466AE/VSCode-linux-x64.zip<br />//注意不要使用归档解压会报错<br />unzip  unzip VSCode-linux-x64 -d VS<br />//双击VS里的Code就能运行了</pre><p>window下：</p><p>进入官网主页：<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=https%3A%2F%2Fcode%7Cvisualstudio%7Ccom%2F" target="_blank">https://code.visualstudio.com/</a>&nbsp;点击下载安装即可。</p><h2>体验一番：</h2><p><img src="http://camnpr.com/upload/2015/5/201505041341051238.png" alt="微软推出前端开发神器：Visual Studio Code (VSCode)" width="700" height="457" /></p><h2>特性</h2><h3>智能提示</h3><p>VSCode提供了强大的自动补全、悬浮提示、定义跳转等功能，支持以下语言：</p><pre class="brush:text">C++, jade, PHP, Python, XML, Batch, F#, DockerFile, Coffee Script, Java, HandleBars, R,Objective-C, PowerShell, Luna, Visual Basic, Markdown</pre><p>我测试了下在Javascript、Typscript上体验不错，HTML还支持Angular标签，悬浮提示很详细包括了注解，但是试了下C#貌似没有什么效果，不知道是不是需要特殊的环境。不管怎样，在某些语言上的智能提示已经比其他的同类编辑器已经强太多了，可以和一些IDE媲美。</p><p><img src="http://camnpr.com/upload/2015/5/201505041405361423.jpg" alt="微软推出前端开发神器：Visual Studio Code (VSCode)" /></p><p>下面贴几张官网的示例图片:</p><p>参数提示：<br /><img src="http://camnpr.com/upload/2015/5/201505041408456428.png" alt="微软推出前端开发神器：Visual Studio Code (VSCode)" /></p><p>定义跳转：<br /><img src="http://camnpr.com/upload/2015/5/201505041409150535.png" alt="微软推出前端开发神器：Visual Studio Code (VSCode)" /></p><p>引用提示：<br /><img src="http://camnpr.com/upload/2015/5/201505041409313544.png" alt="微软推出前端开发神器：Visual Studio Code (VSCode)" /></p><p>方法定位：<br /><img src="http://camnpr.com/upload/2015/5/201505041409473072.png" alt="微软推出前端开发神器：Visual Studio Code (VSCode)" /></p><p>还有其他很酷炫的功能我没测试，大家<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=https%3A%2F%2Fcode%7Cvisualstudio%7Ccom%2FDocs%2Feditingevolved" target="_blank" rel="nofollow">官网</a>看吧。</p><h3 id="articleHeader5">Markdown</h3><p>在Linux桌面上，好用的Markdown编辑器可以说没有，ReText和记事本一样简陋，Sublime Text3虽然可以装插件支持，但是体验不是很好，不支持中文。因此我一直使用的在线Markdown代替。</p><p>这回VSCode支持Markdown重新让我看到了点希望。快捷键ctr+shift+v预览，可以看到这个布局还是非常人性化的。</p><p><img src="http://camnpr.com/upload/2015/5/201505041411312487.jpg" alt="微软推出前端开发神器：Visual Studio Code (VSCode)" /></p><p>但是缺点也很明显，首先中文支持不好，编辑器里的中文输入可以改，但是预览还是出现口口，目前找到解决方法。还有不支持快捷键输入，那种像写代码般的快感没有了。没有能自定义CSS的功能，不管在哪种Theme下，&gt;&nbsp;代码高亮都看不出有什么效果。</p><h3 id="articleHeader6">版本控制</h3><p>自带了一个git工具，并且放在了一个比较显要的位置上，不过功能不是很全，只能commit等几个操作。自带了类似于git diff的文件比较功能：</p><p><img src="http://camnpr.com/upload/2015/5/201505041405405484.jpg" alt="微软推出前端开发神器：Visual Studio Code (VSCode)" /></p><h3 id="articleHeader7">Debug</h3><p>Debug需要MONO，所以就没进行测试。详情大家看<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=https%3A%2F%2Fcode%7Cvisualstudio%7Ccom%2FDocs%2Fdebugging" target="_blank" rel="nofollow">官网</a>吧。</p><h2 id="articleHeader8">缺陷</h2><h3 id="articleHeader9">中文支持</h3><p>默认的字体是不支持中文的，输入中文的时候会出现口口。需要设置一下字体，我使用的是文泉驿，思源也行。</p><p>没安装的首先安装这个字体。</p><pre class="brush:text">sudo apt-get install fonts-wqy-microhei fonts-wqy-zenheiFile -&gt; Preference -&gt; User Settings//在右侧添加一句：&quot;editor.fontFamily&quot;: &quot;WenQuanYi Micro Hei Mono&quot;</pre><p>不过这只能解决编辑器内的中文乱码问题，其他的比如标题栏，markdown预览，该口的还是口。对了还有一点需要注意的是输入法需要是Fctix或者基于Fctix的。</p><p>Sublime Text3同样有这问题，事实上Sublime Text3全平台对于中文的支持都不是很好。</p><h3 id="articleHeader10">插件化</h3><p>不过插件化已经提到议程上了，以微软的实力实现这个不难。</p><h3 id="articleHeader11">Markdown</h3><p>缺陷在上面已经提到了</p><h3 id="articleHeader12">设置</h3><p>用户设置是直接以JSON形式出现了，虽然说鼠标悬浮上去会看到详细的解释，但还是没有图形化来的简便，而且没有搜索的功能，想要搜索还得以文本的形式复制出来，修改起来略费劲。</p></div>]]></description><category>软件开发</category><comments>http://camnpr.com/software-dev/2006.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=2006</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=2006&amp;key=6478d4a3</trackback:ping></item><item><title>Visual Studio(VS) Web开发工具扩展：Web Essentials详解</title><author>bubuol@126.com (llmaomi)</author><link>http://camnpr.com/software-dev/1997.html</link><pubDate>Wed, 22 Apr 2015 15:46:38 +0800</pubDate><guid>http://camnpr.com/software-dev/1997.html</guid><description><![CDATA[<div id="noimgcss"><p>&nbsp;Web Essentials是目前为止见过的最好用的VS扩展工具了，具体功能请待我一一道来。</p><p>&nbsp;</p><p>首先，从Extension Manager里安装，或者从这里选择针对不同VS版本的下载：https://visualstudiogallery.msdn.microsoft.com/site/search?query=Web%20Essentials&amp;f%5B0%5D.Value=Web%20Essentials&amp;f%5B0%5D.Type=SearchText&amp;ac=2</p><p><img src="http://camnpr.com/upload/2015/4/201504221551085006.jpg" alt="" /></p><p>然后重启你的VS开发环境，就可以使用它提供的方便功能了。</p><p>Web Essentials对CSS、JavaScript和HTML都提供了很多快捷的功能支持，具体列表如下：</p><p><strong>CSS</strong></p><hr /><p><strong><br /></strong></p><p><strong>即时预览Live Web Preview</strong><br />每次修改的时候，都可以使用CTRL+ALT+Enter快捷键或者点击方案右键上的Live Web Preview选项来即时预览你修改的页面，每次修改完 HTML或者相应的CSS， Ctrl+S保存以后，即时窗口会立即生效。</p><p><img src="http://camnpr.com/upload/2015/4/201504221545572732.jpg" alt="" /></p><hr /><p><strong><br /></strong></p><p><strong>兼容性CSS代码生成</strong><br />很多CSS3的代码都不兼容，不同的浏览器有不同的语言，使用此扩展可以通过提升的方式自动添加特殊的CSS标记，例如-moz, -webkit, -ms and -o开头的一些CSS，也只可以选择特定的浏览器。</p><p><img src="http://camnpr.com/upload/2015/4/201504221545574864.png" alt="" /></p><p>生产的代码结果如下：</p><p><img src="http://camnpr.com/upload/2015/4/201504221545570684.png" alt="" /></p><p>如果你已经添加了一部分的话，该扩展会只添加除这部分之外的CSS代码，不会重复添加的。</p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>上下箭头可以改变数字值</strong></p><p>当你把键盘提示符放在数字上或者数字后面的话，例如5px, 25%, 0.6em, 23等，可以使用CTRL+UP或者CTRL+DOWN来增加或减小数值。</p><p><img src="http://camnpr.com/upload/2015/4/201504221545582080.png" alt="" /></p><p>支持CSS, SaSS, LESS和JavaScript文件</p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>可以生产Base64格式的字符串代替URL地址</strong></p><p>如果你通过url来引用背景图的话，那可以直接通过该扩展提供的Embed resource as base64功能将引用转换成base64格式的。</p><p><img src="http://camnpr.com/upload/2015/4/201504221545585240.png" alt="" /></p><p>如果嫌内容太长，可以使用折叠功能。</p><p><img src="http://camnpr.com/upload/2015/4/201504221545581668.png" alt="" /></p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>支持快捷键注释和反注释代码</strong></p><p>可以使用CTRL+K, CTRL+C注释或CTRL+K, CTRL+U反注释代码，和VS里C#编程使用的快捷键一样。</p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>TODO注释特殊支持</strong></p><p>任何注释如果包括TODO关键字的话，都会在左边显示一个灰色的特殊标记，来提示你该部分暂未完成。</p><p><img src="http://camnpr.com/upload/2015/4/201504221545582361.jpg" alt="" /></p><p>&nbsp;</p><hr /><p><strong>颜色预览</strong></p><p>鼠标移动到颜色上的时候，可以预览改颜色，或者在CSS编辑器里也能直接预览颜色</p><p><img src="http://camnpr.com/upload/2015/4/201504221545583727.png" alt="" /></p><p><img src="http://camnpr.com/upload/2015/4/201504221545587583.jpg" alt="" /></p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>字体预览</strong></p><p><img src="http://camnpr.com/upload/2015/4/201504221545584012.png" alt="" /></p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>图片预览</strong></p><p><img src="http://camnpr.com/upload/2015/4/201504221545580713.jpg" alt="" /></p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>折叠功能</strong></p><p>需要一个生命的选择器，右键可以看到Surround With Region即可将这段代码进行折叠起来。</p><p><img src="http://camnpr.com/upload/2015/4/201504221545581531.jpg" alt="" /></p><p>功能选择以后，它会自动定位到默认的 MyRegion名称那里，让你修改自己的折叠大纲的名称。</p><p><img src="http://camnpr.com/upload/2015/4/201504221545580413.jpg" alt="" /></p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>字符排序</strong></p><p>点击任意选择器的时候，都可以让该选择器的CSS定义进行排序</p><p><img src="http://camnpr.com/upload/2015/4/201504221545592032.png" alt="" /></p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>括号匹配</strong></p><p>目前支持{}，[]， ()的匹配。</p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>压缩代码</strong></p><p>该扩展使用的 AjaxMin library来压缩CSS代码的。</p><p><img src="http://camnpr.com/upload/2015/4/201504221545592400.png" alt="" /></p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>代码折叠</strong></p><p><img src="http://camnpr.com/upload/2015/4/201504221545592611.png" alt="" /></p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>支持拖拽</strong></p><p>支持图片和字体的拖拽，例如如果你拖拽tomxu.jpg图片到该CSS选择器，那么将自动生成如下代码（字体也是类似）:</p><div class="cnblogs_code"><pre>background-image: url('../tomxu.jpg');</pre></div><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>颜色可以在十六进制、rgb、和名称直接互相转换</strong></p><p><img src="http://camnpr.com/upload/2015/4/201504221545595308.png" alt="" /></p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>可以在选择器上定义只支持哪些浏览器版本</strong></p><p><img src="http://camnpr.com/upload/2015/4/201504221545591627.png" alt="" /></p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>可以在CSS语法定义只支持哪些浏览器版本</strong></p><p><img src="http://camnpr.com/upload/2015/4/201504221545597144.png" alt="" /></p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>JavaScript</strong></p><p>支持Region折叠</p><div class="cnblogs_code"><pre>//#region MyRegion<br /><br />function Example() {<br /><br />}<br /><br />//#endregion</pre></div><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>支持代码折叠</strong></p><p><img src="http://camnpr.com/upload/2015/4/201504221545591660.png" alt="" /></p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>括号匹配</strong></p><p>目前支持{}，[]， ()的匹配。</p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>同词高亮</strong></p><p>在一个文件的所有代码中，如果选择一个变量，那该代码中所有相同的变量都会高亮显示，和C#里一样。</p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>压缩代码</strong></p><p>使用AjaxMin library进行了压缩代码，不仅压缩了，还使用了混淆，牛!</p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>快捷添加文件</strong></p><p>在解决方案里，添加新项的时候，可以直接选择添加JavaScript文件还是Stylesheet文件，方便！</p><p><img src="http://camnpr.com/upload/2015/4/201504221545593356.png" alt="" /></p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>HTML</strong></p><p><strong>支持用户控件的拖拽</strong></p><p>以前我们在asp.net webform开发的时候，直接用鼠标将user control拖拽到aspx页面或者模板容器的时候都会自动生成a连接，使用此扩展以后，将会自动注册命名控件，然后生成带有&lt;uc:name/&gt;的代码，可以直接使用咯。</p><p>&nbsp;</p><hr /><p>&nbsp;</p><p><strong>支持Video和Audio文件的拖拽</strong></p><p>也支持对音频和视频文件的拖拽。</p><p>&nbsp;</p><p>转载自：http://www.cnblogs.com/tomxu/archive/2011/11/22/2258849.html</p></div>]]></description><category>软件开发</category><comments>http://camnpr.com/software-dev/1997.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1997</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1997&amp;key=c5ea0461</trackback:ping></item><item><title>前端开发高效率的工具插件：Emmet语法说明 使用示例 （结合Sublime Text）</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/software-dev/1962.html</link><pubDate>Wed, 25 Mar 2015 19:07:36 +0800</pubDate><guid>http://camnpr.com/software-dev/1962.html</guid><description><![CDATA[<p>HTML代码写起来很费事，因为它的标签多。</p><p>一种解决方法是采用模板， 在别人写好的骨架内，填入自己的内容。还有一种就是我今天想要介绍的方法----简写法。</p><p>Emmet (前身为 Zen Coding) 是一个能大幅度提高前端开发效率的一个工具:</p><p><img src="http://camnpr.com/upload/2015/3/emmet-p1.jpg" alt="Emmet" ></p><p>基本上，大多数的文本编辑器都会允许你存储和重用一些代码块，我们称之为“片段”。虽然片段能很好地推动你得生产力，但大多数的实现都有这样一个缺点：你必须先定义你得代码片段，并且不能再运行时进行拓展。</p><p>Emmet把片段这个概念提高到了一个新的层次：你可以设置CSS形式的能够动态被解析的表达式，然后根据你所输入的缩写来得到相应的内容。Emmet是很成熟的并且非常适用于编写HTML/XML 和 CSS 代码的前端开发人员，但也可以用于编程语言。</p><h2>先安装到一个编辑器上</h2><p>Emmet是一个编辑器插件，官方网站提供多编辑器支持。我一般使用Sublime，下面就以Sublime插件举例。</p><p>假设你已经按照了Sublime Text 3，如图查看是否有Emmet？ &nbsp; 菜单：Preferences&gt;Package Settings&gt;Emmet</p><p><img src="http://camnpr.com/upload/2015/3/201503251830112520.jpg" alt="Sublime>Preferences>Package Settings>Emmet" width="497" height="321" ></p><p>如果没有这个Emmet，没关系，不要着急，先下载一个：<span style="color: #ff0000;" data-mce-style="color: #ff0000;"><a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Femmet%7Cio%2Fdownload%2F" target="_blank" ><span style="color: #ff0000;" data-mce-style="color: #ff0000;">Emmet</span></a></span>（<strong>Emmet为大部分流行的编辑器都提供了安装插件 这里</strong>选择Sublime Text），把下载好的解压缩后，复制emmet-sublime-master文件夹，找到Sublime Text的安装目录，比如：D:\Camnpr\FEEditor\Sublime Text 3\Data\Packages &nbsp;粘贴到此处，就可以了。再去看看上边的图，有Emmet了吗？</p><h2>如何使用Emmet的功能？</h2><p>先在Sublime里新建一个html页面，里边是空空的，接下来输入：<code>html:5</code>&nbsp;按下tab键或者按ctrl+e，是不是发生了神奇的事情？</p><p>结果如下：</p><pre class="brush:html">&nbsp;&lt;!DOCTYPE html&gt;<br>　　&lt;html lang="en"&gt;<br>　　&lt;head&gt;<br>　　　　&lt;meta charset="UTF-8"&gt;<br>　　　　&lt;title&gt;&lt;/title&gt;<br>　　&lt;/head&gt;<br>　　&lt;body&gt;<br>　　<br>　　&lt;/body&gt;<br>　　&lt;/html&gt;</pre><h2>那么Emmet的快捷键都有哪些？</h2><p>展开缩写–Tab或Ctrl + E</p><p>互动“展开缩写“Ctrl + Alt&nbsp;+ Enter</p><p>匹配标签对外向–<span class="high-light-bg">?</span>D（MAC）/&nbsp;Ctrl +，（PC）</p><p>匹配标签对内向–?J&nbsp;/&nbsp;Shift +&nbsp;Ctrl + 0</p><p>去匹配对–??T&nbsp;/按Ctrl + Alt&nbsp;+ J</p><p>用缩写-?W&nbsp;/&nbsp;Shift +&nbsp;Ctrl +&nbsp;G包</p><p>去编辑点按Ctrl + Alt +&nbsp;Ctrl + Alt +←→或</p><p>–??选择项目。或??，/ Shift + Ctrl +。或Shift +&nbsp;Ctrl +，</p><p>切换评论??/&nbsp;Shift +&nbsp;Ctrl +&nbsp;/</p><p>分/合标签??/&nbsp;Ctrl +转移+&nbsp;`</p><p>移除标签–?/&nbsp;Shift +&nbsp;Ctrl +；</p><p>更新图像尺寸??我/&nbsp;Ctrl +&nbsp;U</p><p>评估的数学表达式??Y&nbsp;/&nbsp;Shift +&nbsp;Ctrl +&nbsp;Y</p><p>反映CSS值–??R&nbsp;/&nbsp;Shift +&nbsp;Ctrl + R</p><p>编码/解码图像数据：URL–??D&nbsp;/&nbsp;Ctrl +&nbsp;'</p><p>重命名标签–??K&nbsp;/&nbsp;Shift +&nbsp;Ctrl +&nbsp;'</p><h2>Emmet支持的简写规则，类似于CSS选择器（大写的E代表一个HTML标签）</h2><p>1. E 代表HTML标签。<br>2. E#id 代表id属性。<br>3. E.class 代表class属性。<br>4. E[attr=foo] 代表某一个特定属性。<br>5. E{foo} 代表标签包含的内容是foo。<br>6. E&gt;N 代表N是E的子元素。<br>7. E+N 代表N是E的同级元素。<br>8. E^N 代表N是E的上级元素。</p><p>1. !!! 5 代表 &lt;!DOCTYPE html&gt;<br>2. %E 代表HTML标签。<br>3. %E#id 代表id属性。<br>4. %E.class 代表class属性。<br>5. %E(attr="xxx") 代表某一个特定属性。<br>6. %E XXX 代表插入标签的内容。<br>7. %E %N 代表N是E的子元素。N如果写在第二行，需要缩进。</p><p>那么上边的这些规则怎么用呢？看下边的示例：</p><h2>Emmet的语法及使用示例：</h2><p>后代：&gt;</p><p>缩写：nav&gt;ul&gt;li</p><pre class="brush:html">&lt;nav&gt;<br> &lt;ul&gt;<br> &lt;li&gt;&lt;/li&gt;<br> &lt;/ul&gt;<br>&lt;/nav&gt;</pre><p>兄弟：+</p><p>缩写：div+p+bq</p><pre class="brush:html">&lt;div&gt;&lt;/div&gt;<br>&lt;p&gt;&lt;/p&gt;<br>&lt;blockquote&gt;&lt;/blockquote&gt;</pre><p>上级：^</p><p>缩写：div+div&gt;p&gt;span+em^bq</p><pre class="brush:html">&lt;div&gt;&lt;/div&gt;<br>&lt;div&gt;<br> &lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;<br> &lt;blockquote&gt;&lt;/blockquote&gt;<br>&lt;/div&gt;</pre><p>缩写：div+div&gt;p&gt;span+em^^bq</p><pre class="brush:html">&lt;div&gt;&lt;/div&gt;<br>&lt;div&gt;<br> &lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;<br>&lt;/div&gt;<br>&lt;blockquote&gt;&lt;/blockquote&gt;<br>分组：()</pre><p>缩写：div&gt;(header&gt;ul&gt;li*2&gt;a)+footer&gt;p</p><pre class="brush:html">&lt;div&gt;<br> &lt;header&gt;<br> &lt;ul&gt;<br> &lt;li&gt;&lt;a href=""&gt;&lt;/a&gt;&lt;/li&gt;<br> &lt;li&gt;&lt;a href=""&gt;&lt;/a&gt;&lt;/li&gt;<br> &lt;/ul&gt;<br> &lt;/header&gt;<br> &lt;footer&gt;<br> &lt;p&gt;&lt;/p&gt;<br> &lt;/footer&gt;<br>&lt;/div&gt;</pre><p>缩写：(div&gt;dl&gt;(dt+dd)*3)+footer&gt;p</p><pre class="brush:html">&lt;div&gt;<br> &lt;dl&gt;<br> &lt;dt&gt;&lt;/dt&gt;<br> &lt;dd&gt;&lt;/dd&gt;<br> &lt;dt&gt;&lt;/dt&gt;<br> &lt;dd&gt;&lt;/dd&gt;<br> &lt;dt&gt;&lt;/dt&gt;<br> &lt;dd&gt;&lt;/dd&gt;<br> &lt;/dl&gt;<br>&lt;/div&gt;<br>&lt;footer&gt;<br> &lt;p&gt;&lt;/p&gt;<br>&lt;/footer&gt;<br>乘法：*</pre><p>缩写：ul&gt;li*5</p><pre class="brush:html">&lt;ul&gt;<br> &lt;li&gt;&lt;/li&gt;<br> &lt;li&gt;&lt;/li&gt;<br> &lt;li&gt;&lt;/li&gt;<br> &lt;li&gt;&lt;/li&gt;<br> &lt;li&gt;&lt;/li&gt;<br>&lt;/ul&gt;<br>自增符号：$</pre><p>缩写：ul&gt;li.item$*5</p><pre class="brush:html">&lt;ul&gt;<br> &lt;li class="item1"&gt;&lt;/li&gt;<br> &lt;li class="item2"&gt;&lt;/li&gt;<br> &lt;li class="item3"&gt;&lt;/li&gt;<br> &lt;li class="item4"&gt;&lt;/li&gt;<br> &lt;li class="item5"&gt;&lt;/li&gt;<br>&lt;/ul&gt;</pre><p>缩写：h$[title=item$]{Header $}*3</p><pre class="brush:html">&lt;h1 title="item1"&gt;Header 1&lt;/h1&gt;<br>&lt;h2 title="item2"&gt;Header 2&lt;/h2&gt;<br>&lt;h3 title="item3"&gt;Header 3&lt;/h3&gt;</pre><p>缩写：ul&gt;li.item$$$*5</p><pre class="brush:html">&lt;ul&gt;<br> &lt;li class="item001"&gt;&lt;/li&gt;<br> &lt;li class="item002"&gt;&lt;/li&gt;<br> &lt;li class="item003"&gt;&lt;/li&gt;<br> &lt;li class="item004"&gt;&lt;/li&gt;<br> &lt;li class="item005"&gt;&lt;/li&gt;<br>&lt;/ul&gt;</pre><p>缩写：ul&gt;li.item$@-*5</p><pre class="brush:html">&lt;ul&gt;<br> &lt;li class="item5"&gt;&lt;/li&gt;<br> &lt;li class="item4"&gt;&lt;/li&gt;<br> &lt;li class="item3"&gt;&lt;/li&gt;<br> &lt;li class="item2"&gt;&lt;/li&gt;<br> &lt;li class="item1"&gt;&lt;/li&gt;<br>&lt;/ul&gt;</pre><p>缩写：ul&gt;li.item$@3*5</p><pre class="brush:html">&lt;ul&gt;<br> &lt;li class="item3"&gt;&lt;/li&gt;<br> &lt;li class="item4"&gt;&lt;/li&gt;<br> &lt;li class="item5"&gt;&lt;/li&gt;<br> &lt;li class="item6"&gt;&lt;/li&gt;<br> &lt;li class="item7"&gt;&lt;/li&gt;<br>&lt;/ul&gt;<br>ID和类属性</pre><p>缩写：#header</p><pre class="brush:html">&lt;div id="header"&gt;&lt;/div&gt;</pre><p>缩写：.title</p><pre class="brush:html">&lt;div class="title"&gt;&lt;/div&gt;</pre><p>缩写：form#search.wide</p><pre class="brush:html">&lt;form id="search" class="wide"&gt;&lt;/form&gt;</pre><p>缩写：p.class1.class2.class3</p><pre class="brush:html">&lt;p class="class1 class2 class3"&gt;&lt;/p&gt;<br>自定义属性</pre><p>缩写：p[title="Hello world"]</p><pre class="brush:html">&lt;p title="Hello world"&gt;&lt;/p&gt;</pre><p>缩写：td[rowspan=2 colspan=3 title]</p><pre class="brush:html">&lt;td rowspan="2" colspan="3" title=""&gt;&lt;/td&gt;</pre><p>缩写：[a='value1' b="value2"]</p><pre class="brush:html">&lt;div a="value1" b="value2"&gt;&lt;/div&gt;<br>文本：{}</pre><p>缩写：a{Click me}</p><pre class="brush:html">&lt;a href=""&gt;Click me&lt;/a&gt;</pre><p>缩写：p&gt;{Click }+a{here}+{ to continue}</p><pre class="brush:html">&lt;p&gt;Click &lt;a href=""&gt;here&lt;/a&gt; to continue&lt;/p&gt;<br>隐式标签</pre><p>缩写：.class</p><pre class="brush:html">&lt;div class="class"&gt;&lt;/div&gt;</pre><p>缩写：em&gt;.class</p><pre class="brush:html">&lt;em&gt;&lt;span class="class"&gt;&lt;/span&gt;&lt;/em&gt;</pre><p>缩写：ul&gt;.class</p><pre class="brush:html">&lt;ul&gt;<br> &lt;li class="class"&gt;&lt;/li&gt;<br>&lt;/ul&gt;</pre><p>缩写：table&gt;.row&gt;.col</p><pre class="brush:html">&lt;table&gt;<br> &lt;tr class="row"&gt;<br> &lt;td class="col"&gt;&lt;/td&gt;<br> &lt;/tr&gt;<br>&lt;/table&gt;<br>HTML</pre><p>所有未知的缩写都会转换成标签，例如，foo → &lt;foo&gt;&lt;/foo&gt;</p><p>缩写：!</p><pre class="brush:html">&lt;!doctype html&gt;<br>&lt;html lang="en"&gt;<br>&lt;head&gt;<br> &lt;meta charset="UTF-8"&gt;<br> &lt;title&gt;Document&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;</pre><pre class="brush:html">&lt;/body&gt;<br>&lt;/html&gt;</pre><p>缩写：a</p><pre class="brush:html">&lt;a href=""&gt;&lt;/a&gt;</pre><p>缩写：a:link</p><pre class="brush:html">&lt;a href="http://"&gt;&lt;/a&gt;</pre><p>缩写：a:mail</p><pre class="brush:html">&lt;a href="mailto:"&gt;&lt;/a&gt;</pre><p>缩写：abbr</p><pre class="brush:html">&lt;abbr title=""&gt;&lt;/abbr&gt;</pre><p>缩写：acronym</p><pre class="brush:html">&lt;acronym title=""&gt;&lt;/acronym&gt;</pre><p>缩写：base</p><pre class="brush:html">&lt;base href="" /&gt;</pre><p>缩写：basefont</p><pre class="brush:html">&lt;basefont /&gt;</pre><p>缩写：br</p><pre class="brush:html">&lt;br /&gt;</pre><p>缩写：frame</p><pre class="brush:html">&lt;frame /&gt;</pre><p>缩写：hr</p><pre class="brush:html">&lt;hr /&gt;</pre><p>缩写：bdo</p><pre class="brush:html">&lt;bdo dir=""&gt;&lt;/bdo&gt;</pre><p>缩写：bdo:r</p><pre class="brush:html">&lt;bdo dir="rtl"&gt;&lt;/bdo&gt;</pre><p>缩写：bdo:l</p><pre class="brush:html">&lt;bdo dir="ltr"&gt;&lt;/bdo&gt;</pre><p>缩写：col</p><pre class="brush:html">&lt;col /&gt;</pre><p>缩写：link</p><pre class="brush:html">&lt;link rel="stylesheet" href="" /&gt;</pre><p>缩写：link:css</p><pre class="brush:html">&lt;link rel="stylesheet" href="style.css" /&gt;</pre><p>缩写：link:print</p><pre class="brush:html">&lt;link rel="stylesheet" href="print.css" media="print" /&gt;</pre><p>缩写：link:favicon</p><pre class="brush:html">&lt;link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /&gt;</pre><p>缩写：link:touch</p><pre class="brush:html">&lt;link rel="apple-touch-icon" href="favicon.png" /&gt;</pre><p>缩写：link:rss</p><pre class="brush:html">&lt;link rel="alternate" type="application/rss+xml" title="RSS" href="rss.xml" /&gt;</pre><p>缩写：link:atom</p><pre class="brush:html">&lt;link rel="alternate" type="application/atom+xml" title="Atom" href="atom.xml" /&gt;</pre><p>缩写：meta</p><pre class="brush:html">&lt;meta /&gt;</pre><p>缩写：meta:utf</p><pre class="brush:html">&lt;meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /&gt;</pre><p>缩写：meta:win</p><pre class="brush:html">&lt;meta http-equiv="Content-Type" content="text/html;charset=windows-1251" /&gt;</pre><p>缩写：meta:vp</p><pre class="brush:html">&lt;meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" /&gt;</pre><p>缩写：meta:compat</p><pre class="brush:html">&lt;meta http-equiv="X-UA-Compatible" content="IE=7" /&gt;</pre><p>缩写：style</p><pre class="brush:html">&lt;style&gt;&lt;/style&gt;</pre><p>缩写：script</p><pre class="brush:html">&lt;script&gt;&lt;/script&gt;</pre><p>缩写：script:src</p><pre class="brush:html">&lt;script src=""&gt;&lt;/script&gt;</pre><p>缩写：img</p><pre class="brush:html">&lt;img src="" alt="" /&gt;</pre><p>缩写：iframe</p><pre class="brush:html">&lt;iframe src="" frameborder="0"&gt;&lt;/iframe&gt;</pre><p>缩写：embed</p><pre class="brush:html">&lt;embed src="" type="" /&gt;</pre><p>缩写：object</p><pre class="brush:html">&lt;object data="" type=""&gt;&lt;/object&gt;</pre><p>缩写：param</p><pre class="brush:html">&lt;param name="" value="" /&gt;</pre><p>缩写：map</p><pre class="brush:html">&lt;map name=""&gt;&lt;/map&gt;</pre><p>缩写：area</p><pre class="brush:html">&lt;area shape="" coords="" href="" alt="" /&gt;</pre><p>缩写：area:d</p><pre class="brush:html">&lt;area shape="default" href="" alt="" /&gt;</pre><p>缩写：area:c</p><pre class="brush:html">&lt;area shape="circle" coords="" href="" alt="" /&gt;</pre><p>缩写：area:r</p><pre class="brush:html">&lt;area shape="rect" coords="" href="" alt="" /&gt;</pre><p>缩写：area:p</p><pre class="brush:html">&lt;area shape="poly" coords="" href="" alt="" /&gt;</pre><p>缩写：form</p><pre class="brush:html">&lt;form action=""&gt;&lt;/form&gt;</pre><p>缩写：form:get</p><pre class="brush:html">&lt;form action="" method="get"&gt;&lt;/form&gt;</pre><p>缩写：form:post</p><pre class="brush:html">&lt;form action="" method="post"&gt;&lt;/form&gt;</pre><p>缩写：label</p><pre class="brush:html">&lt;label for=""&gt;&lt;/label&gt;</pre><p>缩写：input</p><pre class="brush:html">&lt;input type="text" /&gt;</pre><p>缩写：inp</p><pre class="brush:html">&lt;input type="text" name="" id="" /&gt;</pre><p>缩写：input:hidden</p><p>别名：input[type=hidden name]</p><pre class="brush:html">&lt;input type="hidden" name="" /&gt;</pre><p>缩写：input:h</p><p>别名：input:hidden</p><pre class="brush:html">&lt;input type="hidden" name="" /&gt;</pre><p>缩写：input:text, input:t</p><p>别名：inp</p><pre class="brush:html">&lt;input type="text" name="" id="" /&gt;</pre><p>缩写：input:search</p><p>别名：inp[type=search]</p><pre class="brush:html">&lt;input type="search" name="" id="" /&gt;</pre><p>缩写：input:email</p><p>别名：inp[type=email]</p><pre class="brush:html">&lt;input type="email" name="" id="" /&gt;</pre><p>缩写：input:url</p><p>别名：inp[type=url]</p><pre class="brush:html">&lt;input type="url" name="" id="" /&gt;</pre><p>缩写：input:password</p><p>别名：inp[type=password]</p><pre class="brush:html">&lt;input type="password" name="" id="" /&gt;</pre><p>缩写：input:p</p><p>别名：input:password</p><pre class="brush:html">&lt;input type="password" name="" id="" /&gt;</pre><p>缩写：input:datetime</p><p>别名：inp[type=datetime]</p><pre class="brush:html">&lt;input type="datetime" name="" id="" /&gt;</pre><p>缩写：input:date</p><p>别名：inp[type=date]</p><pre class="brush:html">&lt;input type="date" name="" id="" /&gt;</pre><p>缩写：input:datetime-local</p><p>别名：inp[type=datetime-local]</p><pre class="brush:html">&lt;input type="datetime-local" name="" id="" /&gt;</pre><p>缩写：input:month</p><p>别名：inp[type=month]</p><pre class="brush:html">&lt;input type="month" name="" id="" /&gt;</pre><p>缩写：input:week</p><p>别名：inp[type=week]</p><pre class="brush:html">&lt;input type="week" name="" id="" /&gt;</pre><p>缩写：input:time</p><p>别名：inp[type=time]</p><pre class="brush:html">&lt;input type="time" name="" id="" /&gt;</pre><p>缩写：input:number</p><p>别名：inp[type=number]</p><pre class="brush:html">&lt;input type="number" name="" id="" /&gt;</pre><p>缩写：input:color</p><p>别名：inp[type=color]</p><pre class="brush:html">&lt;input type="color" name="" id="" /&gt;</pre><p>缩写：input:checkbox</p><p>别名：inp[type=checkbox]</p><pre class="brush:html">&lt;input type="checkbox" name="" id="" /&gt;</pre><p>缩写：input:c</p><p>别名：input:checkbox</p><pre class="brush:html">&lt;input type="checkbox" name="" id="" /&gt;</pre><p>缩写：input:radio</p><p>别名：inp[type=radio]</p><pre class="brush:html">&lt;input type="radio" name="" id="" /&gt;</pre><p>缩写：input:r</p><p>别名：input:radio</p><pre class="brush:html">&lt;input type="radio" name="" id="" /&gt;</pre><p>缩写：input:range</p><p>别名：inp[type=range]</p><pre class="brush:html">&lt;input type="range" name="" id="" /&gt;</pre><p>缩写：input:file</p><p>别名：inp[type=file]</p><pre class="brush:html">&lt;input type="file" name="" id="" /&gt;</pre><p>缩写：input:f</p><p>别名：input:file</p><pre class="brush:html">&lt;input type="file" name="" id="" /&gt;</pre><p>缩写：input:submit</p><pre class="brush:html">&lt;input type="submit" value="" /&gt;</pre><p>缩写：input:s</p><p>别名：input:submit</p><pre class="brush:html">&lt;input type="submit" value="" /&gt;</pre><p>缩写：input:image</p><pre class="brush:html">&lt;input type="image" src="" alt="" /&gt;</pre><p>缩写：input:i</p><p>别名：input:image</p><pre class="brush:html">&lt;input type="image" src="" alt="" /&gt;</pre><p>缩写：input:button</p><pre class="brush:html">&lt;input type="button" value="" /&gt;</pre><p>缩写：input:b</p><p>别名：input:button</p><pre class="brush:html">&lt;input type="button" value="" /&gt;</pre><p>缩写：isindex</p><pre class="brush:html">&lt;isindex /&gt;</pre><p>缩写：input:reset</p><p>别名：input:button[type=reset]</p><pre class="brush:html">&lt;input type="reset" value="" /&gt;</pre><p>缩写：select</p><pre class="brush:html">&lt;select name="" id=""&gt;&lt;/select&gt;</pre><p>缩写：option</p><pre class="brush:html">&lt;option value=""&gt;&lt;/option&gt;</pre><p>缩写：textarea</p><pre class="brush:html">&lt;textarea name="" id="" cols="30" rows="10"&gt;&lt;/textarea&gt;</pre><p>缩写：menu:context</p><p>别名：menu[type=context]&gt;</p><pre class="brush:html">&lt;menu type="context"&gt;&lt;/menu&gt;</pre><p>缩写：menu:c</p><p>别名：menu:context</p><pre class="brush:html">&lt;menu type="context"&gt;&lt;/menu&gt;</pre><p>缩写：menu:toolbar</p><p>别名：menu[type=toolbar]&gt;</p><pre class="brush:html">&lt;menu type="toolbar"&gt;&lt;/menu&gt;</pre><p>缩写：menu:t</p><p>别名：menu:toolbar</p><pre class="brush:html">&lt;menu type="toolbar"&gt;&lt;/menu&gt;</pre><p>缩写：video</p><pre class="brush:html">&lt;video src=""&gt;&lt;/video&gt;</pre><p>缩写：audio</p><pre class="brush:html">&lt;audio src=""&gt;&lt;/audio&gt;</pre><p>缩写：html:xml</p><pre class="brush:html">&lt;html xmlns="1999/xhtml"&gt;&lt;/html&gt;</pre><p>缩写：keygen</p><pre class="brush:html">&lt;keygen /&gt;</pre><p>缩写：command</p><pre class="brush:html">&lt;command /&gt;</pre><p>缩写：bq</p><p>别名：blockquote</p><pre class="brush:html">&lt;blockquote&gt;&lt;/blockquote&gt;</pre><p>缩写：acr</p><p>别名：acronym</p><pre class="brush:html">&lt;acronym title=""&gt;&lt;/acronym&gt;</pre><p>缩写：fig</p><p>别名：figure</p><pre class="brush:html">&lt;figure&gt;&lt;/figure&gt;</pre><p>缩写：figc</p><p>别名：figcaption</p><pre class="brush:html">&lt;figcaption&gt;&lt;/figcaption&gt;</pre><p>缩写：ifr</p><p>别名：iframe</p><pre class="brush:html">&lt;iframe src="" frameborder="0"&gt;&lt;/iframe&gt;</pre><p>缩写：emb</p><p>别名：embed</p><pre class="brush:html">&lt;embed src="" type="" /&gt;</pre><p>缩写：obj</p><p>别名：object</p><pre class="brush:html">&lt;object data="" type=""&gt;&lt;/object&gt;</pre><p>缩写：src</p><p>别名：source</p><pre class="brush:html">&lt;source&gt;&lt;/source&gt;</pre><p>缩写：cap</p><p>别名：caption</p><pre class="brush:html">&lt;caption&gt;&lt;/caption&gt;</pre><p>缩写：colg</p><p>别名：colgroup</p><pre class="brush:html">&lt;colgroup&gt;&lt;/colgroup&gt;</pre><p>缩写：fst, fset</p><p>别名：fieldset</p><pre class="brush:html">&lt;fieldset&gt;&lt;/fieldset&gt;</pre><p>缩写：btn</p><p>别名：button</p><pre class="brush:html">&lt;button&gt;&lt;/button&gt;</pre><p>缩写：btn:b</p><p>别名：button[type=button]</p><pre class="brush:html">&lt;button type="button"&gt;&lt;/button&gt;</pre><p>缩写：btn:r</p><p>别名：button[type=reset]</p><pre class="brush:html">&lt;button type="reset"&gt;&lt;/button&gt;</pre><p>缩写：btn:s</p><p>别名：button[type=submit]</p><p>&lt;button type="submit"&gt;&lt;/button&gt;<br>关于更多的HTML以及CSS的缩写请查看：<a href="http://camnpr.com/TuiJianTools/Handler/gotoUrl.ashx?url=http%3A%2F%2Fdocs%7Cemmet%7Cio%2Fcheat-sheet%2F" target="_blank" >官网文档</a></p>]]></description><category>软件开发</category><comments>http://camnpr.com/software-dev/1962.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1962</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1962&amp;key=7c21dcc8</trackback:ping></item><item><title>Photoshop粉笔字效果PS教程</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/software-dev/1714.html</link><pubDate>Tue, 04 Nov 2014 18:40:39 +0800</pubDate><guid>http://camnpr.com/software-dev/1714.html</guid><description><![CDATA[<div id="noimgcss"><p>　今天在跟同事讨论一人专题时想用粉笔效果，但是没做过不知道怎么做&nbsp; 就在网上找&nbsp; 最后找到一个还不错的的教程分享给大家！这个教程主要使用Photoshop制作风化的文字效果，前期主要过程在通道里面进行，剩下的都在图层面板来完成。</p><p align="center"><img style="width: 500px; height: 846px" src="http://camnpr.com/upload/2014/11/201411041840464324.jpg" alt="Photoshop制作逼真的墙面粉笔字效果,PS教程,贵州新华电脑学院" border="0"  data-mce-style="width: 500px; height: 846px;"></p><p>1,使用文字工具，输入文字;</p><p align="center"><img style="width: 500px; height: 1736px" src="http://camnpr.com/upload/2014/11/201411041840485615.jpg" alt="Photoshop制作逼真的墙面粉笔字效果,PS教程,贵州新华电脑学院" border="0"  data-mce-style="width: 500px; height: 1736px;"></p><p>2,按CTRL键点击文字层，调出文字先区;</p><p>3,进入通道面板，新建通道1，填充白色;</p><p>4,滤镜&gt;像素化&gt;铜版雕刻; (视情况可以对粗网点和中长描边反复操作几次)</p><p align="center"><img style="width: 500px; height: 1093px" src="http://camnpr.com/upload/2014/11/201411041840493627.jpg" alt="Photoshop制作逼真的墙面粉笔字效果,PS教程,贵州新华电脑学院" border="0"  data-mce-style="width: 500px; height: 1093px;"></p><p>5,CTRL+D取消选区，复制通道1为通道1副本;</p><p>6,选择铅笔工具，设置前景色为黑色，设置铅笔类型，在文字边缘涂上黑色;</p><p>7,选择直线工具，画上一些黑色线条;</p><p align="center"><img style="width: 500px; height: 1116px" src="http://camnpr.com/upload/2014/11/201411041840531604.jpg" alt="Photoshop制作逼真的墙面粉笔字效果,PS教程,贵州新华电脑学院" border="0"  data-mce-style="width: 500px; height: 1116px;"></p><p>8,按CTRL键点通道1副本，调出通道1副本白色选区;</p><p>9,返回图层面板，关闭文字层，新建图层1，填充白色 #FFFFFF;</p><p>10,按CTRL键，点击通道1，调出通道1白色选区，返回图层面板，新建图层2，填充灰色 #B7B7B7，将图层2置于图层1下面，CTRL+D取消选择。完成最终效果。</p></div>]]></description><category>软件开发</category><comments>http://camnpr.com/software-dev/1714.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1714</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1714&amp;key=48eecb16</trackback:ping></item><item><title>C++中如何判断template类型</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/software-dev/1214.html</link><pubDate>Mon, 16 Jun 2014 11:17:59 +0800</pubDate><guid>http://camnpr.com/software-dev/1214.html</guid><description><![CDATA[<p>在C++中，使用template，有时候可能会需要得到当前所使用的类型.</p><p>本文中使用两种办法来。</p><p>TT类为使用模板的类，</p><p>TT.h</p><pre class="brush:c++">#ifndef _TT_H<br>#define _TT_H<br>#include "stdio.h"<br>template &lt;class T&gt;<br>class TT{<br>public:<br>&nbsp;&nbsp;&nbsp; void printType();<br>&nbsp;&nbsp;&nbsp; void printType(T);<br>};</pre><p>&nbsp;方法1：</p><pre class="brush:c++">template&lt;&gt;<br>void TT&lt;int&gt;::printType(){<br>&nbsp;&nbsp;&nbsp; printf("int/n");<br>}<br>template&lt;&gt;<br>void TT&lt;char&gt;::printType(){<br>&nbsp;&nbsp;&nbsp; printf("char/n");<br>}<br>template&lt;class T&gt;<br>void TT&lt;T&gt;::printType(){<br>&nbsp;&nbsp;&nbsp; printf("other type/n");<br>}</pre><p>&nbsp;方法1结束。</p><p>方法2：</p><pre class="brush:c++">template&lt;class T&gt;<br>void TT&lt;T&gt;::printType(T t){//判断t是不是int类型的<br>&nbsp;&nbsp;&nbsp; printf("%d/n",typeid(t).name() == typeid(1).name());<br>}</pre><p>方法2结束。</p><pre class="brush:c++">#endif<br>main.c<br>#include "TT.h"<br>int main(){<br>&nbsp;&nbsp;&nbsp; TT&lt;int&gt; t1;<br>&nbsp;&nbsp;&nbsp; TT&lt;char&gt; t2;<br>&nbsp;&nbsp;&nbsp; TT&lt;double&gt; t3;<br>&nbsp;&nbsp;&nbsp; t1.printType();<br>&nbsp;&nbsp;&nbsp; t2.printType();<br>&nbsp;&nbsp;&nbsp; t3.printType();<br>&nbsp;&nbsp;&nbsp; int a = 1;<br>&nbsp;&nbsp;&nbsp; char b = 'b';<br>&nbsp;&nbsp;&nbsp; double c = 1.1;<br>&nbsp;&nbsp;&nbsp; t1.printType(a);<br>&nbsp;&nbsp;&nbsp; t2.printType(b);<br>&nbsp;&nbsp;&nbsp; t3.printType(c);<br>&nbsp;&nbsp;&nbsp; return 0;<br>}</pre><p>&nbsp;</p><p>最后的结果为：</p><pre class="brush:text">int<br>char<br>other type<br>1<br>0<br>0</pre>]]></description><category>软件开发</category><comments>http://camnpr.com/software-dev/1214.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1214</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1214&amp;key=e8c27899</trackback:ping></item><item><title>灵者Gif录制（GifRecoder）可生成GIF图片的屏幕录制（录像）工具软件</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/software-dev/1207.html</link><pubDate>Fri, 13 Jun 2014 15:09:53 +0800</pubDate><guid>http://camnpr.com/software-dev/1207.html</guid><description><![CDATA[<div id="noimgcss"><p>之前一直用的生存GIF图片的屏幕录制工具软件LICEcap，很是好用，可是自从用系统win8,win8.1后，这个LICEcap就不支持了。无奈，直到这两天才找到一个比较靠谱叫GifRecoder的可生成<a  href="http://camnpr.com/" target="_blank">gif</a>的屏幕录制软件。现在共享给大家。</p><p><strong>1、灵者Gif录制（GifRecoder）</strong><br></p><div id="attachment_497" class="wp-caption aligncenter"><a title="gif_recorder" href="http://camnpr.com/upload/2014/6/201406131509364802.png" rel="shadowbox[sbpost-496];player=img;" ><img class="size-full wp-image-497" title="gif_recorder" src="http://camnpr.com/upload/2014/6/201406131509364802.png" alt="" width="417" height="644" ></a><p class="wp-caption-text">可生成gif图片的屏幕录制软件</p></div><p>&nbsp;</p><p>软件可以嵌入文字、图片水印，参数设置比较灵活。</p><p><strong>2、灵者Gif录制软件下载地址</strong><br>地址：<a  href="http://android-custom-view.googlecode.com/files/GifRecorder1.0.rar" target="_blank">http://android-custom-view.googlecode.com/files/GifRecorder1.0.rar</a></p><p><strong>3、相关软件介绍</strong><br>1、【图片转换】 GIF动画帧分离工具-GifSplitter V2.0 免安装版<br>2、【动画制作】 AnimateGif(GIF动画制作工具) 1.1 免安装版<br>3、【动画制作】 毅晖GIF动画制作 v1.9.0.0<br>4、【动画制作】 GIF动画制作工具 1.7.6.0 免安装版<br>5、【图像捕捉】 灵者Gif录制 1.0 免安装版<br>6、【图像捕捉】 Gif·Gif·Gif 1.24 汉化版<br>7、【图片压缩】 Advanced GIF Optimizer 4.0.12<br>8、【屏幕录相】 GIF屏幕录像工具 1.02 绿色免费版<br>9、【动画制作】 easy gif animator(gif动画制作工具) V5.1.0 英文特别版<br>10、【图像浏览】 GIF Viewer(查看GIF格式文件) V2.1 英文绿色版<br>11、【动画制作】 GiF Resizer(缩放GIF图片) 1.1 免安装版<br>12、【动画制作】 AnimatGif 0.85 免安装版</p></div>]]></description><category>软件开发</category><comments>http://camnpr.com/software-dev/1207.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1207</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1207&amp;key=be5b8e62</trackback:ping></item><item><title>VS插件 VS.PHP 调试php程序 Visual Studio2010的php文件语法着色</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/software-dev/1202.html</link><pubDate>Thu, 12 Jun 2014 16:15:40 +0800</pubDate><guid>http://camnpr.com/software-dev/1202.html</guid><description><![CDATA[<div id="noimgcss"><p>VS 插件<a href="http://www.vsphp.com/download" target="_blank" rel="nofollow">VS.PHP</a> 调试PHP的方法;</p><p>&nbsp;</p><p>如图:<img onload="ResizeImage(this,520)" src="http://camnpr.com/upload/2014/6/201406121628271858.jpg" alt="VS插件 VS.PHP 调试php程序" title="VS插件 VS.PHP 调试php程序" /></p><p>设置成功之后,就可以像调试 .Net程序一样试调Php程序了!</p><p>&nbsp;</p><p>调试的步骤:</p><p>1.在需要调试的地方先打上断点(F9)</p><p><img onload="ResizeImage(this,520)" src="http://camnpr.com/upload/2014/6/201406121629344734.jpg" alt="VS插件 VS.PHP 调试php程序" title="VS插件 VS.PHP 调试php程序" /></p><p>2.像调试.Net一样运行调试</p><p><img onload="ResizeImage(this,520)" src="http://camnpr.com/upload/2014/6/201406121631140753.jpg" alt="VS插件 VS.PHP 调试php程序" title="VS插件 VS.PHP 调试php程序" /></p><p>运行后.在系统右下角会出现一个小图标,VS.Php built-in webServer</p><p><img onload="ResizeImage(this,520)" src="http://camnpr.com/upload/2014/6/201406121631248002.jpg" alt="VS插件 VS.PHP 调试php程序" title="VS插件 VS.PHP 调试php程序" /></p><p>3.当程序运行到设置断点的地方会停下来,等待调试;此时鼠标放在变量上就会显示变量的值:</p><p><img onload="ResizeImage(this,520)" src="http://camnpr.com/upload/2014/6/201406121631282756.jpg" alt="VS插件 VS.PHP 调试php程序" title="VS插件 VS.PHP 调试php程序" /></p><p>&nbsp;</p><p>1、安装VS.PHP插件<br /><br />2、新建PHP工程：如下图，选择PHP 4 webproject创建PHP工程。</p><p><img title="在新窗口打开图片" src="http://camnpr.com/upload/2014/6/201406121615317304.png" alt="VS插件 VS.PHP 调试php程序" width="620" height="128" /></p><p>3、新建PHP页</p><p><img title="在新窗口打开图片" src="http://camnpr.com/upload/2014/6/201406121615310327.png" alt="VS插件 VS.PHP 调试php程序" width="620" height="334" /></p><p>4、添加PHP代码</p><p><img src="http://camnpr.com/upload/2014/6/201406121615328710.png" alt="VS插件 VS.PHP 调试php程序" /></p><p>5、设置起始页</p><p><img src="http://camnpr.com/upload/2014/6/201406121615321256.png" alt="VS插件 VS.PHP 调试php程序" /></p><p>6、设置断点</p><p><img src="http://camnpr.com/upload/2014/6/201406121615323770.png" alt="VS插件 VS.PHP 调试php程序" /></p><p>&nbsp;</p><p>7、启动调试</p><p><img src="http://camnpr.com/upload/2014/6/201406121615328862.png" alt="VS插件 VS.PHP 调试php程序" /></p><p>&nbsp;</p><p>启动新实例后，将会在任务栏右边(图标通知栏)显示如下图标</p><p><img src="http://camnpr.com/upload/2014/6/201406121615333024.png" alt="VS插件 VS.PHP 调试php程序" /></p><p>8、进入断点</p><p><img src="http://camnpr.com/upload/2014/6/201406121615334742.png" alt="VS插件 VS.PHP 调试php程序" /></p><p>9、继续调试：之后的调试与VS2010的调试方法相同。</p><p><strong>下载插件地址：</strong></p><p><a href="http://camnpr.com/downloadCamnpr/vs.php+for+VS2010(编写PHP、用VS调试php程序，最新的版本，带注册码).zip" target="_blank"><span style="color: #ff0000;"><strong>vs.php+for+VS2010(编写PHP、用VS调试php程序，最新的版本，带注册码).zip</strong></span></a></p></div>]]></description><category>软件开发</category><comments>http://camnpr.com/software-dev/1202.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1202</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1202&amp;key=c537d0c4</trackback:ping></item><item><title>前端构建工具 CssGaga 快速上手指南</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/software-dev/1047.html</link><pubDate>Thu, 08 May 2014 18:16:55 +0800</pubDate><guid>http://camnpr.com/software-dev/1047.html</guid><description><![CDATA[<div id="noimgcss"><p>CssGaga是ytzong（涛哥）基于我们在朋友网日常的重构工作流程，为了提高工作效率而开发并不断完善起来的一个重构辅助工具。运行于Windows + .NET的环境，提供了重构相关的一系列解决方案。最近越来越多的朋友通过腾讯微博、QQ和Email咨询到有关CssGaga的问题，由于CssGaga本身也是在不断升级，以前的教程有些已经陈旧，为了帮助新接触到这个工具的同学，我这里再写一篇日志介绍一下CssGaga的基本使用。</p><h3>CssGaga功能特性</h3><ol>    <li>合并import的CSS文件，开发阶段将CSS文件按模块拆分复用，发布上线后合并减少HTTP请求；</li>    <li>优化、压缩CSS代码，减少带宽占用，加快下载速度；</li>    <li>优化、发布CSS中使用到的图片，可以不必考虑多发、漏发图片文件的情况；</li>    <li>自动应用CSS Sprite技术，开发阶段不用考虑图标合并，便于管理，发布后的多个图标自动合并为一个图片，并自动更新CSS代码处理背景定位；</li>    <li>对CSS代码中使用到的图片自动加时间戳，以便在使用长Cache与更新后的图片及时生效；</li>    <li>样式有多套配色风格时，通过CssGaga可以实现皮肤的自动化同步；</li>    <li>CSS样式、图片一键去色功能，在遇到特殊政治任务的时候，全站能迅速进行去色改版，迅速恢复；</li>    <li>生成iOS设备所需的不同尺寸Icon文件；</li>    <li>处理一些浏览器兼容方面的问题；</li></ol><p><img src="http://camnpr.com/upload/2014/5/201405081816481767.png" alt="" /></p><h3>CssGaga下载和配置</h3><p>运行CssGaga需要Windows操作系统、.Net Framework运行环境。</p><ol>    <li>下载并安装<a title="Microsoft .NET Framework 4.0" href="http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe" rel="nofollow" target="_blank">Microsoft .NET Framework 4.0</a></li>    <li>下载并解压<a href="http://cssgaga.googlecode.com/svn/trunk/upload/CssGaga.zip" rel="nofollow" target="_blank">CssGaga最新版</a>（绿色软件，不用安装）</li>    <li>对CssGaga进行初始化配置</li></ol><p>第一次运行CssGaga前，需要对其进行必要的配置。主要是指定CssGaga的编译目标路径、站点的基本URL。具体步骤：</p><p>打开CssGaga所在目录，复制CssGaga.exe.config.sample文件，重命名为CssGaga.exe.config。</p><p>用任意文本编辑器打开CssGaga.exe.config，默认的代码如下：</p><pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />&lt;configuration&gt;<br /> &lt;appSettings&gt;<br /> &lt;add key=&quot;pathSource&quot; value=&quot;E:\&quot;/&gt;<br /> &lt;add key=&quot;webSiteUrl&quot; value=&quot;http://qzonestyle.gtimg.cn&quot;/&gt;<br /> &lt;add key=&quot;pathReport&quot; value=&quot;/usr/local/imgcache/htdocs&quot;/&gt;<br /> &lt;add key=&quot;pathDest1Name&quot; value=&quot;目标环境1&quot;/&gt;<br /> &lt;add key=&quot;pathDest1&quot; value=&quot;E:\output&quot;/&gt;<br /> &lt;add key=&quot;pathReport1&quot; value=&quot;/usr/local/imgcache/htdocs&quot;/&gt;<br /> &lt;add key=&quot;chkTemp&quot; value=&quot;1&quot;/&gt;<br /> &lt;/appSettings&gt;<br />&lt;/configuration&gt;</pre><p>其中pathDest1Name、pathDest1、pathReport1三个节点为一组，代表一个编译目标，CssGaga支持多组编译目标，要增加新的编译目标，只要复制粘贴这三个节点，修改&ldquo;1&rdquo;为&ldquo;2&rdquo;及更大的数字，相同数字为一组。例如，我设定本机的一个目录为编译目标：</p><pre>&lt;add key=&quot;pathDest1Name&quot; value=&quot;本机输出&quot;/&gt;<br />&lt;add key=&quot;pathDest1&quot; value=&quot;D:\ofcss\style&quot;/&gt;<br />&lt;add key=&quot;pathReport1&quot; value=&quot;/style&quot;/&gt;</pre><p>pathDest1Name代表这个目标在CssGaga界面上显示的名称，pathDest1代表这个目标的真实物理路径，pathReport1代表这个路径编译机上的地址（不使用SMB共享进行文件部署的话，这个节点设置不设置就无所谓了，可以考虑设置为你站点上该目录的相对路径）。</p><div>&nbsp;</div><p>上面的设定表示当我在CssGaga上勾选&ldquo;本机输出&rdquo;时，编译后的CSS文件和图片文件会生成到D:\ofcss\style目录下。</p><h3>CssGaga开发约定</h3><p>根据互联网上一些优秀团队的经验以及我们自己在工作中的经验，CssGaga建议使用者在进行重构时遵循以下约定：</p><h4>1. 目录结构</h4><ul>    <li>把所有的CSS文件放在同一个目录下。网页中用link标签引用的CSS文件，我们称之为CSS桥文件（CSS Bridge），真正的样式规则代码按照模块拆分存放在不同的CSS文件中，这些CSS文件以&ldquo;.import.css&rdquo;结尾，代表它们不能直接被页面引用，而要在桥文件中通过@import指令导入。</li>    <li>把所有的图片文件放在CSS文件所在目录下的子目录（例如img）中。</li>    <li>把所有需要进行CSS Sprite合并的图标文件放在CSS文件所在目录下的slice子目录中。</li>    <li>把所有自定义鼠标样式（.ani、.cur）放在CSS文件所在目录下的absolute子目录中。例如：</li></ul><p><img src="http://camnpr.com/upload/2014/5/201405081816491433.png" alt="image" /></p><h4>2.代码编写</h4><ul>    <li>在CSS Bridge文件中，用@import指令，把页面用到的模块css组合到一起</li>    <li>在编写需要做CSS Sprite合并的背景图片样式时，不要缩写，必须把background-image样式单独写，并且不写background-position属性（因为这些图标在开发阶段并没有合并，也就不需要定位，合并之后的background-position会由CssGaga自动生成），如果有PNG Alpha透明的图片，需要针对IE6单独做一张PNG 索引色透明图片时，可以用_background-image做Hack，CssGaga在合并时，会单独为IE6合并一张图片。</li>    <li>@import指令不要嵌套使用（A import B，则B不要再import其它文件），原则上不要import其它目录的文件（CssGaga不会做合并处理）。</li></ul><h4>3. 编译发布</h4><p>在重构完成后，运行CssGaga，选择开发目录（注意与生成目标路径对应，比如开发路径是E:\ofcss\dev，目标路径是E:\ofcss\output，那么E:\ofcss\dev\<span style="color: #ff0000;" data-mce-style="color: #ff0000;">style\index.css</span>就会编译到E:\ofcss\output\<span style="color: #ff0000;" data-mce-style="color: #ff0000;">style\index.css</span>），勾选需要使用的功能，选择编译目标。然后把需要发布的CSS文件拖入CssGaga的主窗口，就会自动处理并编译到目标路径（相关的图片文件自动复制），如图：</p><p><img src="http://camnpr.com/upload/2014/5/201405081816507552.png" alt="img" /></p><p>有关CssGaga更多功能介绍和使用技巧，参见：</p><p><a title="CssGaga帮助索引" href="http://www.99css.com/archives/542" rel="nofollow" target="_blank">CssGaga帮助索引</a></p><p>来源：http://www.ofcss.com/2012/03/22/cssgaga-quick-start.html</p></div>]]></description><category>软件开发</category><comments>http://camnpr.com/software-dev/1047.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=1047</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=1047&amp;key=a4abd333</trackback:ping></item><item><title>如何处理The requested resource (/JSPExample/registerServlet) is not available - J2EE</title><author>camnpr@163.com (佚名)</author><link>http://camnpr.com/software-dev/827.html</link><pubDate>Tue, 07 Jan 2014 11:10:43 +0800</pubDate><guid>http://camnpr.com/software-dev/827.html</guid><description><![CDATA[<p>The requested resource (/JSPExample/registerServlet) is not available<br>HTTP Status 404 - /JSPExample/registerServlet<br><br>--------------------------------------------<br><br>type Status report<br><br>message /JSPExample/registerServlet<br><br>description The requested resource (/JSPExample/registerServlet) is not available.<br><br><br>--------------------------------------------<br><br>Apache Tomcat/6.0.35<br><br><span color="#e78608" data-mce-style="color: #e78608;" style="color: #e78608;">------解决方案--------------------</span><br> &lt;url-pattern&gt;/RegisterServlet&lt;/url-pattern&gt;<br><br>大小写应保持一致：<br>/JSPExample/RegisterServlet<br><br>如果还不行，就是Context路径名并不是JSPExample。当然也可能是没成功发布。</p>]]></description><category>软件开发</category><comments>http://camnpr.com/software-dev/827.html#comment</comments><wfw:comment>http://camnpr.com/</wfw:comment><wfw:commentRss>http://camnpr.com/feed.asp?cmt=827</wfw:commentRss><trackback:ping>http://camnpr.com/cmd.asp?act=tb&amp;id=827&amp;key=db8e1fff</trackback:ping></item></channel></rss>
