<?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>TOPMING</title>
	<atom:link href="http://topming.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://topming.com</link>
	<description>做人如果无梦想同条咸鱼有咩分别，关注前端开发、互联网、开源项目、数码产品与玩具。</description>
	<lastBuildDate>Tue, 14 Feb 2012 06:03:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>我的Altman</title>
		<link>http://topming.com/altman-history/</link>
		<comments>http://topming.com/altman-history/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 15:30:26 +0000</pubDate>
		<dc:creator>hwangzhiming</dc:creator>
				<category><![CDATA[windows phone]]></category>
		<category><![CDATA[altman]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://topming.com/?p=1600</guid>
		<description><![CDATA[我想现在altman应该被很多windows phone 用户熟知了吧，曾被手机中国的编辑魏星喻为wp7下“最给力的腾讯微博客户端”，也是在他和众多网友的支持下，altman从8月22日发布，截至2012年元旦前，共发布了8个版本，授权数方面在一个月多点的时间内授权数达到了1000（这个数字仅限于mango越狱用户），在12月13日，突破了一万授权数，这是一个令我十分兴奋的数字，目前市场下载量超过6000，并已经转入了开源社区（貌似开源的那天官方的预览版出现了），希望通过开源，让更多的人对altman放心，altman是光明磊落，也希望能够成为一个wp7开发样例，&#160;，&#160;，可能很多人都不知道altman为什么会出现为什么叫altman ...]]></description>
			<content:encoded><![CDATA[<p>我想现在altman应该被很多windows phone 用户熟知了吧，曾被手机中国的编辑<a href="http://t.qq.com/weixing2921" target="_blank">魏星</a>喻为wp7下“最给力的腾讯微博客户端”，也是在他和众多网友的支持下，altman从8月22日发布，截至2012年元旦前，共发布了8个版本，授权数方面在一个月多点的时间内授权数达到了1000（这个数字仅限于mango越狱用户），在12月13日，突破了一万授权数，这是一个令我十分兴奋的数字。目前市场下载量超过6000，并已经转入了开源社区（貌似开源的那天官方的预览版出现了），希望通过开源，让更多的人对altman放心，altman是光明磊落，也希望能够成为一个wp7开发样例。</p>
<p>&nbsp;</p>
<p><img class="alignnone" title="version history" src="https://public.sn2.livefilestore.com/y1plukzGZPtu7RAWFTT6w1YhPtSt57ys-s3fHexUJ6pnA2XWg2hoaoCuujNWEzmoPzl1AkE9XEmzhD9ej84ax04nQ/altman.version.png?psid=1" alt="" width="679" height="162" /></p>
<p>&nbsp;</p>
<p>可能很多人都不知道altman为什么会出现为什么叫altman，这是由于当时入手windows phone手机是看到市场和论坛里面没有一个给力的客户端，加上曾经了解过silverlight，所以才决定自己写一个，可能和那些很早开始玩wp7手机的朋友一样，觉得怎么老是被忽略，要啥没啥，太out了，这就是叫altman的原因吧。</p>
<p>&nbsp;</p>
<div class="wp-caption alignnone" style="width: 710px"><img title="altman" src="https://public.sn2.livefilestore.com/y1pUQRLVGv4i_LfcYPap9JR3stBSJtNMmUr2JEsDEllJxLUQUgYvrV-CQKMz97SJnqKk2vTIuwz7Fzhb9MQXTGtpA/altman.birth.jpg?psid=1" alt="altman诞生地" width="700" height="356" /><p class="wp-caption-text">altman诞生地</p></div>
<p>&nbsp;</p>
<p>altman的第一个版本在不到两个星期的时间就完成了（我想不明白为什么某讯为什么做这个要那么久？因为当时我就通过各种渠道得知其内部已经有了一个版本），altman的优点是原生、快（天下武功为快不破，哈哈），当时在坛子里发布还特地写成了第一款惹人喷，同时授权方式也很蛋疼，所幸的是有<a href="http://t.qq.com/geffzhang" target="_blank">善友</a>指点，所以有了现在的授权方式。</p>
<p>&nbsp;</p>
<div class="wp-caption alignnone" style="width: 710px"><img class=" " title="altman v1.x" src="https://public.sn2.livefilestore.com/y1pqMTy2owzt8k1vv3YYCDyYRB0g4mwDpyksC_WvQbmBOs29-6TsQAg2nX2D_N_xX6-TQbe53OtPo58LRTUNEoUyQ/altman.v1.x.png?psid=1" alt="altman v1.x" width="700" /><p class="wp-caption-text">altman v1.x</p></div>
<p>&nbsp;</p>
<p>我的第一个wp应用就这样持续更新到了1.3，期间要感谢<a href="http://t.qq.com/andywu8324" target="_blank">Andy Wu</a>在版本和测试上的帮助，为我提供了先进的思想，也要感谢<a href="http://t.qq.com/kylin17" target="_blank">路人乙</a>、<a href="http://t.qq.com/jiamaocode" target="_blank">家猫</a>、<a href="http://t.qq.com/seraph_pt" target="_blank">士之小涛</a>在技术上的支持，感谢<a href="http://t.qq.com/xiayan1984" target="_blank">AnitaXia</a>、<a href="http://t.qq.com/tomato1106" target="_blank">吴双</a>等，随后altman开始计划重构，开始懒得去写，到了11月才开始滚键盘，直到2011年12月6日发布了全新的2.0版本。</p>
<p>&nbsp;</p>
<p>这个版本我叫它“大迈一步”，将近一个月的空余时间重构，人性化了很多进步了很多，重构过程中的指导思想就是用户会要什么功能（程序想到的功能不一定是用户想要的功能，这个在altman的发布中就体现了），慢慢地去实现改进，这也是我最喜欢最满意的一个版本，接着就是准备发码，承诺开源。</p>
<p>&nbsp;</p>
<div class="wp-caption alignnone" style="width: 320px"><img title="altman v2.x" src="https://public.sn2.livefilestore.com/y1pD3dcPCVz0qcxOdyXwRZXTNtmHXTP5qo1rCL_Fr7uj_8_oofvzyuEhKRBmLVMXc1lx-ppIKR6Mlnq8-F4VS8tew/altman.v2.x.png?psid=1" alt="altman v2.x" width="310" height="552" /><p class="wp-caption-text">altman v2.x</p></div>
<p>&nbsp;</p>
<p>新版较旧版的变化，主要是在用户体验、应用功能和结构上。</p>
<p>&nbsp;</p>
<p>首先，用户界面由原先的黑色变成了清新的蓝白调，重新编写的界面将主题资源独立了出来，由于时间关系就上架时只有一个主题，后一版本才加入了主题切换，也让很多人误以为黑色就此没有了；</p>
<p>&nbsp;</p>
<p>接着，就是功能上的变化，主要是功能更加齐全并且人性化，如提及一个人、插入话题、全屏式地插入表情、后台运行等等，这里提一下全屏方式，这是我综合各种平台的表情插入方式做的一个大胆改变，我一直认为半屏小而且要不断翻页很麻烦，所以我自己这种完全暴露出来的野蛮方式，这里也是我开源的一个目的，我希望更多的人可以做自己喜欢的客户端，而不是你们产品所想的大众化强奸式客户端。比如，我就不要像那些iphone的客户端把一些按钮做在屏幕的右上角和左上角，我单手的操作的时候手指触那里老麻烦了，我就喜欢摸“下半身”，所以altman大部分的操作按钮被我做到在下面。</p>
<p>&nbsp;</p>
<p>最后，就是应用的结构了，原本只有简单的两层变成了现在稍微不简单的多层，在应用和SDK之间插入了数据层，加入了新的定时任务和抽取了一些公共的方法出来。</p>
<p>&nbsp;</p>
<div class="wp-caption alignnone" style="width: 710px"><img title="altman的结构变化" src="https://public.sn2.livefilestore.com/y1pkR8oCxj_C-hI8pLCUU1_2g4yI_NhjgYaNYRzfcJ_i8Z5GNPqJFMaKvR-4qxJVdMC_yPEWqOqk4SlivPH5dHBbw/altman%E7%BB%93%E6%9E%84%E5%8F%98%E5%8C%96.png?psid=1" alt="altman的结构变化" width="700" height="212" /><p class="wp-caption-text">altman的结构变化</p></div>
<p>&nbsp;</p>
<p>新版版本在坛子里面放风，发布前又找了很多朋友来做内测，这里也要感谢这一部分的朋友。</p>
<p>&nbsp;</p>
<p>altman作为一个业余的windows phone 小白开发的第一个应用，有很多不足，希望开源能使它变得更好，我记得坛子里有一个网友说“楼主是抱着必死的决心来做的”，altman的出现并不是为了代替官方客户端，只是一个挨踢民工的一时冲动一股热情，随着就是与人分享了，altman不会就此停止的，同时我在慢慢回顾，补写些文章。如果你问我，等官方的客户端变好用了，它和altman我会选择哪一个，我会告诉你，我希望微博慢慢淡出我的生活！</p>
<p>&nbsp;</p>
<p>最后最后，感谢所有热心支持过和支持altman的童鞋们，更加要感谢捐赠过altman的网友们，下面是捐赠网友的名单（不分先后和金额）：</p>
<p>&nbsp;</p>
<p>宋秉法、李艳、黄飚、王宇薪、许一挺、韦有辉、廖涛、沈哲、零龙、张群、金顺昌、许远朋、向建明、黎果、毛云波、黎卓斯</p>
<p>&nbsp;</p>
<p><span style="color: #808080;">如果有遗漏请联系我添加，另外如果你不想出现在这里请联系我删除。</span></p>
<p>&nbsp;</p>
<p>附：</p>
<p>应用主页：<a href="http://topming.com/app/altman/" target="_blank">http://topming.com/app/altman/</a></p>
<p>旧版主页：<a href="http://topming.com/app/altman_v1/" target="_blank">http://topming.com/app/altman_v1/</a></p>
<p>操作指导：<a href="http://topming.com/app/altman/guide.htm" target="_blank">http://topming.com/app/altman/guide.htm</a></p>
<p>开源地址：<a href="http://altman.codeplex.com/" target="_blank">http://altman.codeplex.com/</a></p>
<p>市场地址：<a href="http://www.windowsphone.com/en-US/apps/2066102b-7fa0-4a11-a362-4ebf9a7efa3c" target="_blank">http://www.windowsphone.com/en-US/apps/2066102b-7fa0-4a11-a362-4ebf9a7efa3c</a></p>
<p>捐赠地址：<a href="https://mai.alipay.com/p.htm?id=2011120101346173" target="_blank">https://mai.alipay.com/p.htm?id=2011120101346173</a></p>
]]></content:encoded>
			<wfw:commentRss>http://topming.com/altman-history/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>YUI Doc文档化(一)</title>
		<link>http://topming.com/creating-beautiful-doc-with-yoidoc-1/</link>
		<comments>http://topming.com/creating-beautiful-doc-with-yoidoc-1/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 16:51:31 +0000</pubDate>
		<dc:creator>hwangzhiming</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[YUI]]></category>
		<category><![CDATA[YUI Doc]]></category>

		<guid isPermaLink="false">http://dev.topming.com/?p=1447</guid>
		<description><![CDATA[不管你是做前端还是做后台，你终会发现，不管你的代码自说明再怎么好，但你和别的同事共同开发或者重复应用或者经过一段时间之后自己去维护代码的时候，你都会发现同事或者自己都会产生很多疑问，或是不清楚已有哪些接口或是忘记具体的方法等等，就不得不费功夫去询问，去打开源文件来查找，此时如果有相应的文档供查询，那么就可以节省很多成本，文档化工具有很多，我只为文档化Javascript，这里选用的是YUI Doc，&#160;，YUI Doc是由注解驱动(comment-driven)的系统，通过解析代码中描述结构的注解来生成文档，由于它纯粹的依赖于注解，所以并不像一些模拟系统一样需要有惯用语和代码模式，YUI Doc基于Python而且依赖三个类库和一个工具 ...]]></description>
			<content:encoded><![CDATA[<p>不管你是做前端还是做后台，你终会发现，不管你的代码自说明再怎么好，但你和别的同事共同开发或者重复应用或者经过一段时间之后自己去维护代码的时候，你都会发现同事或者自己都会产生很多疑问，或是不清楚已有哪些接口或是忘记具体的方法等等，就不得不费功夫去询问，去打开源文件来查找，此时如果有相应的文档供查询，那么就可以节省很多成本。文档化工具有很多，我只为文档化Javascript，这里选用的是YUI Doc。</p>
<p>&nbsp;</p>
<p><a href="http://developer.yahoo.com/yui/yuidoc/">YUI Doc</a>是由注解驱动(comment-driven)的系统，通过解析代码中描述结构的注解来生成文档。由于它纯粹的依赖于注解，所以并不像一些模拟系统一样需要有惯用语和代码模式。YUI Doc基于Python而且依赖三个类库和一个工具，所以像我这种没接触过的喜欢双击一下就完事的人来说，觉得挺费劲的，研究了Windows 7(64bit)下YUI Doc的安装（具体安装方法在YUI Doc的压缩包中有描述）：</p>
<p>&nbsp;</p>
<p><strong>1.安装<a title="Python" href="http://www.python.org/getit/" target="_blank">Python</a></strong></p>
<p><a title="Python" href="http://www.python.org/getit/" target="_blank"></a>建议安装2.7版本，后面用到的easy_install目前只支持到这个版本，其他我还没试过，待验证，安装完之后在环境变量Path中添加安装目录，如C:Python27。</p>
<p><strong>2.安装<a title="Setup Tools" href="http://pypi.python.org/pypi/setuptools" target="_blank">Setup Tools</a></strong></p>
<p><a title="Setup Tools" href="http://svn.python.org/projects/sandbox/branches/setuptools-0.6/easy_install.py" target="_blank"></a>安装程序无法识别出我的Python，最后用了个py安装程序，在装好Python后直接双击就好了，将会在Python的安装目录下生成一个Script文件夹，在将这个文件夹的路径添加到环境变量Path中，到此我们就可以用easy_install去安装依赖库了，跟Linux下差不多。</p>
<p><strong>3.安装依赖库</strong></p>
<pre class="brush:shell">easy_install pygments
easy_install Cheetah
easy_install simplejson</pre>
<p><strong>4.配置YUI Doc</strong><br />
拷贝yuidocbinexample.bat文件改名(如demo.bat)并打开，改名可以配置多个文件执行不同的任务。</p>
<pre class="brush:shell">REM The location of your yuidoc install
SET yuidoc_home="c:homewwwyuidocyuidoc"
REM YUI Doc所在路径

REM The location of the files to parse.  Parses subdirectories, but will fail if
REM there are duplicate file names in these directories.  You can specify multiple
REM source trees:
REM      SET parser_in="c:homewwwyahoo.devsrcjs c:homewwwEvent.devsrc"
SET parser_in="c:homewwwyahoo.devsrcjs"
REM 源码路径

REM The location to output the parser data.  This output is a file containing a
REM json string, and copies of the parsed files.
SET parser_out="c:homewwwdocsparser"
REM 解析的js文件

REM The directory to put the html file outputted by the generator
SET generator_out="c:homewwwdocsgenerator"
REM 生成的API文档</pre>
<p>保存demo.bat，双击运行即可。</p>
<p>附 Stephen Woods — Creating Beautiful Documentation with YUI Doc的视频及PPT：</p>
<p><object width="570" height="300" allowfullscreen="true"><param name="movie" value="http://d.yimg.com/m/up/ypp/default/player.swf" /><param name="flashVars" value="vid=16467729&amp;autoPlay=0" /><param name="wmode" value="transparent" /><embed type="application/x-shockwave-flash" width="570" height="300" src="http://d.yimg.com/m/up/ypp/default/player.swf" flashvars="vid=16467729&amp;autoPlay=0" allowfullscreen="true"></embed></object></p>
<div id="__ss_2378275" style="width: 595px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Beautiful Documentation with YUI Doc" href="http://www.slideshare.net/ysaw/beautiful-documentation-with-yui-doc">Beautiful Documentation with YUI Doc</a></strong></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/ysaw">Stephen Woods</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://topming.com/creating-beautiful-doc-with-yoidoc-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>浏览器区分方法</title>
		<link>http://topming.com/distinguish-browser/</link>
		<comments>http://topming.com/distinguish-browser/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 15:17:24 +0000</pubDate>
		<dc:creator>hwangzhiming</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[浏览器]]></category>

		<guid isPermaLink="false">http://dev.topming.com/?p=1441</guid>
		<description><![CDATA[文章主要的内容为常用的浏览器区分方法，包括注释、脚本等方法，【注释区分IE】，&#60;!--[if IE]&#62; Only IE &#60;![endif]--&#62;，所有的IE可识别，&#60;!--[if IE 5.0]&#62; Only IE 5.0 &#60;![endif]--&#62;，只有IE5.0可以识别，&#60;!--[if gt IE 5.0]&#62; Only IE 5.0+ &#60;![endif]--&#62;，高于IE5.0都可以识别，&#60;!--[if lt IE 6]&#62; Only IE 6- &#60;![endif]--&#62;，低于IE6可识别，&#60;!--[if gte IE 6]&#62; Only IE 6/+ &#60;![endif]--&#62;，IE6以及IE6以上都可识别，&#60;!--[if lte IE 7]&#62; Only IE 7/- &#60;![endif]--&#62;，IE7及ie7以下版本可识别，&#60;!--[if !IE]&#62;&#60;--&#62;&#60;![endif]--&#62;，非ie，lte：Less than or equal to，小于或等于 ...]]></description>
			<content:encoded><![CDATA[<p>文章主要的内容为常用的浏览器区分方法，包括注释、脚本等方法。<br />
【注释区分IE】</p>
<pre class="brush:php">&lt;!--[if IE]&gt; Only IE &lt;![endif]--&gt;
所有的IE可识别
&lt;!--[if IE 5.0]&gt; Only IE 5.0 &lt;![endif]--&gt;
只有IE5.0可以识别
&lt;!--[if gt IE 5.0]&gt; Only IE 5.0+ &lt;![endif]--&gt;
高于IE5.0都可以识别
&lt;!--[if lt IE 6]&gt; Only IE 6- &lt;![endif]--&gt;
低于IE6可识别
&lt;!--[if gte IE 6]&gt; Only IE 6/+ &lt;![endif]--&gt;
IE6以及IE6以上都可识别
&lt;!--[if lte IE 7]&gt; Only IE 7/- &lt;![endif]--&gt;
IE7及ie7以下版本可识别
&lt;!--[if !IE]&gt;&lt;--&gt;&lt;![endif]--&gt;
非ie</pre>
<p>lte：Less than or equal to，小于或等于<br />
lt ：Less than，小于<br />
gte：Greater than or equal to，大于或等于<br />
gt ：Greater than，大于<br />
! ：不等于</p>
<p>【CSS Hack】</p>
<ol>
<li><span style="color: #010101; font-family: 微软雅黑;"> _ ，只有IE6可以识别</span></li>
<li><span style="color: #010101; font-family: 微软雅黑;">+/*，IE6、7可以识别 </span></li>
<li>
            <span style="font-family: 微软雅黑; color: #010101;">IE6支持重定义中的</span>!important如</p>
<pre class="brush:css">
            .demo1{ </span>color:black!important;color:red;/*显示为红色*/}
            /*重定义*/
            .demo2{color:black!important;}
            .demo2{color:red;}/*显示为黑色*/
          </pre>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://topming.com/distinguish-browser/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DarkZ</title>
		<link>http://topming.com/darkz/</link>
		<comments>http://topming.com/darkz/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 02:15:24 +0000</pubDate>
		<dc:creator>hwangzhiming</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://dev.topming.com/?p=1426</guid>
		<description><![CDATA[情人节礼物，同时兑现在wordpress中文论坛上说年前放出DarkZ下载链接的承诺，欢迎各位下载使用，因为主题初衷是用于本人的个人博客，所以通用性受到了一定的忽略，望谅解，使用备注：，配合插件WP Thread Comment以获取更好的评论体验，使用了Lightbox和LazyLoad，导航只做一级，侧栏不可定制，使用代码实现，实现函数在function.php中，主题比较适合熟悉WP的大侠拿来改造，【首页截图】，【下载地址】，Download，]]></description>
			<content:encoded><![CDATA[<p>情人节礼物，同时兑现在wordpress中文论坛上说年前放出DarkZ下载链接的承诺，欢迎各位下载使用，因为主题初衷是用于本人的个人博客，所以通用性受到了一定的忽略，望谅解。使用备注：<br />
<br/></p>
<ul>
<li>配合插件WP Thread Comment以获取更好的评论体验</li>
<li>使用了Lightbox和LazyLoad</li>
<li>导航只做一级</li>
<li>侧栏不可定制，使用代码实现，实现函数在function.php中</li>
<li>主题比较适合熟悉WP的大侠拿来改造</li>
</ul>
<p><br/><br />
【首页截图】<br />
<img src="http://src.topming.com/wp-content/resource/2011/darkz_shot.png" width="580px" alt="DarkZ" /><br />
<br/><br />
【下载地址】<br />
<a href="http://src.topming.com/wp-content/resource/dl/darkz_2011.2.14.zip">Download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://topming.com/darkz/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>IE9尽享网络之美？</title>
		<link>http://topming.com/ie9-experience-a-more-beautiful-web/</link>
		<comments>http://topming.com/ie9-experience-a-more-beautiful-web/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 03:41:49 +0000</pubDate>
		<dc:creator>hwangzhiming</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[IE9]]></category>

		<guid isPermaLink="false">http://dev.topming.com/?p=1295</guid>
		<description><![CDATA[2月10日，微软发布了IE9 RC版，在microsoft的官网上我们看到了IE9带来的新功能：，简洁的设计，让我觉得各大浏览器都长成一个样子了，所谓“将焦点放在网页上”，这是Chrome早已提出并实现的了；刷新停止按钮太小，功能按钮在右侧，在大屏幕上感觉好遥远啊，任务栏中固定网址，Vista/win7用户来说应该是非常方便的，选项卡可以分离，对大屏幕的用户来说应该是一个很好的体验，常用网址，其实这已经不是什么新鲜的功能，只是IE未曾有过罢了，下载管理器，这显然也是IE凹凸曼了，通知栏，出现在底部 ...]]></description>
			<content:encoded><![CDATA[<p>2月10日，微软发布了IE9 RC版，在<a href="http://windows.microsoft.com/zh-CN/internet-explorer/help/ie-9/whats-new-in-internet-explorer-9" target="_blank">microsoft的官网</a>上我们看到了IE9带来的新功能：</p>
<ol>
<li><strong>简洁的设计</strong>，让我觉得各大浏览器都长成一个样子了，所谓“将焦点放在网页上”，这是Chrome早已提出并实现的了；刷新停止按钮太小，功能按钮在右侧，在大屏幕上感觉好遥远啊</li>
<li><strong>任务栏中固定网址</strong>，Vista/win7用户来说应该是非常方便的</li>
<li><strong>选项卡可以分离</strong>，对大屏幕的用户来说应该是一个很好的体验</li>
<li><strong>常用网址</strong>，其实这已经不是什么新鲜的功能，只是IE未曾有过罢了</li>
<li><strong>下载管理器</strong>，这显然也是IE凹凸曼了</li>
<li><strong>通知栏</strong>，出现在底部，我常常注意不到这个提示，不如旧方式明显</li>
<li><strong>HTML5和CSS3标准支持</strong>（增加了新特性的支持，但并非100%支持，毕竟标准还没稳定，情有可原），脚本事件也支持标准了，但如果IE9只能用在VISTA/WIN7上，很多都还是浮云</li>
<li><strong>新的Javascript（Chakra）引擎和GPU加速</strong>
<p><img src="http://src.topming.com/wp-content/resource/2011/ie9rc-acid3-test.png" alt="ie9rc-acid3-test" width="500" /></p>
<p>ACID3测试比Firefox3.6多了一分，Chrome/Safari/Opera都是满分100，不值得骄傲</p>
<p><img src="http://src.topming.com/wp-content/resource/2011/webkit-sunspider-js-brenchmark-results.jpg" alt="" width="500" /></p>
<p>WebKit SunSpider JavaScript基准0.9.1版本测试结果中，IE9RC的成绩是最好的，</li>
</ol>
<p><br/><br />
IE9对于之前的版本是个跨越，无奈的是适用平台的局限、原有版本的市场占有率和国内环境（曾有报告中国是IE6最多的国家也是妨碍IE6灭亡的国家），如今感觉IE9在追赶着同行，它还能有大哥大的姿态吗？如果IE9不能普及，一切都显得很神马很浮云，如何能尽显网络之美呢？不给力啊&#8230;</p>
<p><br/><br />
来一张国外的图片说明一下各个浏览器的不同，非常有意思。<br />
<img src="http://src.topming.com/wp-content/resource/2011/diff_between_browser.png"  width="520px" alt="diff_between_browser" /></p>
]]></content:encoded>
			<wfw:commentRss>http://topming.com/ie9-experience-a-more-beautiful-web/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>【非插件实现】之分页</title>
		<link>http://topming.com/wordpress-page-navigation/</link>
		<comments>http://topming.com/wordpress-page-navigation/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 13:07:42 +0000</pubDate>
		<dc:creator>hwangzhiming</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[分页]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://dev.topming.com/?p=1340</guid>
		<description><![CDATA[本文章介绍通过在function.php中添加分页函数，并且在模板中调用实现非插件实现分页函数（当然你可以使用分页插件来实现），方法带一个参数$num，指定每页显示的条数，若不指定则默认取后台设置的值，/*，分页函数，*/，if ( ! function_exists( 'topming_page_nav' ) ) :，function topming_page_nav($num)，{，global $paged,$posts_per_page,$wp_query;，if(empty($paged) &#124;&#124; $paged == 0){，            $paged = 1;，    }，$max_pages=$wp_query-&#62;max_num_pages;，if($max_pages&#62;1) {，$posts_per_page_num=$num?$num:$posts_per_page;，$pages_to_show = 5;//显示页码数 ...]]></description>
			<content:encoded><![CDATA[<p>本文章介绍通过在function.php中添加分页函数，并且在模板中调用实现非插件实现分页函数（当然你可以使用分页插件来实现）。方法带一个参数$num，指定每页显示的条数，若不指定则默认取后台设置的值。</p>
<pre class="brush:php">/*
分页函数
*/
if ( ! function_exists( 'topming_page_nav' ) ) :
function topming_page_nav($num)
{
	global $paged,$posts_per_page,$wp_query;
	if(empty($paged) || $paged == 0){
            $paged = 1;
    }
	$max_pages=$wp_query-&gt;max_num_pages;
	if($max_pages&gt;1) {
		$posts_per_page_num=$num?$num:$posts_per_page;
		$pages_to_show = 5;//显示页码数，超过显示...
		$pages_to_show_minus=$pages_to_show-1;
		$half_start_page_num=floor($pages_to_show_minus/2);
		$half_end_page_num=ceil($pages_to_show_minus/2);
		$start_page_num=($paged-$half_start_page_num)&lt;=0?1:($paged-$half_start_page_num);
		$end_page_num=$paged+$half_end_page_num;

	   if(($end_page_num - $start_page_num) != $pages_to_show_minus) {
			$end_page_num = $start_page_num + $pages_to_show_minus;
		}

		if($end_page_num &gt; $max_pages) {
			$start_page_num = $max_pages - $pages_to_show_minus;
			$end_page_num = $max_pages;
		}

		echo '&lt;div class="post-paging"&gt;';

		if ($start_page_num &gt;= 2 &amp;&amp; $pages_to_show &lt; $max_pages) {
					echo '&lt;a href="'.clean_url(get_pagenum_link()).'" title="第一页" class="first"&gt;第一页&lt;/a&gt;';
					echo '&lt;span class="extend"&gt;...&lt;/span&gt;';
		 }
		previous_posts_link('&lt;span class="prev" title="前一页"&gt;«&lt;/span&gt;');
		for($i = $start_page_num; $i  &lt;= $end_page_num; $i++){
			if($i==$paged){
				echo '&lt;a  title="当前第'.$i.'页" class="current"&gt;'.$i.'&lt;/a&gt;';
			}
			else if($i&gt;0){
				echo '&lt;a href="'.clean_url(get_pagenum_link($i)).'" title="第'.$i.'页" class="page_num"&gt;'.$i.'&lt;/a&gt;';
			}
		}
		next_posts_link('&lt;span class="next"  title="后一页"&gt;»&lt;/span&gt;', $max_pages);
		if ($end_page_num &lt; $max_pages) {
					echo '&lt;span class="extend"&gt;'."...".'&lt;/span&gt;';
					echo '&lt;a href="'.clean_url(get_pagenum_link($max_pages)).'" title="最后一页" class="last"&gt;最后一页&lt;/a&gt;';
		}
		echo '&lt;/div&gt;';
	}
}
endif;</pre>
<p>导航样式，添加到style.css文件中并做相应修改。</p>
<pre class="brush:css">/*分页导航*/
.post-paging{text-align:center;}
.post-paging a,.post-paging a:visited{ padding:3px 6px; border:1px solid #C4C4AD; background-color:#EAEAE1; text-align:center; margin-right:6px; color:#433D3E;}
a.current{border:1px solid #433D3E; background-color:#6E6363; color:#FFF;}</pre>
<p>样式预览如下图（或<a href="http://blog.topming.com/">http://blog.topming.com/</a>）<br />
<img src="http://src.topming.com/wp-content/resource/2011/page_nav.png" alt="page navigation" /></p>
]]></content:encoded>
			<wfw:commentRss>http://topming.com/wordpress-page-navigation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JS获取浏览器信息</title>
		<link>http://topming.com/js-get-browser-information/</link>
		<comments>http://topming.com/js-get-browser-information/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 05:45:14 +0000</pubDate>
		<dc:creator>hwangzhiming</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://dev.topming.com/?p=1364</guid>
		<description><![CDATA[由于浏览器间的差异及国内浏览器厂商生产的中国特色浏览器和收集用户信息的需要，常常需要获取浏览器的信息，鉴于userAgent的信息比较多，不直观，所以本文通过一个封装一个通过js提取浏览器的信息JS函数，主要获取的信息是浏览器类型和版本，函数返回结果是一个json对象，实现代码：，var browser={，     _cacheInfo:null,，     _reg:{，         rwebkit:/(webkit)[ \/]([\w.]+)/,，         ropera:/(opera)(?:.*version)?[ \/]([\w.]+)/,，         rmsie:/(msie) ([\w.]+)/,，         rmozilla: /(mozilla)(?:.*? rv:([\w.]+))?/，     },，     _userAgent:navigator.userAgent,，     info:function(){，            if (this._cacheInfo) return this._cacheInfo; ...]]></description>
			<content:encoded><![CDATA[<p>由于浏览器间的差异及国内浏览器厂商生产的中国特色浏览器和收集用户信息的需要，常常需要获取浏览器的信息，鉴于userAgent的信息比较多，不直观，所以本文通过一个封装一个通过js提取浏览器的信息JS函数，主要获取的信息是浏览器类型和版本，函数返回结果是一个json对象。</p>
<p>实现代码：</p>
<pre class="brush:js">

var browser={
     _cacheInfo:null,
     _reg:{
         rwebkit:/(webkit)[ \/]([\w.]+)/,
         ropera:/(opera)(?:.*version)?[ \/]([\w.]+)/,
         rmsie:/(msie) ([\w.]+)/,
         rmozilla: /(mozilla)(?:.*? rv:([\w.]+))?/
     },
     _userAgent:navigator.userAgent,
     info:function(){
            if (this._cacheInfo) return this._cacheInfo;
            var ua = this._userAgent.toLowerCase(),
            reg=this._reg,
            match = reg.rwebkit.exec(ua) ||
			reg.ropera.exec(ua) ||
			reg.rmsie.exec(ua) ||
			ua.indexOf("compatible") < 0 &#038;&#038; reg.rmozilla.exec(ua) ||
			[],
            bInfo = { core: match[1] || "", version: match[2] || "0" };
            this._cacheInfo=bInfo;
            return bInfo;
    }
}
</pre>
<p>调用代码：</p>
<pre class="brush:js">
      var browserInfo=browser.info();
      //结果：{core:"msie",version:"6.0"}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://topming.com/js-get-browser-information/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cookie</title>
		<link>http://topming.com/cookie/</link>
		<comments>http://topming.com/cookie/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 04:56:56 +0000</pubDate>
		<dc:creator>hwangzhiming</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://dev.topming.com/?p=1352</guid>
		<description><![CDATA[Cookie是储存在用户本地终端上的数据，在生成时就会被指定一个Expire值，在这个周期内Cookie有效，超出周期Cookie就会被清除，有些页面将Cookie的生存周期设置为0或负值，这样在关闭页面时，就马上清除Cookie，不会记录用户信息，更加安全，Cookie实例包括：，Set-Cookie: name = VALUE;，expires = DATE;，path = PATH;，domain = DOMAIN_NAME;，注意：，在name、path和domain都相同的情况下才是同一个Cookie，仅指定key和value的cookie只在本次会话有效，部分浏览器仍有4KB大小限制，储存在本地的Cookie可能存在安全问题，所以开发者应根据具体情况使用 ...]]></description>
			<content:encoded><![CDATA[<p>Cookie是储存在用户本地终端上的数据，在生成时就会被指定一个Expire值，在这个周期内Cookie有效，超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为0或负值，这样在关闭页面时，就马上清除Cookie，不会记录用户信息，更加安全。Cookie实例包括：</p>
<ul>
<li>Set-Cookie: name = VALUE;</li>
<li>expires = DATE;</li>
<li>path = PATH;</li>
<li>domain = DOMAIN_NAME;</li>
</ul>
<p>注意：</p>
<ol>
<li>在name、path和domain都相同的情况下才是同一个Cookie</li>
<li>仅指定key和value的cookie只在本次会话有效</li>
<li>部分浏览器仍有4KB大小限制</i>
</ol>
<p>储存在本地的Cookie可能存在安全问题，所以开发者应根据具体情况使用。以下是封装的一个Cookie操作方法，主要方法有设置、获取和删除：</p>
<pre class="brush:js">
        /**
        * Cookie functions
        */
      var  cookie= {
            /*check cookie function status*/
            enabled: navigator.cookieEnabled,
            _checkCookie: function () {
                if (!this.enabled) { alert('Please Enable Cookie Function of Your Browser!'); }
                if (document.cookie.length < 0) return false;
                return this.enabled;
            },
            /*get value by key*/
            get: function (key) {
                if (!this._checkCookie()) { return; }
                if (!key) return '';
                return (result = new RegExp('(?:^|; )' + escape(key) + '=([^;]*)').exec(document.cookie)) ? unescape(result[1]) : '';
            },
            /**
            * Set a cookie
            * @param {String}   key
            * @param {String}   value
            * @param {Number}   maxAge,Live time(unit:second/s)
            * @param {String}   path
            * @param {String}   domain
            * @param {Boolean}  secure,cookie will be transfered when using security protocol such as HTTPS
            */
            set: function (key, value, maxAge, path, domain, secure) {
                if (!this._checkCookie()) { return; }
                var c = key + '=' + escape(value);
                if (maxAge || maxAge == 0) {
                    c += ';max-age=' + maxAge;
                }
                if (path) { c += ';path=' + path; }
                if (domain) { c += ';domain=' + domain; }
                if (secure) { c += ';secure'; }
                document.cookie = c;
            },
            /*remove a cookie*/
            remove: function (key, path, domain, secure) {
                if (!this._checkCookie()) { return; }
                this.set(key, '', 0, path, domain, secure);
            }
        }</pre>
<p>【Cookie的限制】<br />
RFC2695不允许浏览器保存超过300个Cookie，为每个WEB服务器保存的Cookie数不超过20个，每个Cookie不超过4KB，但实际上现代浏览器允许多于300个。</p>
]]></content:encoded>
			<wfw:commentRss>http://topming.com/cookie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Noodle–基于.NET的轻量级模板引擎</title>
		<link>http://topming.com/noodle%e2%80%93%e5%9f%ba%e4%ba%8e-net%e7%9a%84%e8%bd%bb%e9%87%8f%e7%ba%a7%e6%a8%a1%e6%9d%bf%e5%bc%95%e6%93%8e/</link>
		<comments>http://topming.com/noodle%e2%80%93%e5%9f%ba%e4%ba%8e-net%e7%9a%84%e8%bd%bb%e9%87%8f%e7%ba%a7%e6%a8%a1%e6%9d%bf%e5%bc%95%e6%93%8e/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 14:15:41 +0000</pubDate>
		<dc:creator>hwangzhiming</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[模板引擎]]></category>

		<guid isPermaLink="false">http://topming.com/?p=1456</guid>
		<description><![CDATA[Noodle是.NET平台下的轻量级模板引擎，具有语法简单、自定义属性和标签等特点，Noodle的语法类似于HTML，使用闭合的英文“[]”作为标签符，标签名称为CMS的Model对象名称，其中可为标签添加各种自定义属性，由于自定义属性造成了功能的多样性，所以Noodle只负责将其转换为对象，并通过接口将对象传于CMS，CMS处理后，Noodle获取标签所代表的数据（即处理结果）并与模板整合返回整合后的内容给CMS，&#160;，标签属性名称不区分大小写，引擎内置属性id（对象ID），length（属性显示长度），format（属性显示格式），请勿定义相同的属性，否则可能得不到想要的结果， ...]]></description>
			<content:encoded><![CDATA[<p>Noodle是.NET平台下的轻量级模板引擎，具有语法简单、自定义属性和标签等特点。Noodle的语法类似于HTML，使用闭合的英文“[]”作为标签符，标签名称为CMS的Model对象名称，其中可为标签添加各种自定义属性。由于自定义属性造成了功能的多样性，所以Noodle只负责将其转换为对象，并通过接口将对象传于CMS，CMS处理后，Noodle获取标签所代表的数据（即处理结果）并与模板整合返回整合后的内容给CMS。</p>
<p>&nbsp;</p>
<p>标签属性名称不区分大小写，引擎内置属性id（对象ID），length（属性显示长度），format（属性显示格式），请勿定义相同的属性，否则可能得不到想要的结果。</p>
<ul>
<li>length和format适用于所有属性、全局标签、导航等</li>
<li>format格式与.NET的string.format相同，但由于属性值只有一个，所以仅支持{0}</li>
<li>id为对象表示，用于查找该对象的内容，如果不指定，则为当前Request内容或者为空。</li>
<li>循环标签的写法规定为[对象名:loop attribute=value]&#8230;[/对象名:loop]</li>
</ul>
<p>以下以对象Post为例：</p>
<p>1.单个对象</p>
<pre class="brush:csharp">&lt;div class="content"&gt;
  [Post]
    &lt;h3 class="post-title"&gt;[PostTitle/]&lt;/h3&gt;
    &lt;div class="post-content"&gt;[PostContent/]&lt;/div&gt;
  [/Post]
&lt;/div&gt;</pre>
<p>2.对象循环</p>
<pre class="brush:csharp">  &lt;ul class="news-list"&gt;
      [Post:loop count="5" category="4"
              OrderField="PostPublishTime" OrderType="desc"]
        &lt;li&gt;
           &lt;a href="[PostLink/]"&gt;
             &lt;span&gt;[PostPublishTime length="10"/]&lt;/span&gt;
             [PostTitle/]
          &lt;/a&gt;
       &lt;/li&gt;
      [/Post:loop]
  &lt;/ul&gt;</pre>
<p>3. 导航</p>
<pre class="brush:csharp">[Navigation id="1" class="nav"/]</pre>
<p>4.全局变量</p>
<pre class="brush:csharp">[Global name="SiteTitle" format="欢迎来到{0}"/]</pre>
<p>具体文档有待完善，请见谅！</p>
]]></content:encoded>
			<wfw:commentRss>http://topming.com/noodle%e2%80%93%e5%9f%ba%e4%ba%8e-net%e7%9a%84%e8%bd%bb%e9%87%8f%e7%ba%a7%e6%a8%a1%e6%9d%bf%e5%bc%95%e6%93%8e/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tanka</title>
		<link>http://topming.com/tanka/</link>
		<comments>http://topming.com/tanka/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 14:37:57 +0000</pubDate>
		<dc:creator>hwangzhiming</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[tanka]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://www.topming.com/?p=1194</guid>
		<description><![CDATA[在小子琳一岁生日的时候答应帮她做一个新主题的，现在终于完成得差不多了，这个主题是我有史以来做得最细腻的了，浏览器之间兼容性做得最好的一个，同时不仅写了一个配置插件，还好好利用了一下function.php，这次主题叫做tanka（唐卡），来源于摆放在桌面的一部小玩具车，Tanka布局上是单栏，淡黄、雪白为主色调，冬天来了，就加了点暖色（前一个主题iZoe绿色为主调），设计上Tanka将文章、评论、菜单分为各自独立的模块，同时还加入了通过RSS方式读取flickr和新浪微博的模块，各个模块的设置包括底部的版权信息都统一通过我为这个主题写的专用配置插件来进行方便的设置，要围观的可以到子琳官方博客.，首页截图，]]></description>
			<content:encoded><![CDATA[<p>在小子琳一岁生日的时候答应帮她做一个新主题的，现在终于完成得差不多了，这个主题是我有史以来做得最细腻的了，浏览器之间兼容性做得最好的一个，同时不仅写了一个配置插件，还好好利用了一下function.php。</p>
<p>这次主题叫做tanka（唐卡），来源于摆放在桌面的一部小玩具车。Tanka布局上是单栏，淡黄、雪白为主色调，冬天来了，就加了点暖色（前一个主题iZoe绿色为主调）。设计上Tanka将文章、评论、菜单分为各自独立的模块，同时还加入了通过RSS方式读取flickr和新浪微博的模块，各个模块的设置包括底部的版权信息都统一通过我为这个主题写的专用配置插件来进行方便的设置。</p>
<p>要围观的可以到<a href="http://www.huangzilin.com"><span style="color: #0000ff">子琳官方博客</span></a>.</p>
<p><img src="http://src.topming.com/wp-content/resource/2010/tanka_index.png" alt="" width="540" /></p>
<p>首页截图</p>
]]></content:encoded>
			<wfw:commentRss>http://topming.com/tanka/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

