<?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>行云与流水</title>
	<atom:link href="http://blog.huyo.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.huyo.org</link>
	<description>荷叶团团团似镜，菱角尖尖尖似锥。风吹柳絮毛球走，雨打梨花蛱蝶飞。</description>
	<lastBuildDate>Sun, 11 Jul 2010 06:56:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>用 Ajax 方式实现 Django Comments 提交</title>
		<link>http://blog.huyo.org/?p=420</link>
		<comments>http://blog.huyo.org/?p=420#comments</comments>
		<pubDate>Sat, 22 Aug 2009 11:55:08 +0000</pubDate>
		<dc:creator>ant21</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Django 自带的 Comments 模块还蛮好用的，但是提交的时候貌似有点麻烦，虽然可以手动去掉那个预览的按钮，只留下提交按钮，但还是想用户体验更好一些，用 Ajax 的方式来改进评论的提交。
想要的效果很简单，用户写完评论，点击提交按钮，这时候出现 loading 图标，显示正在提交，提交成功后，用 YFT 的方式把刚才的评论加到评论列表最后，同时评论数加一，loading 图标消失。当然，需要用到我最喜欢的 jQuery 和她的伙伴 Effect.Highlight。
在我的页面中，需要对每一个产品作评论，于是在 product_detail.html 的头部，加上如下代码：
123456789101112131415161718192021222324252627282930313233343536373839404142434445&#60;script type=&#34;text/javascript&#34; charset=&#34;utf-8&#34;&#62;
&#160; &#160; function bindComment&#40;&#41; &#123;
&#160; &#160; &#160; &#160; $&#40;'#comments form'&#41;.submit&#40;function&#40;&#41; &#123;
&#160; &#160; &#160; &#160; &#160; &#160; $&#40;'input[type=submit]'&#41;.attr&#40;'disabled', 'disabled'&#41;;
&#160; &#160; &#160; &#160; &#160; &#160; $.ajax&#40;&#123;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; type: &#34;POST&#34;,
&#160; &#160; &#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.djangoproject.com/">Django</a> 自带的 <a href="http://docs.djangoproject.com/en/dev/ref/contrib/comments/">Comments</a> 模块还蛮好用的，但是提交的时候貌似有点麻烦，虽然可以手动去掉那个预览的按钮，只留下提交按钮，但还是想用户体验更好一些，用 Ajax 的方式来改进评论的提交。</p>
<p>想要的效果很简单，用户写完评论，点击提交按钮，这时候出现 loading 图标，显示正在提交，提交成功后，用 <a href="http://37signals.com/svn/archives/000558.php">YFT</a> 的方式把刚才的评论加到评论列表最后，同时评论数加一，loading 图标消失。当然，需要用到我最喜欢的 <a href="http://www.jquery.com/">jQuery</a> 和她的伙伴 <a href="http://jqueryui.com/download">Effect.Highlight</a>。</p>
<p>在我的页面中，需要对每一个产品作评论，于是在 product_detail.html 的头部，加上如下代码：</p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;width:540px;height:350px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="sy0">&lt;</span>script type<span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span> charset<span class="sy0">=</span><span class="st0">&quot;utf-8&quot;</span><span class="sy0">&gt;</span><br />
&nbsp; &nbsp; <span class="kw2">function</span> bindComment<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">'#comments form'</span><span class="br0">&#41;</span>.<span class="me1">submit</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">'input[type=submit]'</span><span class="br0">&#41;</span>.<span class="me1">attr</span><span class="br0">&#40;</span><span class="st0">'disabled'</span><span class="sy0">,</span> <span class="st0">'disabled'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $.<span class="me1">ajax</span><span class="br0">&#40;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type<span class="sy0">:</span> <span class="st0">&quot;POST&quot;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data<span class="sy0">:</span> $<span class="br0">&#40;</span><span class="st0">'#comments form'</span><span class="br0">&#41;</span>.<span class="me1">serialize</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; url<span class="sy0">:</span> <span class="st0">&quot;{% comment_form_target %}&quot;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cache<span class="sy0">:</span> <span class="kw2">false</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dataType<span class="sy0">:</span> <span class="st0">&quot;html&quot;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; success<span class="sy0">:</span> <span class="kw2">function</span><span class="br0">&#40;</span>html<span class="sy0">,</span> textStatus<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; n <span class="sy0">=</span> Number<span class="br0">&#40;</span>$<span class="br0">&#40;</span><span class="st0">'#commentCount'</span><span class="br0">&#41;</span>.<span class="me1">text</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c <span class="sy0">=</span> $<span class="br0">&#40;</span>html<span class="br0">&#41;</span>.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">'[class^=comment]:last'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.<span class="me1">hide</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>n <span class="sy0">==</span> <span class="nu0">0</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">'h2.comment'</span><span class="br0">&#41;</span>.<span class="me1">after</span><span class="br0">&#40;</span>c<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">'[class^=comment]:last'</span><span class="br0">&#41;</span>.<span class="me1">after</span><span class="br0">&#40;</span>c<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">'#commentCount'</span><span class="br0">&#41;</span>.<span class="me1">text</span><span class="br0">&#40;</span>n<span class="sy0">+</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.<span class="me1">effect</span><span class="br0">&#40;</span><span class="st0">&quot;highlight&quot;</span><span class="sy0">,</span> <span class="br0">&#123;</span><span class="br0">&#125;</span><span class="sy0">,</span> <span class="nu0">5000</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">'input[type=submit]'</span><span class="br0">&#41;</span>.<span class="me1">removeAttr</span><span class="br0">&#40;</span><span class="st0">'disabled'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; error<span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span>XMLHttpRequest<span class="sy0">,</span> textStatus<span class="sy0">,</span> errorThrown<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">'Sorry, your comment was unable to be posted at this time. Please try later.'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; $<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.<span class="me1">ready</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; bindComment<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;#loading&quot;</span><span class="br0">&#41;</span>.<span class="me1">bind</span><span class="br0">&#40;</span><span class="st0">&quot;ajaxSend&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>.<span class="me1">bind</span><span class="br0">&#40;</span><span class="st0">&quot;ajaxComplete&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">hide</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="sy0">&lt;/</span>script<span class="sy0">&gt;</span></div></td></tr></tbody></table></div>
<p>然后，需要在 Submit 按钮下加个隐藏的 loading 图标：</p>
<div class="codecolorer-container html4strict blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br /></div></td><td><div class="html4strict codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="sc2">&lt;<a href="http://december.com/html/4/element/span.html"><span class="kw2">span</span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;loading&quot;</span>&gt;&lt;<a href="http://december.com/html/4/element/img.html"><span class="kw2">img</span></a> <span class="kw3">src</span><span class="sy0">=</span><span class="st0">&quot;/media/loading.gif&quot;</span> <span class="sy0">/</span>&gt;</span>Submitting your comment, please wait...<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/span.html"><span class="kw2">span</span></a>&gt;</span></div></td></tr></tbody></table></div>
<p>最后，记得在 css 文件中添加 loading 的样式，这样评论的改进就完成了。当然还可以加上对提交数据的验证和提示，通过 jQuery，实现起来会很简单。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.huyo.org/?feed=rss2&amp;p=420</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Windows 下 Pidgin 字体设置</title>
		<link>http://blog.huyo.org/?p=419</link>
		<comments>http://blog.huyo.org/?p=419#comments</comments>
		<pubDate>Wed, 12 Aug 2009 02:24:51 +0000</pubDate>
		<dc:creator>ant21</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[pidgin]]></category>

		<guid isPermaLink="false">http://blog.huyo.org/?p=419</guid>
		<description><![CDATA[界面字体设置
修改 C:\Program Files\Common Files\GTK\2.0\etc\gtk-2.0\gtkrc 就可以了，比如：
123gtk-font-name = &#34;SimSun 9&#34;

gtk-theme-name = &#34;Raleigh&#34;
对话框的字体设置
在 C:\Program Files\Common Files\GTK\2.0\etc\pango\pango.aliases 中添加一行：
1msst = &#34;SimSun&#34;
在 C:\Program Files\Common Files\GTK\2.0\etc\gtk-2.0\ 下新建文件 gtkrc.zh_CN，输入内容：
1234567style &#34;user-font&#34; {
&#160; &#160; font_name = &#34;msst 9&#34;
}

widget_class &#34;*&#34; style &#34;user-font&#34;

gtk-font-name=&#34;msst 9&#34;
这也是修改 GTK 程序界面的方法。
]]></description>
			<content:encoded><![CDATA[<p><strong>界面字体设置</strong></p>
<p>修改 C:\Program Files\Common Files\GTK\2.0\etc\gtk-2.0\gtkrc 就可以了，比如：</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="font-family:Monaco,Lucida Console,monospace">gtk-font-name = &quot;SimSun 9&quot;<br />
<br />
gtk-theme-name = &quot;Raleigh&quot;</div></td></tr></tbody></table></div>
<p><strong>对话框的字体设置</strong></p>
<p>在 C:\Program Files\Common Files\GTK\2.0\etc\pango\pango.aliases 中添加一行：</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br /></div></td><td><div class="text codecolorer" style="font-family:Monaco,Lucida Console,monospace">msst = &quot;SimSun&quot;</div></td></tr></tbody></table></div>
<p>在 C:\Program Files\Common Files\GTK\2.0\etc\gtk-2.0\ 下新建文件 gtkrc.zh_CN，输入内容：</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="text codecolorer" style="font-family:Monaco,Lucida Console,monospace">style &quot;user-font&quot; {<br />
&nbsp; &nbsp; font_name = &quot;msst 9&quot;<br />
}<br />
<br />
widget_class &quot;*&quot; style &quot;user-font&quot;<br />
<br />
gtk-font-name=&quot;msst 9&quot;</div></td></tr></tbody></table></div>
<p>这也是修改 GTK 程序界面的方法。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.huyo.org/?feed=rss2&amp;p=419</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Greasemonkey 技巧</title>
		<link>http://blog.huyo.org/?p=418</link>
		<comments>http://blog.huyo.org/?p=418#comments</comments>
		<pubDate>Thu, 18 Jun 2009 08:39:04 +0000</pubDate>
		<dc:creator>ant21</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[greasemonkey]]></category>

		<guid isPermaLink="false">http://blog.huyo.org/?p=418</guid>
		<description><![CDATA[Greasemonkey 会把对象包裹起来返回 XPCNativeWrapper，写 JS 的时候需要留心。下面这些要点来自 Greasemonkey Hacks。
1. 调用函数
12345//工作
window.setTimeout&#40;my_func, 1000&#41; 

//不工作
window.setTimeout&#40;&#34;my_func()&#34;, 1000&#41;
2. 事件处理
12345678910//工作
var elmLink = document.getElementById&#40;'somelink'&#41;;
elmLink.addEventListener&#40;&#34;click&#34;, my_func, true&#41;;

//不工作
var elmLink = document.getElementById&#40;'somelink'&#41;;
elmLink.onclick = my_func;

var elmLink = document.getElementById&#40;'somelink'&#41;;
elmLink.onclick = 'my_func(this)';
3. 命名表单和表单元素
1234&#60;!--假如有表单--&#62;
&#60;form id=&#34;gs&#34;&#62;
&#160; &#160; &#60;input name=&#34;q&#34; type=&#34;text&#34; value=&#34;foo&#34; /&#62;
&#60;/form&#62;
1234567//工作
var form = document.forms.namedItem&#40;&#34;gs&#34;&#41;;
var input = form.elements.namedItem&#40;&#34;q&#34;&#41;;
var q = input.value;

//不工作
var q = document.gs.q.value;
4. 自定义属性
1234567//工作
var elmFoo = document.getElementById&#40;'foo'&#41;;
elmFoo.setAttribute&#40;'myProperty', 'bar'&#41;;

//不工作
var elmFoo = document.getElementById&#40;'foo'&#41;;
elmFoo.myProperty [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a> 会把对象包裹起来返回 <a href="https://developer.mozilla.org/En/XPCNativeWrapper">XPCNativeWrapper</a>，写 JS 的时候需要留心。下面这些要点来自 <a href="http://commons.oreilly.com/wiki/index.php/Greasemonkey_Hacks">Greasemonkey Hacks</a>。</p>
<p><strong>1. 调用函数</strong></p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1">//工作</span><br />
window.<span class="me1">setTimeout</span><span class="br0">&#40;</span>my_func<span class="sy0">,</span> <span class="nu0">1000</span><span class="br0">&#41;</span> <br />
<br />
<span class="co1">//不工作</span><br />
window.<span class="me1">setTimeout</span><span class="br0">&#40;</span><span class="st0">&quot;my_func()&quot;</span><span class="sy0">,</span> <span class="nu0">1000</span><span class="br0">&#41;</span></div></td></tr></tbody></table></div>
<p><strong>2. 事件处理</strong></p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1">//工作</span><br />
<span class="kw2">var</span> elmLink <span class="sy0">=</span> document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'somelink'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
elmLink.<span class="me1">addEventListener</span><span class="br0">&#40;</span><span class="st0">&quot;click&quot;</span><span class="sy0">,</span> my_func<span class="sy0">,</span> <span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="co1">//不工作</span><br />
<span class="kw2">var</span> elmLink <span class="sy0">=</span> document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'somelink'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
elmLink.<span class="me1">onclick</span> <span class="sy0">=</span> my_func<span class="sy0">;</span><br />
<br />
<span class="kw2">var</span> elmLink <span class="sy0">=</span> document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'somelink'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
elmLink.<span class="me1">onclick</span> <span class="sy0">=</span> <span class="st0">'my_func(this)'</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p><strong>3. 命名表单和表单元素</strong></p>
<div class="codecolorer-container html4strict blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="html4strict codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="sc-1">&lt;!--假如有表单--&gt;</span><br />
<span class="sc2">&lt;<a href="http://december.com/html/4/element/form.html"><span class="kw2">form</span></a> <span class="kw3">id</span><span class="sy0">=</span><span class="st0">&quot;gs&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span class="sc2">&lt;<a href="http://december.com/html/4/element/input.html"><span class="kw2">input</span></a> <span class="kw3">name</span><span class="sy0">=</span><span class="st0">&quot;q&quot;</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">&quot;text&quot;</span> <span class="kw3">value</span><span class="sy0">=</span><span class="st0">&quot;foo&quot;</span> <span class="sy0">/</span>&gt;</span><br />
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/form.html"><span class="kw2">form</span></a>&gt;</span></div></td></tr></tbody></table></div>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1">//工作</span><br />
<span class="kw2">var</span> form <span class="sy0">=</span> document.<span class="me1">forms</span>.<span class="me1">namedItem</span><span class="br0">&#40;</span><span class="st0">&quot;gs&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw2">var</span> input <span class="sy0">=</span> form.<span class="me1">elements</span>.<span class="me1">namedItem</span><span class="br0">&#40;</span><span class="st0">&quot;q&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw2">var</span> q <span class="sy0">=</span> input.<span class="me1">value</span><span class="sy0">;</span><br />
<br />
<span class="co1">//不工作</span><br />
<span class="kw2">var</span> q <span class="sy0">=</span> document.<span class="me1">gs</span>.<span class="me1">q</span>.<span class="me1">value</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p><strong>4. 自定义属性</strong></p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1">//工作</span><br />
<span class="kw2">var</span> elmFoo <span class="sy0">=</span> document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'foo'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
elmFoo.<span class="me1">setAttribute</span><span class="br0">&#40;</span><span class="st0">'myProperty'</span><span class="sy0">,</span> <span class="st0">'bar'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="co1">//不工作</span><br />
<span class="kw2">var</span> elmFoo <span class="sy0">=</span> document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'foo'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
elmFoo.<span class="me1">myProperty</span> <span class="sy0">=</span> <span class="st0">'bar'</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p><strong>5. 迭代集合</strong></p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1">//工作</span><br />
<span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> arInputs.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw2">var</span> elmInput <span class="sy0">=</span> arInputs<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; …<br />
<span class="br0">&#125;</span><br />
<br />
<span class="co1">//不工作</span><br />
<span class="kw2">var</span> arInputs <span class="sy0">=</span> document.<span class="me1">getElementsByTagName</span><span class="br0">&#40;</span><span class="st0">&quot;input&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> elmInput <span class="kw1">in</span> arInputs<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; …<br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p><strong>6. scrollIntoView</strong></p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1">//工作</span><br />
<span class="kw2">var</span> elmFoo <span class="sy0">=</span> document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'foo'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw2">var</span> elmUnderlyingFoo <span class="sy0">=</span> elmFoo.<span class="me1">wrappedJSObject</span> <span class="sy0">||</span> elmFoo<span class="sy0">;</span><br />
elmUnderlyingFoo.<span class="me1">scrollIntoView</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="co1">//不工作</span><br />
<span class="kw2">var</span> elmFoo <span class="sy0">=</span> document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'foo'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
elmFoo.<span class="me1">scrollIntoView</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p><strong>7. location</strong></p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1">//工作</span><br />
window.<span class="me1">location</span>.<span class="me1">href</span> <span class="sy0">=</span> <span class="st0">&quot;http://example.com/&quot;</span><span class="sy0">;</span><br />
<br />
<span class="co1">//不工作</span><br />
window.<span class="me1">location</span> <span class="sy0">=</span> <span class="st0">&quot;http://example.com/&quot;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p><strong>8. 调用远程页面脚本</strong></p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1">//工作</span><br />
<span class="kw2">var</span> searchForm <span class="sy0">=</span> getNode<span class="br0">&#40;</span><span class="st0">&quot;s&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
searchForm.<span class="me1">elements</span>.<span class="me1">namedItem</span><span class="br0">&#40;</span><span class="st0">&quot;q&quot;</span><span class="br0">&#41;</span>.<span class="me1">value</span> <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">getRunnableQuery</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
top.<span class="me1">js</span>._MH_OnSearch<span class="br0">&#40;</span>unsafeWindow<span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="co1">//不工作</span><br />
<span class="kw2">var</span> searchForm <span class="sy0">=</span> getNode<span class="br0">&#40;</span><span class="st0">&quot;s&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
searchForm.<span class="me1">elements</span>.<span class="me1">namedItem</span><span class="br0">&#40;</span><span class="st0">&quot;q&quot;</span><span class="br0">&#41;</span>.<span class="me1">value</span> <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">getRunnableQuery</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
top.<span class="me1">js</span>._MH_OnSearch<span class="br0">&#40;</span>window<span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p><strong>9. watch</strong></p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1">//工作</span><br />
unsafeWindow.<span class="me1">watch</span><span class="br0">&#40;</span><span class="st0">&quot;location&quot;</span><span class="sy0">,</span> watchLocation<span class="br0">&#41;</span><span class="sy0">;</span><br />
unsafeWindow.<span class="me1">location</span>.<span class="me1">watch</span><span class="br0">&#40;</span><span class="st0">&quot;href&quot;</span><span class="sy0">,</span> watchLocation<span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="co1">//不工作</span><br />
window.<span class="me1">watch</span><span class="br0">&#40;</span><span class="st0">&quot;location&quot;</span><span class="sy0">,</span> watchLocation<span class="br0">&#41;</span><span class="sy0">;</span><br />
window.<span class="me1">location</span>.<span class="me1">watch</span><span class="br0">&#40;</span><span class="st0">&quot;href&quot;</span><span class="sy0">,</span> watchLocation<span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p><strong>10. 样式</strong></p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1">//工作</span><br />
<span class="kw2">var</span> elmFoo <span class="sy0">=</span> document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;foo&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
elmFoo.<span class="me1">style</span>.<span class="me1">margin</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span><br />
elmFoo.<span class="me1">style</span>.<span class="me1">padding</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<br />
<span class="co1">//不工作</span><br />
<span class="kw2">var</span> elmFoo <span class="sy0">=</span> document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;foo&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
elmFoo.<span class="me1">setAttribute</span><span class="br0">&#40;</span><span class="st0">&quot;style&quot;</span><span class="sy0">,</span> <span class="st0">&quot;margin:0; padding:0;&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.huyo.org/?feed=rss2&amp;p=418</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Peterzahlt Auto Click</title>
		<link>http://blog.huyo.org/?p=416</link>
		<comments>http://blog.huyo.org/?p=416#comments</comments>
		<pubDate>Mon, 08 Jun 2009 12:03:02 +0000</pubDate>
		<dc:creator>ant21</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[peterzahlt]]></category>

		<guid isPermaLink="false">http://blog.huyo.org/?p=416</guid>
		<description><![CDATA[Peterzahlt 很不错，天下竟然有免费的午餐。不过现在学精了，会在中途插播广告（人家也要吃饭的嘛），过了 10 分钟以后，会随机出现 5、6 次广告，如果在 30 秒之内不点击的话就自动切断，够狠啊。这样就必须一直紧盯着它广告，万一漏点就要重新排队，很长很长的队哦。
不过还好有强大的 Firefox，再加上 Greasemonkey，那么这件非常不人性化的事情就可以由机器代劳了。
假设你已经装好 Greasemonkey，那么点击安装就可以了。代码很简单。
12345678910111213// ==UserScript==
// @name &#160; &#160; &#160; &#160; &#160; Peterzahlt Auto Click
// @namespace &#160; &#160; &#160;http://userscripts.org/users/ant21
// @description &#160; &#160;Auto click Peterzahlt ads and you can lie on bed to call.
// @include &#160; &#160; &#160; &#160;http://www.peterzahlt.de/*
// ==/UserScript==

window.detect = function&#40;&#41;
&#123;
&#160; &#160; location.href = &#34;javascript:void(clickbanner(0));&#34;; //click banner
&#125;

window.setInterval&#40;detect, 10000&#41;;
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.peterzahlt.de/">Peterzahlt</a> 很不错，天下竟然有免费的午餐。不过现在学精了，会在中途插播广告（人家也要吃饭的嘛），过了 10 分钟以后，会随机出现 5、6 次广告，如果在 30 秒之内不点击的话就自动切断，够狠啊。这样就必须一直紧盯着它广告，万一漏点就要重新排队，很长很长的队哦。</p>
<p>不过还好有强大的 <a href="http://www.mozilla.com/en-US/firefox/">Firefox</a>，再加上 <a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a>，那么这件非常不人性化的事情就可以由机器代劳了。</p>
<p>假设你已经装好 <a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a>，那么点击<strong><a href="http://userscripts.org/scripts/source/51023.user.js">安装</a></strong>就可以了。代码很简单。</p>
<div class="codecolorer-container javascript blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="javascript codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1">// ==UserScript==</span><br />
<span class="co1">// @name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Peterzahlt Auto Click</span><br />
<span class="co1">// @namespace &nbsp; &nbsp; &nbsp;http://userscripts.org/users/ant21</span><br />
<span class="co1">// @description &nbsp; &nbsp;Auto click Peterzahlt ads and you can lie on bed to call.</span><br />
<span class="co1">// @include &nbsp; &nbsp; &nbsp; &nbsp;http://www.peterzahlt.de/*</span><br />
<span class="co1">// ==/UserScript==</span><br />
<br />
window.<span class="me1">detect</span> <span class="sy0">=</span> <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; location.<span class="me1">href</span> <span class="sy0">=</span> <span class="st0">&quot;javascript:void(clickbanner(0));&quot;</span><span class="sy0">;</span> <span class="co1">//click banner</span><br />
<span class="br0">&#125;</span><br />
<br />
window.<span class="me1">setInterval</span><span class="br0">&#40;</span>detect<span class="sy0">,</span> <span class="nu0">10000</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.huyo.org/?feed=rss2&amp;p=416</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Google Chrome Nightly Builds</title>
		<link>http://blog.huyo.org/?p=415</link>
		<comments>http://blog.huyo.org/?p=415#comments</comments>
		<pubDate>Fri, 29 May 2009 06:18:54 +0000</pubDate>
		<dc:creator>ant21</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://blog.huyo.org/?p=415</guid>
		<description><![CDATA[Google Chrome 3.0 Dev 版已经放出，可以从这里下载，非常不错哦。而且还有一个小工具可以帮你检测最新版本并下载。想要为 Chrome 开发扩展的话，官方的开发者老家和 ChromePlugins 都不容错过哦。
]]></description>
			<content:encoded><![CDATA[<p>Google Chrome 3.0 Dev 版已经放出，可以从<a href="http://build.chromium.org/buildbot/snapshots/chromium-rel-xp/">这里</a>下载，非常不错哦。而且还有一个<a href="http://dirhael.dcmembers.com/cnu/">小工具</a>可以帮你检测最新版本并下载。想要为 Chrome 开发扩展的话，官方的<a href="http://dev.chromium.org/Home">开发者老家</a>和 <a href="http://www.chromeplugins.org/">ChromePlugins</a> 都不容错过哦。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.huyo.org/?feed=rss2&amp;p=415</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>easy_install uninstall</title>
		<link>http://blog.huyo.org/?p=414</link>
		<comments>http://blog.huyo.org/?p=414#comments</comments>
		<pubDate>Thu, 28 May 2009 09:36:37 +0000</pubDate>
		<dc:creator>ant21</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[easy_install]]></category>
		<category><![CDATA[sphinx]]></category>

		<guid isPermaLink="false">http://blog.huyo.org/?p=414</guid>
		<description><![CDATA[Sphinx 0.6.1 没有 0.5.1 好用，而且用来编译 Django 文档时会出错。用 easy_install 安装的，调用的时候总是默认选择了最新版，没找到切换版本的方法，还是把 0.6.1 卸载了吧。运行命令：
1easy_install -m PackageName
两遍以后，再调用 Sphinx 就会切换到 0.5.1 版本了。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1 没有 0.5.1 好用，而且用来编译 <a href="http://www.djangoproject.com/">Django</a> 文档时会出错。用 easy_install 安装的，调用的时候总是默认选择了最新版，没找到切换版本的方法，还是把 0.6.1 卸载了吧。运行命令：</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br /></div></td><td><div class="bash codecolorer" style="font-family:Monaco,Lucida Console,monospace">easy_install <span class="re5">-m</span> PackageName</div></td></tr></tbody></table></div>
<p>两遍以后，再调用 Sphinx 就会切换到 0.5.1 版本了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.huyo.org/?feed=rss2&amp;p=414</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 2.7.1 乱码</title>
		<link>http://blog.huyo.org/?p=413</link>
		<comments>http://blog.huyo.org/?p=413#comments</comments>
		<pubDate>Mon, 04 May 2009 08:06:59 +0000</pubDate>
		<dc:creator>ant21</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.huyo.org/?p=413</guid>
		<description><![CDATA[貌似从用上 WP 乱码就如影随形，现在倒也见怪不怪了。今天鼓足勇气升级到 2.7.1 还是乱码，手动解决吧。
wp-includes 目录下，wp-db.php 在 348 行
1$this-&#62;select&#40;$dbname&#41;;
的上面加上
1mysql_query&#40;”SET NAMES utf8″,$this-&#62;dbh&#41;;
就行了。
]]></description>
			<content:encoded><![CDATA[<p>貌似从用上 WP 乱码就如影随形，现在倒也见怪不怪了。今天鼓足勇气升级到 2.7.1 还是乱码，手动解决吧。</p>
<p>wp-includes 目录下，wp-db.php 在 348 行</p>
<div class="codecolorer-container php blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">select</span><span class="br0">&#40;</span><span class="re0">$dbname</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p>的上面加上</p>
<div class="codecolorer-container php blackboard" style="overflow:auto;white-space:nowrap;width:540px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span>”SET NAMES utf8″<span class="sy0">,</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">dbh</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p>就行了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.huyo.org/?feed=rss2&amp;p=413</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>痘，逗？</title>
		<link>http://blog.huyo.org/?p=412</link>
		<comments>http://blog.huyo.org/?p=412#comments</comments>
		<pubDate>Sun, 03 May 2009 08:54:28 +0000</pubDate>
		<dc:creator>ant21</dc:creator>
				<category><![CDATA[thinking]]></category>

		<guid isPermaLink="false">http://blog.huyo.org/?p=412</guid>
		<description><![CDATA[好笑啊，想知道，从脸上的痘如何上升到苦难的生活。或许已经惯于用一种悲观和敌对的态度来看待周遭的人和事。再通过自己的放大镜来无休止的放大，好让自己觉得受了天大的委屈，全世界都因为这点鸡毛蒜皮而蠢蠢欲动、风起云涌。或许时刻生活在这种感觉中才会让自己觉得踏实和舒服，我痛苦我存在？
生活本就是充满亿万种可能，风平浪静也好，风起云涌也好，乐也好，苦也好。本来如此，更不必去寻个是非曲直好坏享乐苦难的来头上安头，担得起才是真丈夫，一来一档，二来二收，找什么葛藤往自己身上遮羞。歇了吧。
两个黄鹂鸣翠柳，一行白鹭上青天。
美！
]]></description>
			<content:encoded><![CDATA[<p>好笑啊，想知道，从脸上的痘如何上升到苦难的生活。或许已经惯于用一种悲观和敌对的态度来看待周遭的人和事。再通过自己的放大镜来无休止的放大，好让自己觉得受了天大的委屈，全世界都因为这点鸡毛蒜皮而蠢蠢欲动、风起云涌。或许时刻生活在这种感觉中才会让自己觉得踏实和舒服，我痛苦我存在？</p>
<p>生活本就是充满亿万种可能，风平浪静也好，风起云涌也好，乐也好，苦也好。本来如此，更不必去寻个是非曲直好坏享乐苦难的来头上安头，担得起才是真丈夫，一来一档，二来二收，找什么葛藤往自己身上遮羞。歇了吧。</p>
<p>两个黄鹂鸣翠柳，一行白鹭上青天。</p>
<p>美！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.huyo.org/?feed=rss2&amp;p=412</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>diggfoto hack</title>
		<link>http://blog.huyo.org/?p=411</link>
		<comments>http://blog.huyo.org/?p=411#comments</comments>
		<pubDate>Sun, 03 May 2009 06:49:17 +0000</pubDate>
		<dc:creator>ant21</dc:creator>
				<category><![CDATA[DataBase]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[listening]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[thinking]]></category>

		<guid isPermaLink="false">http://blog.huyo.org/?p=411</guid>
		<description><![CDATA[diggfoto 上的图片还蛮不错的，但是要一张一张去点确实有点不人道（总在期望下一张更精彩？），下面的程序可以帮忙把它的图片都下回来，事先最好准备一个 diggfoto 文件夹，嘿嘿。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#! /usr/bin/env python
#coding=utf-8

import os
import sys
import urllib
import urllib2
from BeautifulSoup import BeautifulSoup

def download&#40;url='http://diggfoto.com/'&#41;: &#160; &#160;
&#160; &#160; try:
&#160; &#160; &#160; &#160; r = urllib2.urlopen&#40;url&#41;
&#160; &#160; &#160; &#160; page = r.read&#40;&#41;
&#160; &#160; &#160; &#160; 
&#160; &#160; &#160; &#160; soup = BeautifulSoup&#40;page&#41;
&#160; &#160; &#160; &#160; entry = soup.find&#40;'div', 'entry'&#41;
&#160; &#160; &#160; &#160; a = entry.find&#40;'a'&#41;
&#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://diggfoto.com/">diggfoto</a> 上的图片还蛮不错的，但是要一张一张去点确实有点不人道（总在期望下一张更精彩？），下面的程序可以帮忙把它的图片都下回来，事先最好准备一个 diggfoto 文件夹，嘿嘿。</p>
<div class="codecolorer-container python blackboard" style="overflow:auto;white-space:nowrap;width:540px;height:350px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br /></div></td><td><div class="python codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1">#! /usr/bin/env python</span><br />
<span class="co1">#coding=utf-8</span><br />
<br />
<span class="kw1">import</span> <span class="kw3">os</span><br />
<span class="kw1">import</span> <span class="kw3">sys</span><br />
<span class="kw1">import</span> <span class="kw3">urllib</span><br />
<span class="kw1">import</span> <span class="kw3">urllib2</span><br />
<span class="kw1">from</span> BeautifulSoup <span class="kw1">import</span> BeautifulSoup<br />
<br />
<span class="kw1">def</span> download<span class="br0">&#40;</span>url=<span class="st0">'http://diggfoto.com/'</span><span class="br0">&#41;</span>: &nbsp; &nbsp;<br />
&nbsp; &nbsp; <span class="kw1">try</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; r = <span class="kw3">urllib2</span>.<span class="me1">urlopen</span><span class="br0">&#40;</span>url<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; page = r.<span class="me1">read</span><span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; soup = BeautifulSoup<span class="br0">&#40;</span>page<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; entry = soup.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">'div'</span>, <span class="st0">'entry'</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; a = entry.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">'a'</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; nextLink = a<span class="br0">&#91;</span><span class="st0">'href'</span><span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; img = a.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">'img'</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; imageUrl = img<span class="br0">&#91;</span><span class="st0">'src'</span><span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; dotindex = imageUrl.<span class="me1">rindex</span><span class="br0">&#40;</span><span class="st0">'.'</span><span class="br0">&#41;</span> &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; <span class="kw1">except</span> <span class="kw2">AttributeError</span>, e:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">print</span> e<br />
&nbsp; &nbsp; <span class="kw1">except</span> <span class="kw2">IndexError</span>, e:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">print</span> e<br />
&nbsp; &nbsp; <span class="kw1">except</span> <span class="kw2">UnicodeDecodeError</span>, e:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">print</span> e<br />
&nbsp; &nbsp; <span class="kw1">except</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">print</span> <span class="st0">'Oops'</span><br />
&nbsp; &nbsp; <span class="kw1">else</span>: &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="kw2">len</span><span class="br0">&#40;</span>img<span class="br0">&#91;</span><span class="st0">'alt'</span><span class="br0">&#93;</span><span class="br0">&#41;</span> == <span class="nu0">0</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; slash = url.<span class="me1">rfind</span><span class="br0">&#40;</span><span class="st0">'/'</span>, <span class="nu0">0</span>, <span class="kw2">len</span><span class="br0">&#40;</span>url<span class="br0">&#41;</span>-<span class="nu0">2</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rand = url<span class="br0">&#91;</span>slash+<span class="nu0">1</span>:url.<span class="me1">rfind</span><span class="br0">&#40;</span><span class="st0">'/'</span><span class="br0">&#41;</span><span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rand = img<span class="br0">&#91;</span><span class="st0">'alt'</span><span class="br0">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="kw1">not</span> <span class="kw3">os</span>.<span class="me1">path</span>.<span class="me1">exists</span><span class="br0">&#40;</span><span class="st0">'diggfoto'</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">print</span> <span class="st0">'Is there a directory named diggfoto?'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">sys</span>.<span class="me1">exit</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; name = <span class="kw3">os</span>.<span class="me1">path</span>.<span class="me1">join</span><span class="br0">&#40;</span><span class="st0">'diggfoto'</span>, rand + imageUrl<span class="br0">&#91;</span>dotindex:dotindex+<span class="nu0">4</span><span class="br0">&#93;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; exist = <span class="kw3">os</span>.<span class="me1">path</span>.<span class="me1">exists</span><span class="br0">&#40;</span>name<span class="br0">&#41;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> imageUrl <span class="kw1">and</span> <span class="kw1">not</span> exist:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">try</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">print</span> <span class="st0">'Downloading Image ==&gt; %s'</span> <span class="sy0">%</span> name<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">except</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">print</span> <span class="st0">'Downloading Image ...'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">try</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">urllib</span>.<span class="me1">urlretrieve</span><span class="br0">&#40;</span>imageUrl, name<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">except</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; download<span class="br0">&#40;</span>nextLink<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> nextLink:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">print</span> <span class="st0">'Next url ==&gt; %s'</span> <span class="sy0">%</span> nextLink<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> nextLink.<span class="me1">endswith</span><span class="br0">&#40;</span><span class="st0">'tags/'</span><span class="br0">&#41;</span> <span class="kw1">or</span> nextLink.<span class="me1">endswith</span><span class="br0">&#40;</span><span class="st0">'archive/'</span><span class="br0">&#41;</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">or</span> nextLink.<span class="me1">endswith</span><span class="br0">&#40;</span><span class="st0">'about/'</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">print</span> <span class="st0">'Complete'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; download<span class="br0">&#40;</span>nextLink<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <br />
<span class="kw1">if</span> __name__ == <span class="st0">&quot;__main__&quot;</span>:<br />
&nbsp; &nbsp; <span class="kw3">sys</span>.<span class="me1">exit</span><span class="br0">&#40;</span>download<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.huyo.org/?feed=rss2&amp;p=411</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>How to get a girl</title>
		<link>http://blog.huyo.org/?p=410</link>
		<comments>http://blog.huyo.org/?p=410#comments</comments>
		<pubDate>Sat, 02 May 2009 07:05:10 +0000</pubDate>
		<dc:creator>ant21</dc:creator>
				<category><![CDATA[seeing]]></category>

		<guid isPermaLink="false">http://blog.huyo.org/?p=410</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="src" value="http://player.youku.com/player.php/sid/XNDc4MTU1NjA=/v.swf" /><embed type="application/x-shockwave-flash" width="480" height="400" src="http://player.youku.com/player.php/sid/XNDc4MTU1NjA=/v.swf" align="middle"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.huyo.org/?feed=rss2&amp;p=410</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
