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

<channel>
	<title>未完待续 &#187; 就是不分类</title>
	<atom:link href="http://ioio.name/category/general/feed" rel="self" type="application/rss+xml" />
	<link>http://ioio.name</link>
	<description>To Be Continued</description>
	<lastBuildDate>Thu, 03 May 2012 04:45:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Object-Oriented JavaScript笔记(四)</title>
		<link>http://ioio.name/object-oriented-javascript-note-4.html</link>
		<comments>http://ioio.name/object-oriented-javascript-note-4.html#comments</comments>
		<pubDate>Tue, 10 Apr 2012 14:14:03 +0000</pubDate>
		<dc:creator>枯藤昏鸦</dc:creator>
				<category><![CDATA[就是不分类]]></category>

		<guid isPermaLink="false">http://ioio.name/?p=2038</guid>
		<description><![CDATA[Object-Oriented JavaScript 笔记 Object-Oriented JavaScript笔记(一) Object-Oriented JavaScript笔记(二) Object-Oriented JavaScript笔记(三) 第五章 原型 原型链继承：new 出来的对象仍能继承到给原型prototype添加的方法 给实例添加与原型属性同名的属性，会隐藏原型链属性。 >>> var Class = function(){}; >>> Class.prototype.name = &#8216;John&#8217;; >>> var toy = new Class() >>> toy.name = &#8216;Tom&#8217;; >>> toy.name “Tom” >>> delete toy.name >>> toy.name “John” 并不是所有的属性都会在for in中被枚举出来。 判断属性是自身属性还是原型链上的属性使用hasOwnProperty() propertyIsEnumerable()对于prototype上的属性都会返回false，虽然他们都能在for in中被枚举出来。 isPrototypeOf()判断一个对象是否是另一个对象的原型。 Prototype陷阱 prototype对象被替换后，实例的原型链仍然是存在的 prototype.constructor并不可靠 介于此，重写prototype后，最好重置constructor (这里的确很让人迷惑) －EOF- Related [...]]]></description>
			<content:encoded><![CDATA[<p>Object-Oriented JavaScript 笔记<br />
<a href="http://ioio.name/object-oriented-javascript-note.html" target="_blank">Object-Oriented JavaScript笔记(一)</a><br />
<a href="http://ioio.name/object-oriented-javascript-note-2.html" target="_blank">Object-Oriented JavaScript笔记(二)</a><br />
<a href="http://ioio.name/object-oriented-javascript-note-3.html" target="_blank">Object-Oriented JavaScript笔记(三)</a></p>
<p><strong>第五章 原型</strong></p>
<p><strong>原型链继承</strong>：new 出来的对象仍能继承到给原型prototype添加的方法</p>
<p>给实例添加与原型属性同名的属性，会隐藏原型链属性。<br />
>>> var Class = function(){};<br />
>>> Class.prototype.name = &#8216;John&#8217;;<br />
>>> var toy = new Class()<br />
>>> toy.name = &#8216;Tom&#8217;;<br />
>>> toy.name<br />
“Tom”<br />
>>> delete toy.name<br />
>>> toy.name<br />
“John”</p>
<p>并不是所有的属性都会在for in中被枚举出来。<br />
判断属性是自身属性还是原型链上的属性使用hasOwnProperty()<br />
propertyIsEnumerable()对于prototype上的属性都会返回false，虽然他们都能在for in中被枚举出来。</p>
<p>isPrototypeOf()判断一个对象是否是另一个对象的原型。</p>
<p><strong>Prototype陷阱</strong><br />
prototype对象被替换后，实例的原型链仍然是存在的<br />
prototype.constructor并不可靠<br />
介于此，重写prototype后，最好重置constructor (这里的确很让人迷惑)<br />
－EOF-</p>
<hr /><h2>Related posts:</h2><ul><li><a href="http://ioio.name/object-oriented-javascript-note-2.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(二)">Object-Oriented JavaScript笔记(二)</a></li><li><a href="http://ioio.name/object-oriented-javascript-note-3.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(三)">Object-Oriented JavaScript笔记(三)</a></li><li><a href="http://ioio.name/object-oriented-javascript-note.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(一)">Object-Oriented JavaScript笔记(一)</a></li><li><a href="http://ioio.name/core-javascript-pitfalls.html" rel="bookmark" title="Permanent Link: JavaScript性能陷阱">JavaScript性能陷阱</a></li><li><a href="http://ioio.name/javascript-get-up-guide.html" rel="bookmark" title="Permanent Link: JavaScript 入门指南">JavaScript 入门指南</a></li></ul><hr /><small>Copyright &copy; 2005~2011 | <a href="http://ioio.name/object-oriented-javascript-note-4.html" title="Permalink">Permalink</a> | <a href="http://ioio.name/object-oriented-javascript-note-4.html#comments">0 Comments</a> | <a href="http://closetou.com" title="Close To U">Close To U</a> <br />
<a href="http://feeds.feedburner.com/miss">订阅</a> <a href="https://twitter.com/tearnon">Twitter</a> <a href="http://ioio.name/godaddy">域名优惠码</a> <a href="http://ioio.name/mt">Media Temple空间</a>
<a href="http://mdiatemple.com/" title="Domain Sale! $6.89 .com at GoDaddy">主机/域名优惠码</a>
</small> )</small>]]></content:encoded>
			<wfw:commentRss>http://ioio.name/object-oriented-javascript-note-4.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>新项目: Story Board</title>
		<link>http://ioio.name/about-story-board.html</link>
		<comments>http://ioio.name/about-story-board.html#comments</comments>
		<pubDate>Mon, 02 Apr 2012 16:36:59 +0000</pubDate>
		<dc:creator>枯藤昏鸦</dc:creator>
				<category><![CDATA[就是不分类]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://ioio.name/?p=2031</guid>
		<description><![CDATA[大约在前年，我就开始使用Python写Blog程序并将其Hosted在GAE上，并一度有将其开源的打算，后由于GAE数据库读取价格策略改变，代价太高而放弃；期间还写了一个简单的图片存储程序承诺将其开源，由于代码过于草稿没时间整理也一拖再拖。两者，代码至今都没有释放出来。 而在今年年初，GAE完美支持Django+MySQL，给原本失去的希望又重新点燃，用其托管一个小访问量的站点又有了规避方案，另一方面Cloud SQL可以方便的导出数据，数据备份不需要再经过复杂的操作。在二月结束的时候，我写了一个小的网站原型，后经过改进，并将其命名为Story Board托管在GitHub上开源出来。 同时用它替换原来的Oh Bug!。希望Oh Bug!不再单单只是一个Blog，也是一个小众技术讨论区，欢迎任何人参与进来讨论～ Project Story Board https://github.com/darcyliu/storyboard Oh Bug!]]></description>
			<content:encoded><![CDATA[<p>大约在前年，我就开始使用Python写Blog程序并将其Hosted在GAE上，并一度有将其开源的打算，后由于GAE数据库读取价格策略改变，代价太高而放弃；期间还写了一个简单的图片存储程序承诺将其开源，由于代码过于草稿没时间整理也一拖再拖。两者，代码至今都没有释放出来。</p>
<p>而在今年年初，GAE完美支持Django+MySQL，给原本失去的希望又重新点燃，用其托管一个小访问量的站点又有了规避方案，另一方面Cloud SQL可以方便的导出数据，数据备份不需要再经过复杂的操作。在二月结束的时候，我写了一个小的网站原型，后经过改进，并将其命名为<a href="https://github.com/darcyliu/storyboard" target="_blank"><strong>Story Board</strong></a>托管在GitHub上开源出来。</p>
<p>同时用它替换原来的<a href="http://www.ohbug.com/" target="_blank">Oh Bug!</a>。希望Oh Bug!不再单单只是一个Blog，也是一个小众技术讨论区，欢迎任何人参与进来讨论～</p>
<p>Project Story Board<br />
<a href="https://github.com/darcyliu/storyboard" target="_blank">https://github.com/darcyliu/storyboard</a></p>
<p>Oh Bug!<br />
<a href="http://www.ohbug.com/"" target="_blank">http://www.ohbug.com/</a></p>
<p>You are very welcome.</p>
<p>-EOF-</p>
<hr /><h2>Related posts:</h2><ul><li><a href="http://ioio.name/the-boys-and-girls-guide-to-getting-down.html" rel="bookmark" title="Permanent Link: 电影《青少年堕落指南》">电影《青少年堕落指南》</a></li><li><a href="http://ioio.name/commonly-used-programs-on-php.html" rel="bookmark" title="Permanent Link: 常用PHP程式介绍">常用PHP程式介绍</a></li></ul><hr /><small>Copyright &copy; 2005~2011 | <a href="http://ioio.name/about-story-board.html" title="Permalink">Permalink</a> | <a href="http://ioio.name/about-story-board.html#comments">0 Comments</a> | <a href="http://closetou.com" title="Close To U">Close To U</a> <br />
<a href="http://feeds.feedburner.com/miss">订阅</a> <a href="https://twitter.com/tearnon">Twitter</a> <a href="http://ioio.name/godaddy">域名优惠码</a> <a href="http://ioio.name/mt">Media Temple空间</a>
<a href="http://mdiatemple.com/" title="Domain Sale! $6.89 .com at GoDaddy">主机/域名优惠码</a>
</small> )</small>]]></content:encoded>
			<wfw:commentRss>http://ioio.name/about-story-board.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>实现JavaScript类继承(inherits)</title>
		<link>http://ioio.name/javascript-inherits.html</link>
		<comments>http://ioio.name/javascript-inherits.html#comments</comments>
		<pubDate>Thu, 22 Mar 2012 15:45:57 +0000</pubDate>
		<dc:creator>枯藤昏鸦</dc:creator>
				<category><![CDATA[就是不分类]]></category>

		<guid isPermaLink="false">http://ioio.name/?p=2029</guid>
		<description><![CDATA[简单实现了个JavaScript类继承（比下午在公司实现的要简单得多），继承prototype方法和静态方法，实际使用过程中mix函数还需要丰满一下。这东西水很深，自己也一知半解的，不多说直接放代码。 Function.prototype.method = function&#40;name,fn&#41;&#123; this.prototype&#91;name&#93; = fn; return this; &#125; Function.method&#40;'inherits',&#40;function&#40;&#41;&#123; function mix&#40;a,b&#41;&#123; for&#40;var i in b&#41;&#123; //replace if&#40;typeof a&#91;i&#93; == 'undefined'&#41;&#123; a&#91;i&#93; = b&#91;i&#93;; &#125; &#125; &#125; return function&#40;Parent&#41;&#123; var fn = function&#40;&#41;&#123;&#125;; mix&#40;this.prototype,Parent.prototype&#41;; mix&#40;this,Parent&#41;; this.__super__ = Parent; //static method //object.__super__.demo &#160; //prototype method //object.__super__.prototype.hidden return this; &#125;; &#125;&#41;&#40;&#41;&#41;; &#160; &#160; var a = [...]]]></description>
			<content:encoded><![CDATA[<p>简单实现了个JavaScript类继承（比下午在公司实现的要简单得多），继承prototype方法和静态方法，实际使用过程中mix函数还需要丰满一下。这东西水很深，自己也一知半解的，不多说直接放代码。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">Function</span>.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">method</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">name</span><span style="color: #339933;">,</span>fn<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">prototype</span><span style="color: #009900;">&#91;</span><span style="color: #000066;">name</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> fn<span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #003366; font-weight: bold;">Function</span>.<span style="color: #660066;">method</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'inherits'</span><span style="color: #339933;">,</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">function</span> mix<span style="color: #009900;">&#40;</span>a<span style="color: #339933;">,</span>b<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #000066; font-weight: bold;">in</span> b<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #006600; font-style: italic;">//replace</span>
			<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span> a<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #3366CC;">'undefined'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				a<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> b<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span> 
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>Parent<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> fn <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
		mix<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">prototype</span><span style="color: #339933;">,</span>Parent.<span style="color: #660066;">prototype</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		mix<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">,</span>Parent<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.__super__ <span style="color: #339933;">=</span> Parent<span style="color: #339933;">;</span>
		<span style="color: #006600; font-style: italic;">//static method</span>
		<span style="color: #006600; font-style: italic;">//object.__super__.demo</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//prototype method</span>
		<span style="color: #006600; font-style: italic;">//object.__super__.prototype.hidden</span>
	  <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> a <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> b <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> c <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> d <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
a.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">show</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a show'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
b.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">hidden</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'b hidden'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
a.<span style="color: #660066;">test</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a test'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
b.<span style="color: #660066;">demo</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'b demo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//usage</span>
b.<span style="color: #660066;">inherits</span><span style="color: #009900;">&#40;</span>a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
c.<span style="color: #660066;">inherits</span><span style="color: #009900;">&#40;</span>a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
d.<span style="color: #660066;">inherits</span><span style="color: #009900;">&#40;</span>b<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>-EOF-</p>
<hr /><h2>Related posts:</h2><ul><li><a href="http://ioio.name/object-oriented-javascript-note-2.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(二)">Object-Oriented JavaScript笔记(二)</a></li><li><a href="http://ioio.name/javascript-get-up-guide.html" rel="bookmark" title="Permanent Link: JavaScript 入门指南">JavaScript 入门指南</a></li><li><a href="http://ioio.name/object-oriented-javascript-note-4.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(四)">Object-Oriented JavaScript笔记(四)</a></li><li><a href="http://ioio.name/core-javascript-pitfalls.html" rel="bookmark" title="Permanent Link: JavaScript性能陷阱">JavaScript性能陷阱</a></li><li><a href="http://ioio.name/ioio-share.html" rel="bookmark" title="Permanent Link: 给网站添加分享按钮">给网站添加分享按钮</a></li></ul><hr /><small>Copyright &copy; 2005~2011 | <a href="http://ioio.name/javascript-inherits.html" title="Permalink">Permalink</a> | <a href="http://ioio.name/javascript-inherits.html#comments">0 Comments</a> | <a href="http://closetou.com" title="Close To U">Close To U</a> <br />
<a href="http://feeds.feedburner.com/miss">订阅</a> <a href="https://twitter.com/tearnon">Twitter</a> <a href="http://ioio.name/godaddy">域名优惠码</a> <a href="http://ioio.name/mt">Media Temple空间</a>
<a href="http://mdiatemple.com/" title="Domain Sale! $6.89 .com at GoDaddy">主机/域名优惠码</a>
</small> )</small>]]></content:encoded>
			<wfw:commentRss>http://ioio.name/javascript-inherits.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Object-Oriented JavaScript笔记(三)</title>
		<link>http://ioio.name/object-oriented-javascript-note-3.html</link>
		<comments>http://ioio.name/object-oriented-javascript-note-3.html#comments</comments>
		<pubDate>Tue, 20 Mar 2012 16:53:43 +0000</pubDate>
		<dc:creator>枯藤昏鸦</dc:creator>
				<category><![CDATA[就是不分类]]></category>

		<guid isPermaLink="false">http://ioio.name/?p=2022</guid>
		<description><![CDATA[Object-Oriented JavaScript 笔记 Object-Oriented JavaScript笔记(一) Object-Oriented JavaScript笔记(二) 第四章 对象 对象 对象属性名需要引号括起来的情况有： 1.保留字2.包含空格或特殊字符3.以数字开头 Best Practice Tip: No quotes 1.使用点访问符访问方法和属性 2.在对象字面量中不要使用引号将属性括起来 构造函数 按照约定，构造函数首字母大写 不使用new操作符调用构造函数跟调用普通函数无异，此时this指针指向全局对象global object JavaScript 是运行在宿主环境中的，其提供一个全局对象，所有的全局变量都是全局对象的属性。 在浏览器中，该全局对象是window，如 >>> var a = 1; >>> window.a 1 instanceof操作符用于测试对象的构造函数 注：原书103页的h instanceof Object;得到false实际上是印刷错误， Object是基类 特例： >>> Object.prototype instanceof Object; false >>> Object instanceof Object; true 说明Object.prototype可能是内置类型 函数返回对象，可以用该特性来改变this指针 function Test = [...]]]></description>
			<content:encoded><![CDATA[<p>Object-Oriented JavaScript 笔记<br />
<a href="http://ioio.name/object-oriented-javascript-note.html" target="_blank">Object-Oriented JavaScript笔记(一)</a><br />
<a href="http://ioio.name/object-oriented-javascript-note-2.html" target="_blank">Object-Oriented JavaScript笔记(二)</a></p>
<p><strong>第四章 对象</strong></p>
<p><strong>对象</strong><br />
对象属性名需要引号括起来的情况有：<br />
1.保留字2.包含空格或特殊字符3.以数字开头<br />
Best Practice Tip: No quotes<br />
1.使用点访问符访问方法和属性<br />
2.在对象字面量中不要使用引号将属性括起来</p>
<p><strong>构造函数</strong><br />
按照约定，构造函数首字母大写</p>
<p>不使用new操作符调用构造函数跟调用普通函数无异，此时this指针指向全局对象global object</p>
<p>JavaScript 是运行在宿主环境中的，其提供一个全局对象，所有的全局变量都是全局对象的属性。<br />
在浏览器中，该全局对象是window，如<br />
>>> var a = 1;<br />
>>> window.a<br />
1</p>
<p>instanceof操作符用于测试对象的构造函数<br />
注：原书103页的h instanceof Object;得到false实际上是印刷错误， Object是基类</p>
<p>特例：<br />
>>> Object.prototype instanceof Object;<br />
false<br />
>>> Object instanceof Object;<br />
true<br />
说明Object.prototype可能是内置类型<br />
函数返回对象，可以用该特性来改变this指针<br />
function Test = function(){    this.name = &#8216;Tom&#8217;;<br />
    return {&#8216;name&#8217;:'Tony&#8217;};<br />
}</p>
<p>传入函数的对象是按引用传递的，将对象赋值给其他变量也如此，这意味着只是变了别名，修改引用对象也会改变原对象。</p>
<p>指向同一对象的变量比较时才会返回true，即使比较两个对象包含相同的方法和属性得到的也是false。</p>
<p><strong>内置对象</strong></p>
<p>内置对象可以分为三组：<br />
1.数据包装类的 &#8212; Object, Array, Function, Boolean, Number, and String<br />
2.工具类的 &#8212; Math, Date, RegExp<br />
3.异常类的 &#8212; Error</p>
<p><strong>对象构造方法：</strong><br />
1.使用构造函数<br />
var o = new Object();</p>
<p>2.使用字面量<br />
var o = {};</p>
<p>简单对象valueOf方法返回的是自身<br />
>>> var o = {};<br />
>>> o.valueOf() === o<br />
true</p>
<p>继承自Object的对象会带上<br />
o.constructor<br />
o.toString()<br />
o.valueOf()</p>
<p><strong>数组对象</strong></p>
<p>数组对象构造方法：<br />
1.使用构造函数<br />
var a = new Array();</p>
<p>2.使用字面量<br />
var a = [];</p>
<p>数组构造函数传入单个数字的话，定义的是数组的长度；但使用字面量方式不存在该问题。<br />
>>> var a2 = new Array(5);<br />
>>> a2<br />
[undefined, undefined, undefined, undefined, undefined]</p>
<p>>>> var a = [5];<br />
>>> a<br />
[5]</p>
<p>数组的常用方法<br />
1.pop 取出最后一个<br />
2.push 插入元素到尾端<br />
3.sort 对数组元素排序<br />
4.join 将内容转换成字符串<br />
5.slice 切片，不改变原对象<br />
6.splice 切片(或替换)，改变原对象</p>
<p><strong>函数</strong><br />
Function构造函数实际上使用了eval来计算传入的字符串，尽量避免使用它。<br />
>>> var second = new Function(&#8216;a, b, c&#8217;, &#8216;d&#8217;, &#8216;return arguments;&#8217;);<br />
>>> second(1,2,3,4);<br />
[1, 2, 3, 4]</p>
<p>Function有一个length属性，用来返回函数的参数个数。</p>
<p>Function还有一个caller属性，它不是ECMA标准里面的，但浏览器都实现了它。</p>
<p>实例会可以调用构造函数prototype中属性和方法。</p>
<p>Function的toString方法返回其source code.</p>
<p>call和apply方法可以将对象自己的方法借给其它对象使用。</p>
<p>arguments是个类数组;arguments.callee指向自身。</p>
<p>arguments.callee可以帮助匿名函数调用自身(递归调用)：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>count<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>count <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">5</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>count<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        arguments.<span style="color: #660066;">callee</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">++</span>count<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong>Boolean对象</strong></p>
<p>Boolean对象几乎没有用。在不使用new操作符的情况下，它将非布尔值转换成布尔值，这于使用!!value是等效的。<br />
>>> Boolean(&#8216;test&#8217;) == !!&#8217;test&#8217;<br />
true</p>
<p><strong>Number对象</strong></p>
<p>Number对象比较有趣一点，它有一些有意思的属性：<br />
Number.MAX_VALUE<br />
Number.MIN_VALUE<br />
Number.POSITIVE_INFINITY<br />
Number.NEGATIVE_INFINITY<br />
Number.NaN</p>
<p>Number对象提供三个内置方法：toFixed() 小数点位数<br />
toPrecision() 精度<br />
toExponential() 科学计数法 </p>
<p>Number对象的toString方法也是很有趣的，可以传入一个[2~36]之间的整数表示要转换的进制。<br />
>>> (9).toString(2)<br />
“1001&#8243;</p>
<p><strong>String对象</strong></p>
<p>原始的string和String对象是不同的<br />
>>> var primitive = &#8216;Hello&#8217;;<br />
>>> typeof primitive;<br />
“string”</p>
<p>>>> var obj = new String(&#8216;world&#8217;);<br />
>>> typeof obj;<br />
“object”</p>
<p>因而<br />
>>> Boolean(“”)<br />
false<br />
>>> Boolean(new String(“”))<br />
true</p>
<p>String对象带有一些有用的方法，string类型不带有这些方法和属性，但是在普通类型上调用这些方法的时候，JavaScript将其作为对象对待。</p>
<p><strong>Math/Date</strong></p>
<p>Math/Date/RegExp都是工具对象<br />
Math不是构造函数，不能使用new操作符<br />
Date有两个静态方法<br />
Date.parse(&#8216;Jan 1, 2008&#8242;)<br />
Date.UTC(2008, 0, 1)</p>
<p><strong>RegExp</strong></p>
<p>RegExp正则表达式采用的是Perl 5语法<br />
RegExp的几个属性global 全局<br />
ignoreCase 大小写敏感<br />
multiline 多行<br />
lastIndex 开始位置<br />
source 正则表达式</p>
<p>除lastIndex外其余都是只读。</p>
<p><strong>异常</strong><br />
几种内置异常对象，都继承自Error<br />
EvalError<br />
RangeError<br />
ReferenceError<br />
SyntaxError<br />
TypeError<br />
URIError</p>
<p>抛出异常throw new Error(‘Custom Error’);<br />
-EOF-</p>
<hr /><h2>Related posts:</h2><ul><li><a href="http://ioio.name/object-oriented-javascript-note-4.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(四)">Object-Oriented JavaScript笔记(四)</a></li><li><a href="http://ioio.name/object-oriented-javascript-note-2.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(二)">Object-Oriented JavaScript笔记(二)</a></li><li><a href="http://ioio.name/object-oriented-javascript-note.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(一)">Object-Oriented JavaScript笔记(一)</a></li><li><a href="http://ioio.name/core-javascript-pitfalls.html" rel="bookmark" title="Permanent Link: JavaScript性能陷阱">JavaScript性能陷阱</a></li><li><a href="http://ioio.name/javascript-get-up-guide.html" rel="bookmark" title="Permanent Link: JavaScript 入门指南">JavaScript 入门指南</a></li></ul><hr /><small>Copyright &copy; 2005~2011 | <a href="http://ioio.name/object-oriented-javascript-note-3.html" title="Permalink">Permalink</a> | <a href="http://ioio.name/object-oriented-javascript-note-3.html#comments">0 Comments</a> | <a href="http://closetou.com" title="Close To U">Close To U</a> <br />
<a href="http://feeds.feedburner.com/miss">订阅</a> <a href="https://twitter.com/tearnon">Twitter</a> <a href="http://ioio.name/godaddy">域名优惠码</a> <a href="http://ioio.name/mt">Media Temple空间</a>
<a href="http://mdiatemple.com/" title="Domain Sale! $6.89 .com at GoDaddy">主机/域名优惠码</a>
</small> )</small>]]></content:encoded>
			<wfw:commentRss>http://ioio.name/object-oriented-javascript-note-3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Object-Oriented JavaScript笔记(二)</title>
		<link>http://ioio.name/object-oriented-javascript-note-2.html</link>
		<comments>http://ioio.name/object-oriented-javascript-note-2.html#comments</comments>
		<pubDate>Thu, 15 Mar 2012 15:48:47 +0000</pubDate>
		<dc:creator>枯藤昏鸦</dc:creator>
				<category><![CDATA[就是不分类]]></category>

		<guid isPermaLink="false">http://ioio.name/?p=2014</guid>
		<description><![CDATA[Object-Oriented JavaScript 笔记 Object-Oriented JavaScript笔记(一) 第三章 函数 JavaScript会给定义了但是没有传值的参数赋值为undefined，若是参数多于定义的，会被忽略。 没有函数都会带有一个名为arguments的类数组变量，包含所有传入的参数信息。 JavaScript内置函数（Pre-defined Functions）： parseInt() parseFloat() isNaN() isFinite() encodeURI() decodeURI() encodeURIComponent() decodeURIComponent() eval() 使用parseInt时最好每次都明确指定第二个（基数）参数，如 parseInt(&#8216;FF&#8217;, 16) parseFloat只接受一个参数，并能够识别指数表示法，如 parseFloat(&#8217;123e2&#8242;) escape() 与 unescape() 已经被弃用，不应该再被使用。 alert并不是JavaScript的一部分，并且它会阻塞浏览器线程，在富ajax应用中不应该使用它。 未使用var 声明的变量会被分配到全局作用域 >>> var f = function(){test = 2;}; >>> test ReferenceError: test is not defined >>> f(); >>> test 2 函数中声明的局部变量与全局变量同名会覆盖同名全局变量，即使是先使用后声明。 var a = [...]]]></description>
			<content:encoded><![CDATA[<p>Object-Oriented JavaScript 笔记<br />
<a href="http://ioio.name/object-oriented-javascript-note.html">Object-Oriented JavaScript笔记(一)</a></p>
<p><strong>第三章 函数</strong></p>
<p>JavaScript会给定义了但是没有传值的参数赋值为undefined，若是参数多于定义的，会被忽略。</p>
<p>没有函数都会带有一个名为arguments的类数组变量，包含所有传入的参数信息。</p>
<p><strong>JavaScript内置函数（Pre-defined Functions）：</strong><br />
parseInt()<br />
parseFloat()<br />
isNaN()<br />
isFinite()<br />
encodeURI()<br />
decodeURI()<br />
encodeURIComponent()<br />
decodeURIComponent()<br />
eval()</p>
<p>使用parseInt时最好每次都明确指定第二个（基数）参数，如 parseInt(&#8216;FF&#8217;, 16)</p>
<p>parseFloat只接受一个参数，并能够识别指数表示法，如 parseFloat(&#8217;123e2&#8242;)</p>
<p>escape() 与 unescape() 已经被弃用，不应该再被使用。</p>
<p>alert并不是JavaScript的一部分，并且它会阻塞浏览器线程，在富ajax应用中不应该使用它。</p>
<p>未使用var 声明的变量会被分配到全局作用域<br />
>>> var f = function(){test = 2;};<br />
>>> test<br />
ReferenceError: test is not defined<br />
>>> f();<br />
>>> test<br />
2</p>
<p>函数中声明的局部变量与全局变量同名会覆盖同名全局变量，即使是先使用后声明。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> a <span style="color: #339933;">=</span> <span style="color: #CC0000;">123</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">function</span> f<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">var</span> a <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
     console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span>a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
f<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong>匿名函数</strong></p>
<p>不仅是字符串，一些常量写在代码中也是可以的</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #3366CC;">&quot;test&quot;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">3</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> undefined<span style="color: #339933;">;</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span></pre></div></div>

<p>ECMAScript 5严格模式（Strict Mode）便是利用该特性</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #3366CC;">'use strict'</span><span style="color: #339933;">;</span></pre></div></div>

<p>Lexical Scope 函数工作在定义时的作用域，而非执行作用域。它仅能访问自己的作用域和全局作用域。</p>
<p>>>> function f1(){var a = 1; f2();}<br />
>>> function f2(){return a;}<br />
>>> f1();<br />
a is not defined</p>
<p><strong>闭包Closure的常用场景</strong><br />
如：循环、get/set访问器、迭代器<br />
-EOF-</p>
<hr /><h2>Related posts:</h2><ul><li><a href="http://ioio.name/object-oriented-javascript-note-4.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(四)">Object-Oriented JavaScript笔记(四)</a></li><li><a href="http://ioio.name/object-oriented-javascript-note-3.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(三)">Object-Oriented JavaScript笔记(三)</a></li><li><a href="http://ioio.name/object-oriented-javascript-note.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(一)">Object-Oriented JavaScript笔记(一)</a></li><li><a href="http://ioio.name/core-javascript-pitfalls.html" rel="bookmark" title="Permanent Link: JavaScript性能陷阱">JavaScript性能陷阱</a></li><li><a href="http://ioio.name/javascript-get-up-guide.html" rel="bookmark" title="Permanent Link: JavaScript 入门指南">JavaScript 入门指南</a></li></ul><hr /><small>Copyright &copy; 2005~2011 | <a href="http://ioio.name/object-oriented-javascript-note-2.html" title="Permalink">Permalink</a> | <a href="http://ioio.name/object-oriented-javascript-note-2.html#comments">0 Comments</a> | <a href="http://closetou.com" title="Close To U">Close To U</a> <br />
<a href="http://feeds.feedburner.com/miss">订阅</a> <a href="https://twitter.com/tearnon">Twitter</a> <a href="http://ioio.name/godaddy">域名优惠码</a> <a href="http://ioio.name/mt">Media Temple空间</a>
<a href="http://mdiatemple.com/" title="Domain Sale! $6.89 .com at GoDaddy">主机/域名优惠码</a>
</small> )</small>]]></content:encoded>
			<wfw:commentRss>http://ioio.name/object-oriented-javascript-note-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Mac OS X]Lion编译安装mod_python</title>
		<link>http://ioio.name/lion-install-mod-python.html</link>
		<comments>http://ioio.name/lion-install-mod-python.html#comments</comments>
		<pubDate>Thu, 08 Mar 2012 14:33:12 +0000</pubDate>
		<dc:creator>枯藤昏鸦</dc:creator>
				<category><![CDATA[就是不分类]]></category>

		<guid isPermaLink="false">http://ioio.name/?p=2008</guid>
		<description><![CDATA[期望情况是下载好mod_python后执行编译并安装就能够搞定。 $ ./configure –with-apxs=/usr/sbin/apxs $ make $ sudo make install 但是事实却不尽人意，在Mac OS X Lion可能会遇到下面这个错误： connobject.c:142: error: request for member ‘next’ in something not a structure or union apxs:Error: Command failed with rc=65536 说明connobject.c这个文件中142行有错误，我们找到并打开它 vim src/connobject.c 将142行处的 !&#40;b == APR_BRIGADE_SENTINEL&#40;b&#41; &#124;&#124; 改为 !&#40;b == APR_BRIGADE_SENTINEL&#40;bb&#41; &#124;&#124; -EOF- Related posts:Ubuntu 安装 Python Imaging Library (PIL)Python文件编码安装golang程序语言开始学Python如何在 Debian/Ubuntu VPS [...]]]></description>
			<content:encoded><![CDATA[<p>期望情况是下载好mod_python后执行编译并安装就能够搞定。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ ./configure –with-apxs=/usr/sbin/apxs
$ make
$ sudo make install</pre></div></div>

<p>但是事实却不尽人意，在Mac OS X Lion可能会遇到下面这个错误：<br />
<a href="http://ioio.name/wp-content/uploads/2012/03/mod_python_error.png"><img src="http://ioio.name/wp-content/uploads/2012/03/mod_python_error-512x208.png" alt="" title="mod_python_error" width="512" height="208" class="alignnone size-medium wp-image-2009" /></a></p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">connobject.c:142: error: request for member ‘next’ in something not a structure or union
apxs:Error: Command failed with rc=65536</pre></div></div>

<p>说明connobject.c这个文件中142行有错误，我们找到并打开它</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">vim src/connobject.c</pre></div></div>

<p>将142行处的</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>b <span style="color: #339933;">==</span> APR_BRIGADE_SENTINEL<span style="color: #009900;">&#40;</span>b<span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span></pre></div></div>

<p>改为</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>b <span style="color: #339933;">==</span> APR_BRIGADE_SENTINEL<span style="color: #009900;">&#40;</span>bb<span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span></pre></div></div>

<p>-EOF-</p>
<hr /><h2>Related posts:</h2><ul><li><a href="http://ioio.name/ubuntu-pil.html" rel="bookmark" title="Permanent Link: Ubuntu 安装 Python Imaging Library (PIL)">Ubuntu 安装 Python Imaging Library (PIL)</a></li><li><a href="http://ioio.name/python-file-encoding.html" rel="bookmark" title="Permanent Link: Python文件编码">Python文件编码</a></li><li><a href="http://ioio.name/golang-install.html" rel="bookmark" title="Permanent Link: 安装golang程序语言">安装golang程序语言</a></li><li><a href="http://ioio.name/learning-python.html" rel="bookmark" title="Permanent Link: 开始学Python">开始学Python</a></li><li><a href="http://ioio.name/how-to-install-openvpn-on-a-debianubuntu-vps.html" rel="bookmark" title="Permanent Link: 如何在 Debian/Ubuntu VPS 安装 OpenVPN">如何在 Debian/Ubuntu VPS 安装 OpenVPN</a></li></ul><hr /><small>Copyright &copy; 2005~2011 | <a href="http://ioio.name/lion-install-mod-python.html" title="Permalink">Permalink</a> | <a href="http://ioio.name/lion-install-mod-python.html#comments">0 Comments</a> | <a href="http://closetou.com" title="Close To U">Close To U</a> <br />
<a href="http://feeds.feedburner.com/miss">订阅</a> <a href="https://twitter.com/tearnon">Twitter</a> <a href="http://ioio.name/godaddy">域名优惠码</a> <a href="http://ioio.name/mt">Media Temple空间</a>
<a href="http://mdiatemple.com/" title="Domain Sale! $6.89 .com at GoDaddy">主机/域名优惠码</a>
</small> )</small>]]></content:encoded>
			<wfw:commentRss>http://ioio.name/lion-install-mod-python.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>简单静态资源分发脚本</title>
		<link>http://ioio.name/cdn-cache-redirect.html</link>
		<comments>http://ioio.name/cdn-cache-redirect.html#comments</comments>
		<pubDate>Sun, 12 Feb 2012 03:16:17 +0000</pubDate>
		<dc:creator>枯藤昏鸦</dc:creator>
				<category><![CDATA[就是不分类]]></category>
		<category><![CDATA[CDN]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ioio.name/?p=2005</guid>
		<description><![CDATA[网站静态资源太多的情况下有时候我们需要分成多个域名来请求这些静态资源。 如原来我们使用的 http://static.ioio.name/upload/hello.jpg 改成随机的使用 http://s1.ioio.name/upload/hello.jpg http://s2.ioio.name/upload/hello.jpg http://s3.ioio.name/upload/hello.jpg 这时候我们需要将s1/s2/s3服务器上的文件跟源服务器static同步。以使得他们都是访问的static上同名文件的拷贝。 这里我写了一段简单的php脚本采用溯源的策略来更新这些文件，当s1/s2/s3服务器上不存在该文件的时候，就向源服务器(static)请求该文件，并且保存在本地cache一份以便后续的相同请求使用。 1.在s1/s2/s3服务器上添加名为cdn.php的文件，内容如下： &#60;?php $path = $_GET&#91;&#34;name&#34;&#93;; $filename = md5&#40;$path&#41;; $file = &#34;save/&#34;.$filename.&#34;.data&#34;; if&#40;file_exists&#40;$file&#41;&#41;&#123; header&#40;'Content-type: '.mime_content_type&#40;$file&#41;&#41;; echo file_get_contents&#40;$file&#41;; &#125;else&#123; $content = file_get_contents&#40;&#34;http://source.ioio.name/upload/&#34;.$path&#41;; file_put_contents&#40;$file,$content&#41;; header&#40;'Content-type: '.mime_content_type&#40;$file&#41;&#41;; echo $content; &#125; ?&#62; 这段脚本会将读取到的文件存在本地的save文件夹里，需要save文件夹的读写权限。 2.配置.htaccess文件，添加一行记录： RewriteRule ^upload/(.*)$ /cdn.php?name=$1 [L] 这样配置后s1/s2/s3就能按照static的路径规则访问到相同的文件了。在实际的生成环境，可能会需要更复杂的cache策略，这里就不深入讨论。 -EOF- Related posts:万物皆缓存IIS 缓存问题Ubuntu 下字体的安装禁用Internet Explorer的DNS缓存利用 GAE同步更新饭否与TWITTER，建立你的HELLOTXTCopyright &#169; 2005~2011 &#124; Permalink &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>网站静态资源太多的情况下有时候我们需要分成多个域名来请求这些静态资源。<br />
如原来我们使用的</p>
<blockquote><p>http://static.ioio.name/upload/hello.jpg</p></blockquote>
<p>改成随机的使用</p>
<blockquote><p>http://s1.ioio.name/upload/hello.jpg</p>
<p>http://s2.ioio.name/upload/hello.jpg</p>
<p>http://s3.ioio.name/upload/hello.jpg</p></blockquote>
<p>这时候我们需要将s1/s2/s3服务器上的文件跟源服务器static同步。以使得他们都是访问的static上同名文件的拷贝。</p>
<p>这里我写了一段简单的php脚本采用溯源的策略来更新这些文件，当s1/s2/s3服务器上不存在该文件的时候，就向源服务器(static)请求该文件，并且保存在本地cache一份以便后续的相同请求使用。</p>
<p>1.在s1/s2/s3服务器上添加名为cdn.php的文件，内容如下：</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$path</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;name&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$filename</span> <span style="color: #339933;">=</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;save/&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$filename</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.data&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Content-type: '</span><span style="color: #339933;">.</span><span style="color: #990000;">mime_content_type</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://source.ioio.name/upload/&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">file_put_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #339933;">,</span><span style="color: #000088;">$content</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Content-type: '</span><span style="color: #339933;">.</span><span style="color: #990000;">mime_content_type</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$content</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>这段脚本会将读取到的文件存在本地的save文件夹里，需要save文件夹的读写权限。</p>
<p>2.配置.htaccess文件，添加一行记录：</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">RewriteRule</span> ^upload/(.*)$ /cdn.php?name=$1 [L]</pre></div></div>

<p>这样配置后s1/s2/s3就能按照static的路径规则访问到相同的文件了。在实际的生成环境，可能会需要更复杂的cache策略，这里就不深入讨论。<br />
-EOF-</p>
<hr /><h2>Related posts:</h2><ul><li><a href="http://ioio.name/cache-everything.html" rel="bookmark" title="Permanent Link: 万物皆缓存">万物皆缓存</a></li><li><a href="http://ioio.name/iis-cache.html" rel="bookmark" title="Permanent Link: IIS 缓存问题">IIS 缓存问题</a></li><li><a href="http://ioio.name/ubuntu-fonts-install.html" rel="bookmark" title="Permanent Link: Ubuntu 下字体的安装">Ubuntu 下字体的安装</a></li><li><a href="http://ioio.name/disable-ie-dns-cache.html" rel="bookmark" title="Permanent Link: 禁用Internet Explorer的DNS缓存">禁用Internet Explorer的DNS缓存</a></li><li><a href="http://ioio.name/use-gae-update-twitter.html" rel="bookmark" title="Permanent Link: 利用 GAE同步更新饭否与TWITTER，建立你的HELLOTXT">利用 GAE同步更新饭否与TWITTER，建立你的HELLOTXT</a></li></ul><hr /><small>Copyright &copy; 2005~2011 | <a href="http://ioio.name/cdn-cache-redirect.html" title="Permalink">Permalink</a> | <a href="http://ioio.name/cdn-cache-redirect.html#comments">2 Comments</a> | <a href="http://closetou.com" title="Close To U">Close To U</a> <br />
<a href="http://feeds.feedburner.com/miss">订阅</a> <a href="https://twitter.com/tearnon">Twitter</a> <a href="http://ioio.name/godaddy">域名优惠码</a> <a href="http://ioio.name/mt">Media Temple空间</a>
<a href="http://mdiatemple.com/" title="Domain Sale! $6.89 .com at GoDaddy">主机/域名优惠码</a>
</small> )</small>]]></content:encoded>
			<wfw:commentRss>http://ioio.name/cdn-cache-redirect.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Object-Oriented JavaScript笔记(一)</title>
		<link>http://ioio.name/object-oriented-javascript-note.html</link>
		<comments>http://ioio.name/object-oriented-javascript-note.html#comments</comments>
		<pubDate>Thu, 09 Feb 2012 05:18:17 +0000</pubDate>
		<dc:creator>枯藤昏鸦</dc:creator>
				<category><![CDATA[就是不分类]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OOP]]></category>

		<guid isPermaLink="false">http://ioio.name/?p=2001</guid>
		<description><![CDATA[第二章 基本数据类型、数组、循环和条件语句 变量是大小写敏感的 基本类型 基本类型（5类） Number、String、Boolean、Undefined、Null 除了基本类型外的，都是object，特例 >>> typeof null “object” Infinity是number类型的 >>> typeof Infinity “number” JS中最大的数是1.7976931348623157e+308 最小的分数是5e-324 非0数除以0得到Infinity，0除以0得到NaN 1/0 = Infinity 0/0 = NaN Infinity 与非NaN运算值为Infinity Infinity &#8211; 1 = Infinity NaN 与任何number运算值为NaN 一个String与一个变量做除&#8217;+'(加)以外的运算，都会转换成做数学运算 >>> var s = &#8217;3&#8242;; s = 3 * s; typeof s; “number” >>> var s = &#8217;3&#8242;; s = [...]]]></description>
			<content:encoded><![CDATA[<p><strong>第二章 基本数据类型、数组、循环和条件语句</strong></p>
<p>变量是大小写敏感的</p>
<p><strong>基本类型</strong></p>
<p>基本类型（5类） Number、String、Boolean、Undefined、Null<br />
除了基本类型外的，都是object，特例<br />
>>> typeof null<br />
“object”</p>
<p>Infinity是number类型的<br />
>>> typeof Infinity<br />
“number”</p>
<p>JS中最大的数是1.7976931348623157e+308 最小的分数是5e-324</p>
<p>非0数除以0得到Infinity，0除以0得到NaN<br />
1/0 = Infinity<br />
0/0 = NaN</p>
<p>Infinity 与非NaN运算值为Infinity<br />
Infinity &#8211; 1 = Infinity</p>
<p>NaN 与任何number运算值为NaN</p>
<p>一个String与一个变量做除&#8217;+'(加)以外的运算，都会转换成做数学运算<br />
>>> var s = &#8217;3&#8242;; s = 3 * s; typeof s;<br />
“number”</p>
<p>>>> var s = &#8217;3&#8242;; s = 3 + s; typeof s;<br />
“string”</p>
<p>两次逻辑非操作会做强制布尔转换。大部分情况都是为真，除非：<br />
1.空字符串 ”<br />
2.null<br />
3.undefined<br />
4.数 0<br />
5.数 NaN<br />
6.布尔值 false</p>
<p>利用惰性求值(Lazy Evaluation)做保护伞并不是处处受用<br />
var mynumber = mynumber || 10;</p>
<p>如果预先定义的  mynumber =0 ，这里就不是我们所预料的了。</p>
<p>=== 值与类型比较<br />
!== 不含类型转换的不等于比较</p>
<p>NaN不与任何值相等，包含其自身<br />
>>> NaN == NaN<br />
false</p>
<p>null值并不是由js环境给分配的，而是由代码给分配的<br />
>>> var value = null;<br />
>>> typeof value<br />
“object”</p>
<p>undefined与null还是大差别虽然微小，但是不容忽视<br />
>>> var i = 1 + undefined;<br />
>>> i<br />
NaN</p>
<p>>>> var i = 1 + null;<br />
>>> i<br />
1</p>
<p>这种差异发生在类型转换上<br />
>>> var i = 1*undefined;<br />
>>> i<br />
NaN</p>
<p>>>> var i = 1*null;<br />
>>> i<br />
0</p>
<p><strong>数组</strong></p>
<p>数组新添加元素索引跟数组最大索引之间有空隙的话，会被undefined值填充<br />
>>> var abc = [1];<br />
>>> abc[3] = 5;<br />
>>> abc<br />
[1, undefined, undefined, 5]</p>
<p>删除数组中的元素并不会改变数组大小，仅将删除位置为undefined<br />
>>> var a = [1, 2, 3];<br />
>>> delete a[2];<br />
>>> a<br />
[1, 2, undefined]</p>
<p>可以使用数组下标的形式访问字符串<br />
>>> var s = &#8216;one&#8217;;<br />
>>> s[0]<br />
“o”</p>
<p><strong>循环和条件语句</strong></p>
<p>通常情况下我们会把变量放if条件中做检查，但这样做并不一定妥当，变量可能存在但值为false<br />
>>> var result = ”;>>> if (somevar){result = &#8216;yes&#8217;;}<br />
￼somevar is not defined<br />
>>> result;<br />
“”<br />
 一种更好的方式<br />
>>> if (typeof somevar !== “undefined”){result = &#8216;yes&#8217;;}<br />
>>> result;<br />
“”</p>
<p>default是可以放在switch里任意位置的，并不一定是最后</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> a <span style="color: #339933;">=</span> <span style="color: #CC0000;">4</span><span style="color: #339933;">;</span>switch<span style="color: #009900;">&#40;</span>a<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
     <span style="color: #000066; font-weight: bold;">case</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">:</span>
          console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #000066; font-weight: bold;">break</span><span style="color: #339933;">;</span>
     <span style="color: #003366; font-weight: bold;">default</span><span style="color: #339933;">:</span>
          console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #000066; font-weight: bold;">break</span><span style="color: #339933;">;</span>
     <span style="color: #000066; font-weight: bold;">case</span> <span style="color: #CC0000;">6</span><span style="color: #339933;">:</span>
          console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #000066; font-weight: bold;">break</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>-EOF-</p>
<hr /><h2>Related posts:</h2><ul><li><a href="http://ioio.name/object-oriented-javascript-note-4.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(四)">Object-Oriented JavaScript笔记(四)</a></li><li><a href="http://ioio.name/object-oriented-javascript-note-2.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(二)">Object-Oriented JavaScript笔记(二)</a></li><li><a href="http://ioio.name/object-oriented-javascript-note-3.html" rel="bookmark" title="Permanent Link: Object-Oriented JavaScript笔记(三)">Object-Oriented JavaScript笔记(三)</a></li><li><a href="http://ioio.name/core-javascript-pitfalls.html" rel="bookmark" title="Permanent Link: JavaScript性能陷阱">JavaScript性能陷阱</a></li><li><a href="http://ioio.name/javascript-get-up-guide.html" rel="bookmark" title="Permanent Link: JavaScript 入门指南">JavaScript 入门指南</a></li></ul><hr /><small>Copyright &copy; 2005~2011 | <a href="http://ioio.name/object-oriented-javascript-note.html" title="Permalink">Permalink</a> | <a href="http://ioio.name/object-oriented-javascript-note.html#comments">3 Comments</a> | <a href="http://closetou.com" title="Close To U">Close To U</a> <br />
<a href="http://feeds.feedburner.com/miss">订阅</a> <a href="https://twitter.com/tearnon">Twitter</a> <a href="http://ioio.name/godaddy">域名优惠码</a> <a href="http://ioio.name/mt">Media Temple空间</a>
<a href="http://mdiatemple.com/" title="Domain Sale! $6.89 .com at GoDaddy">主机/域名优惠码</a>
</small> )</small>]]></content:encoded>
			<wfw:commentRss>http://ioio.name/object-oriented-javascript-note.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[CentOS]如何清空登陆历史记录(wtmp/btmp)?</title>
		<link>http://ioio.name/centos-clear-wtmp-and-btmp.html</link>
		<comments>http://ioio.name/centos-clear-wtmp-and-btmp.html#comments</comments>
		<pubDate>Mon, 23 Jan 2012 12:36:50 +0000</pubDate>
		<dc:creator>枯藤昏鸦</dc:creator>
				<category><![CDATA[就是不分类]]></category>
		<category><![CDATA[CentOS]]></category>

		<guid isPermaLink="false">http://ioio.name/?p=1998</guid>
		<description><![CDATA[在Linux系统中，可以使用last命令查看用户登陆成功的记录(Last Logged In Users);以及可以用lastb查看登陆失败的记录(Bad Login Attemps Log)。它们以文件形式(wtmp/btmp)存在/var/log/目录下，时间长了不免会变得越来越大，这时候我们需要做一些清理工作。 1.备份wtmp/btmp cp /var/log/wtmp ~/log/wtmp 2.清空wtmp/btmp 使用命令 cat /dev/null &#62; /var/log/wtmp 或者 &#62; /var/log/wtmp 上面的例子为清空登陆成功记录，将wtmp改成btmp即清空失败记录。 -EOF- Related posts:使用JavaScript检测Firefox浏览器是否启用了FirebugCentOS 6启用Apache2 WebDAV模块Copyright &#169; 2005~2011 &#124; Permalink &#124; 0 Comments &#124; Close To U 订阅 Twitter 域名优惠码 Media Temple空间 主机/域名优惠码 )]]></description>
			<content:encoded><![CDATA[<p>在Linux系统中，可以使用<em>last</em>命令查看用户登陆成功的记录(Last Logged In Users);以及可以用<em>lastb</em>查看登陆失败的记录(Bad Login Attemps Log)。它们以文件形式(wtmp/btmp)存在<em>/var/log/</em>目录下，时间长了不免会变得越来越大，这时候我们需要做一些清理工作。</p>
<p>1.备份wtmp/btmp</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">cp /var/log/wtmp ~/log/wtmp</pre></div></div>

<p>2.清空wtmp/btmp<br />
使用命令</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">cat /dev/null &gt; /var/log/wtmp</pre></div></div>

<p>或者</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">&gt; /var/log/wtmp</pre></div></div>

<p>上面的例子为清空登陆成功记录，将wtmp改成btmp即清空失败记录。<br />
-EOF-</p>
<hr /><h2>Related posts:</h2><ul><li><a href="http://ioio.name/detection-firebug.html" rel="bookmark" title="Permanent Link: 使用JavaScript检测Firefox浏览器是否启用了Firebug">使用JavaScript检测Firefox浏览器是否启用了Firebug</a></li><li><a href="http://ioio.name/webdav-on-centos.html" rel="bookmark" title="Permanent Link: CentOS 6启用Apache2 WebDAV模块">CentOS 6启用Apache2 WebDAV模块</a></li></ul><hr /><small>Copyright &copy; 2005~2011 | <a href="http://ioio.name/centos-clear-wtmp-and-btmp.html" title="Permalink">Permalink</a> | <a href="http://ioio.name/centos-clear-wtmp-and-btmp.html#comments">0 Comments</a> | <a href="http://closetou.com" title="Close To U">Close To U</a> <br />
<a href="http://feeds.feedburner.com/miss">订阅</a> <a href="https://twitter.com/tearnon">Twitter</a> <a href="http://ioio.name/godaddy">域名优惠码</a> <a href="http://ioio.name/mt">Media Temple空间</a>
<a href="http://mdiatemple.com/" title="Domain Sale! $6.89 .com at GoDaddy">主机/域名优惠码</a>
</small> )</small>]]></content:encoded>
			<wfw:commentRss>http://ioio.name/centos-clear-wtmp-and-btmp.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>获得git版本库地址</title>
		<link>http://ioio.name/git-remote-path.html</link>
		<comments>http://ioio.name/git-remote-path.html#comments</comments>
		<pubDate>Sat, 14 Jan 2012 18:32:31 +0000</pubDate>
		<dc:creator>枯藤昏鸦</dc:creator>
				<category><![CDATA[就是不分类]]></category>
		<category><![CDATA[Git]]></category>

		<guid isPermaLink="false">http://ioio.name/?p=1994</guid>
		<description><![CDATA[有时候我们需要快速的确定当前版本库remote服务器的路径，以确定是否pull或push。 像svn可以使用： svn info hg可以使用： hg path 从而快速的获得远端服务器地址. 而git也不例外，它也有相关的命令，只是比较复杂一点: git config --get remote.origin.url 使用这个命令便可获得git库地址，虽然长点但有总比没有好。 －EOF- Related posts:给PKU JudgeOnline免费版添加Java语言支持语法高亮工具Pygments在GAE中使用reCAPTCHA简单静态资源分发脚本编译C++ Boost LibraryCopyright &#169; 2005~2011 &#124; Permalink &#124; 1 Comments &#124; Close To U 订阅 Twitter 域名优惠码 Media Temple空间 主机/域名优惠码 )]]></description>
			<content:encoded><![CDATA[<p>有时候我们需要快速的确定当前版本库remote服务器的路径，以确定是否pull或push。<br />
像svn可以使用：</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">svn info</pre></div></div>

<p>hg可以使用：</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">hg path</pre></div></div>

<p>从而快速的获得远端服务器地址.</p>
<p>而git也不例外，它也有相关的命令，只是比较复杂一点:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">git config --get remote.origin.url</pre></div></div>

<p>使用这个命令便可获得git库地址，虽然长点但有总比没有好。<br />
－EOF-</p>
<hr /><h2>Related posts:</h2><ul><li><a href="http://ioio.name/pku-judgeonline-java.html" rel="bookmark" title="Permanent Link: 给PKU JudgeOnline免费版添加Java语言支持">给PKU JudgeOnline免费版添加Java语言支持</a></li><li><a href="http://ioio.name/pygments.html" rel="bookmark" title="Permanent Link: 语法高亮工具Pygments">语法高亮工具Pygments</a></li><li><a href="http://ioio.name/using-recaptcha-with-google-app-engine.html" rel="bookmark" title="Permanent Link: 在GAE中使用reCAPTCHA">在GAE中使用reCAPTCHA</a></li><li><a href="http://ioio.name/cdn-cache-redirect.html" rel="bookmark" title="Permanent Link: 简单静态资源分发脚本">简单静态资源分发脚本</a></li><li><a href="http://ioio.name/compile-cpp-boost-library.html" rel="bookmark" title="Permanent Link: 编译C++ Boost Library">编译C++ Boost Library</a></li></ul><hr /><small>Copyright &copy; 2005~2011 | <a href="http://ioio.name/git-remote-path.html" title="Permalink">Permalink</a> | <a href="http://ioio.name/git-remote-path.html#comments">1 Comments</a> | <a href="http://closetou.com" title="Close To U">Close To U</a> <br />
<a href="http://feeds.feedburner.com/miss">订阅</a> <a href="https://twitter.com/tearnon">Twitter</a> <a href="http://ioio.name/godaddy">域名优惠码</a> <a href="http://ioio.name/mt">Media Temple空间</a>
<a href="http://mdiatemple.com/" title="Domain Sale! $6.89 .com at GoDaddy">主机/域名优惠码</a>
</small> )</small>]]></content:encoded>
			<wfw:commentRss>http://ioio.name/git-remote-path.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Database Caching 30/116 queries in 0.210 seconds using disk: basic
Object Caching 2548/2731 objects using disk: basic

Served from: ioio.name @ 2012-05-21 18:36:13 -->
