<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">

<channel>
	<title>Felix's Blog</title>
	
	<link>http://blog.felixc.at</link>
	<description />
	<lastBuildDate>Sun, 13 May 2012 10:37:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/felixcat" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="felixcat" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.5/</creativeCommons:license><item>
		<title>猫颜文字 For Fcitx QuickPhrase</title>
		<link>http://blog.felixc.at/2012/05/kitty-for-fcitx-quickphrase/</link>
		<comments>http://blog.felixc.at/2012/05/kitty-for-fcitx-quickphrase/#comments</comments>
		<pubDate>Sun, 13 May 2012 10:22:54 +0000</pubDate>
		<dc:creator>Felix Yan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Fcitx]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.felixc.at/?p=1115</guid>
		<description><![CDATA[嗯, 原版来自猫老师的 http://catfan.me/_/p18814 喵, 俺只是简单转了下格式. 把下面的内容放到 ~/.config/fcitx/data/QuickPhrase.mb 就可以了(没这个文件/目录就建一下) aowu ┗&#60;(=｀O′=)&#62;┛ mobai ｍ&#60;(＿　＿)&#62;ｍ baobao &#60;(=′▽')爻 (`▽｀=)&#62; baobao &#60;(=*′д｀)爻(′д｀*=)&#62; qiangbi ▄︻┻┳═一…… ☆&#60;(=￣□￣=!)&#62; baoxiao o&#60;(*≧▽≦)&#62;ツ sheji &#60;(!=￣□￣)ｏ―∈‥oo━━━━━━━☆ e &#60;(ˉ▽ˉ；=)&#62; kunao o&#60;&#60;(≧口≦)&#62;&#62;o nanshou o&#60;(=′益`=)&#62;o bingo &#60;(=o゜▽゜)o☆[BINGO!] bishi &#60;(=￢_￢=)&#62; biti &#60;(=￣ ‘i ￣=)&#62; biti &#60;(=￣ii￣=)&#62;&#60;(=￣＂￣=)&#62; feipang &#60;(=￣)ε(￣=)&#62; budong &#60;(=＠_＠;=)?&#62; buguanwoshi ㄟ&#60;(=▔.▔=)&#62;ㄏ qie (￣_,￣ =)&#62; buyao °.°·(((p&#60;(≧□≦)&#62;;q)))·°.°。 yaotou &#60;(=￣ε￣ = ￣3￣=)&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>嗯, 原版来自猫老师的 <a href="http://catfan.me/_/p18814" target="_blank">http://catfan.me/_/p18814</a> 喵, 俺只是简单转了下格式.<br />
把下面的内容放到 ~/.config/fcitx/data/QuickPhrase.mb 就可以了(没这个文件/目录就建一下)</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">aowu ┗&lt;(=｀O′=)&gt;┛ 
mobai ｍ&lt;(＿　＿)&gt;ｍ 
baobao &lt;(=′▽')爻 (`▽｀=)&gt; 
baobao &lt;(=*′д｀)爻(′д｀*=)&gt; 
qiangbi ▄︻┻┳═一…… ☆&lt;(=￣□￣=!)&gt; 
baoxiao o&lt;(*≧▽≦)&gt;ツ 
sheji &lt;(!=￣□￣)ｏ―∈‥oo━━━━━━━☆ 
e &lt;(ˉ▽ˉ；=)&gt; 
kunao o&lt;&lt;(≧口≦)&gt;&gt;o 
nanshou o&lt;(=′益`=)&gt;o 
bingo &lt;(=o゜▽゜)o☆[BINGO!] 
bishi &lt;(=￢_￢=)&gt; 
biti &lt;(=￣ ‘i ￣=)&gt; 
biti &lt;(=￣ii￣=)&gt;&lt;(=￣＂￣=)&gt; 
feipang &lt;(=￣)ε(￣=)&gt; 
budong &lt;(=＠_＠;=)?&gt; 
buguanwoshi ㄟ&lt;(=▔.▔=)&gt;ㄏ 
qie (￣_,￣ =)&gt; 
buyao °.°·(((p&lt;(≧□≦)&gt;;q)))·°.°。 
yaotou &lt;(=￣ε￣ = ￣3￣=)&gt; 
caishen &lt;(=o′┏▽┓｀o=)&gt; 
canle &lt;(=X﹏X=)&gt; 
chayanlei &lt;(ノへ￣、=)&gt; 
ceng &lt;(≧︶)￣▽￣=)&gt;ゞ 
xiao &lt;(≧▽≦)&gt; 
chiyao &lt;(。=&gt;︿&lt;)_θ 吃药 
chong ε=ε=~\&lt;(= ￣皿￣)/~ 
zixin ヾ(′▽｀=)&gt;ゝ 
molei &lt;(=ノへ￣ =)&gt; 
chouyan &lt;(=￣c￣)y▂ξ。。。 抽烟 
fanqiang ε=ε┣G┻F┳ε=ヽ&lt;(=￣▽￣)ノ┻W┫ 
chuonian &lt;(=～￣▽￣)→)￣▽￣=)&gt;o 
chuo →)╥﹏╥=)&gt; 
mofa &lt;( =￣▽￣)o ─═≡※:☆▆▅▄▃▂＿ 
o &lt;(=°ο°=)&gt; 
koushui &lt;(=￣﹃￣=)&gt; 
danding &lt;(=￣.￣=)&gt; 
hengheng &lt;(=ˉ^ˉ=)&gt; 
pia Pia!&lt;(=ｏ ‵-′)ノ☆ 
deyi ～(￣▽￣～=)&gt;&lt;(=～￣▽￣)～ 
deyi &lt;(=￣ˇ￣)/ 
gongji &lt;(= ￣O￣=)ノノ……∞∞OOO))) 
diantou &lt;(=￣ー￣&lt;(＿＿&lt;(=￣ー￣&lt;(＿＿ 
diedao &lt;(o＿＿)o彡☆ 
chandou o&lt;(=⊙﹏⊙=)&gt;︴o 
duibuqi &lt;(＿　＿)&gt; 
fangyu ||┣(—_＼=)&gt; 
duzui o(￣ε￣=)&gt; 
duzui &lt;(=○｀3′○) 
dai &lt;(=⊙_⊙=)&gt; 
mianbi &lt;(=￣_￣)σ…&lt;( ＿ ＿)ノ｜ 
fanzhuo &lt;(=╯′皿｀)╯ ┫:·'∵:.┻┻:·'.:┣∵·:. ┳┳☆ 
fanzhuo ┻━┻︵╰&lt;(=‵Д′=)&gt;╯︵┻━┻ 
fanzhuo &lt;(=╯‵Д′)╯&quot;&quot;┻━┻☆))&gt;○&lt;) 
fanzhuo &lt;(=┘￣Д￣)┘╧═╧ 
fei ︿&lt;(=￣︶￣=)&gt;︿ 
feiwen &lt;(=￣3￣)╭❤ 
fengmofa &lt;(=／-_-)／ξ ξ ξ ξ ξ ξ (+_+ ／)&gt;／ 
fengmofa ε～(～(～(卍)＼(￣▽￣＼)&gt; 
yingfenshen ((&lt;(≧&lt;(≧▽&lt;(≧▽≦&lt;(≧▽≦)&gt;≧▽≦)&gt;▽≦)&gt;≦)&gt;)) 
ganbei &lt;(=￣▽￣=)&gt;～■☆□～&lt;(=￣▽￣=)&gt; 
ganbei []~&lt;(=￣▽￣~=)&gt; 
tantian &lt;(=*`▽')u┳━┳ｄ('▽`*=)&gt; 
shita &lt;(=σ'ω')σ 
shita &lt;(=σ′д｀)σ 
guaibaobao o&lt;(=*^＠^*=)&gt;o 
gui ┏┛墓┗┓…(=&lt;(=&lt;(=m -__-)m 
tushetou &lt;(=￣┰￣=)&gt; 
gunlaigunqu 滚来滚去。。&lt;(=～o￣▽￣=)～o 。。滚来滚去。。o～(=＿△＿o～=)&gt; 
hehe &lt;(=￣▽￣&quot;=)&gt; 
haozhuyi &lt;(=o゜▽゜)o☆ 
miaowu &lt;(=′⌒`=)&gt; 
heng o(=￣ヘ￣o＃)&gt; 
shuangjiegun ┗&lt;(=｀o′=)&gt;┓哼 ┏&lt;(=｀○′=)&gt;┛哼┏&lt;(=｀o′=)&gt;┓哈┗&lt;(=｀O′=)&gt;┛兮！！ 
daxiao &lt;(=＾皿＾=)っ 
yo &lt;(= ￣y▽￣)╭ 
shuijao &lt;(O_　_)0。゜zｚＺ 
huhuan &lt;(=/￣o￣=)/ 
fei ～o=(`▽｀o=)&gt;~=3=3=3 
huojiantong [火箭筒，发射！]&lt;(=#￣皿￣)=Σ 口＞=Σ口＞=Σ口＞ 
hetiquan &lt;(=o￣3')==@))゜ロ゜((@==(′ε′ o=)&gt; 
jiao &lt;(=￣～￣=)&gt; 
jiayou &lt;(= o^_^)o~|| 加油 ||~o(^_^o =)&gt; 
jing Σ&lt;(=っ°Д °)っ 
jing Σ&lt;(= ° △ °|||)&gt;︴ 
qiliang &lt;(=-'`-=)&gt; 
jizhang &lt;(=┘￣︶￣)┘└(￣︶￣└=)&gt; 
jizhang &lt;(=〃￣︶￣)人(￣︶￣〃=)&gt; 
jushou o(*^▽^*)┛ 
chifan [吃饭鸟]……(((((ヾ&lt;(　=o·ェ·)=o　┏━┓ 
kalaok [卡拉OK] ...φ(￣0￣*=)&gt;啦啦啦_φ&lt;(=*￣0￣)′ 
o &lt;(=＠＾０＾) 
bishi 凸(゜皿゜=メ)&gt; 
koushui ˋ&lt;(=° ▽、°=)&gt; 
miaowu &lt;(=＞﹏＜=)&gt; 
miaowu &lt;( &gt;﹏&lt;。=)&gt; 
rouyanjing &lt;(=o-ωｑ=)&gt; 
lei &lt;(=┳＿┳=)&gt; 
shangxin &lt;(=;′⌒`) 
lengxiao &lt;(=￣ー￣) 
yanmian &lt;(=*/ω＼*=)&gt; 
liedui &lt;(=￣^￣&lt;(=￣^￣&lt;(=￣^￣=)&gt; 
xixi &lt;(=￣ˇ￣=)&gt; 
xiaomao &lt;(=·ェ·=)&gt; 
zhumao o&lt;(=°ω°=)&gt;0 
fuqiang &lt;(=￣_￣)σ…&lt;( ＿ ＿)ノ｜ 
jing Σ&lt;(=￣д￣=!)&gt; 
haoa ヾ(^▽^*=)&gt; 
nie &lt;(=‵□′)&gt;───Ｃε=┬﹏┬)&gt; 
yaoyaqiechi &lt;(=o#゜ 曲゜)o 
fennu MIN■■■■■□□MAX&lt;(=╯‵皿′)╯︵┻━┻︵┻━┻︵┻━┻ 
nu ε=怒ε=怒ε=怒ε=怒ε=&lt;(=o｀ω′)/ 
o &lt;(='_'=)?&gt; 
qie &lt;( ˉ▽￣～)&gt; 切~~ 
qingqing &lt;(=^_^*(^=)&gt;☆ 
zuoyoukaigong &lt;(Д゜(○=&lt;(=゜ 皿゜=)&gt;=○)゜Д゜)&gt; 
zou &lt;(╬￣皿￣)=○＃)３￣)&gt; 
ren o(-&quot;-=)&gt; 
jingya Σ(゜д゜=!)&gt; 
cang |&lt;(=·_·=)&gt; |·_·=)&gt; |_·=)&gt; |·=)&gt; |&gt; 
kunao &lt;(=－︿－=)&gt; 
pao ε=ε=ε=┏&lt;(=゜ロ゜)┛ 
leiben (PД`q。=)&gt;·。'゜ 
a Σ&lt;(=⊙▽⊙)&quot; 
sahua *★,°*:.☆\&lt;(=￣▽￣=)&gt;/$:*.°★* 。 
duo |∥|∥|_·=)&gt; 
weixiao &lt;(=⌒_⌒=)&gt; 
ding &lt;(=﹁&quot;﹁=)&gt; 
leimu &lt;(=╥﹏╥=)&gt; 
y &lt;(=～￣▽￣)～ 
heng o(￣ヘ￣o=)&gt; 
o &lt;(=⊙o⊙=)&gt; 
miaowu &lt;(=ㄒ﹏ㄒ=)&gt; 
cai &lt;(=￣︿￣)︵θ︵θ︵θ︵θ︵☆(＞口＜=)&gt; 
shuangshouxianzhuo ┴──┴╰&lt;(=￣Д￣=)&gt;╯┴──┴ 
xianzhuo &lt;(=┘￣Д￣)┘╧═╧ 
emo &lt;(= ‵▽′)ψ 
xiela 谢啦!!☆⌒&lt;(=*＾-＾)v 
xinshenbuning &lt;(゜゜ )&gt;心(。。)&gt;神&lt;(゜゜ )&gt;不(。。)&gt;宁&quot;... 
haixiu o&lt;(=////▽////=)&gt;o 
y &lt;(=^_^)y 
chengyanjing &lt;(=-@y@) 
kanbujian &lt;(=/0＼=)&gt; 
yinshen &lt;(=￣□￣)&lt;(=￣□:;.…::;.:.:::;..::;.:... 
hao &lt;(=o゜▽゜)o☆ 
xuanyun &lt;(=◎ロ◎=)&gt; 
shoushang &lt;(=X﹏X=)&gt; 
zhadan &lt;(=╯‵□′)╯炸弹！···*～● 
zhenzuo &lt;(=o_ _)o→&lt;(=o―_―)o→&lt;(=９￣ー￣)９[振作!] 
zhi &lt;(=﹁&quot;﹁=)σ 
yangtou &lt;(=￣﹌￣=)&gt; 
kaixing &lt;(=ｏ^_^)o 
xiaose &lt;(=-&quot;-=)&gt; 
buyao &gt;ω&lt;=)&gt;o&quot; 
tianxuandizhuan ヾ&lt;(　 　)ノ゛天ヾ&lt;(=°д)ノ゛旋ヾ&lt;(=°д°)ノ゛地ヾ(д°=)&gt;ノ゛转ヾ&lt;( 　　)ノ゛ 
shuijiao ZZzz…&lt;(。=-ω-)..ooO((【·:*:~ 夢~:*:·】)) 
tiqiu &lt;(=· ·)L☆ ．．．..○ 冂 
bushi &lt;(=⊙~⊙) 
dahaqian [打呵欠]&lt;( _ _ )&gt;&lt;(=- . -=)&gt;&lt;(=~ O ~=)&gt;……&lt;(=- . -=)&gt; 
leiliumanmian &lt;(o ;′Д`)ノ 
wudi ↑↑↓↓←→←→ＢＡ…┗&lt;(=-o-)┛无敌！ 
nianligongji &lt;(=-人-)···－～＝～≡～≡ (&lt;(=+o+=)&gt;)) 
naofang ||Φ|&lt;|(|T|Д|T|)|&gt;|Φ|| 
ho &lt;(= `０‘)ノ 
juezui &lt;(=￣︿￣=)&gt; 
jiayou &lt;(=９￣＾￣)９ 
nianzhou (((　&lt;(=-h-=)&gt;　 ))) 
jitijushou &lt;(=·＿·)ノ＿·)ノ＿·)ノ＿·)ノ＿·)ノ 
shenshou &lt;(=*^-^)ρ 
dui &lt;(=￣ー￣)人(^▽^=)&gt; 
kaixing σ(=⌒ー⌒=)&gt; 
zhe σ(-_-メ=)&gt; 
ha &lt;(=╯▽╰=)&gt; 
wunai ╮&lt;(=╯-╰=)&gt;╭ 
cao 凸(艹皿艹=)&gt; 
pangurban &lt;(=⊙⊗⊙=)&gt; 
bizui &lt;(=⊙x⊙=)&gt; 
xiami (°ー°〃=)&gt; 
fen ヾ&lt;(≧奋≦)&gt;〃 
dese &lt;(= *︾▽︾) 
changge ♪q(^_^q=)&gt;&lt;(=p^-^)p♪q(^-^q=)&gt;&lt;(=p^_^)p♪ 
bianta &lt;(=￣ε(￣＃)☆╰╮o(=￣皿￣///)&gt; 
kun &lt;(=﹌○﹌=)&gt; 
qian &lt;(=￥▽￥=)&gt; 
leihua &lt;(%&gt;_&lt;%)&gt; 
qingzu *:.☆\&lt;(=￣▽￣=)&gt;//$:*.°★*~ 
yo &lt;(づ￣　³￣)&gt;づ 
shaxiao &lt;(=￣▽￣=)&gt; 
haixiu &lt;(＃￣▽￣＃)&gt; 
guobao &lt;(=▼-▼=)&gt;☭[国宝] 
heixian &lt;(=￣_￣|||)&gt; 
xiezi &lt;(=＃_＃)ψ 
xihuan &lt;(=❤w❤=)&gt; 
jiong o&lt;(=╯□╰=)&gt;o 
haixiu &lt;(▰▰￣▽￣▰▰)&gt; 
xiongmaoyan &lt;(=⓿_⓿=)&gt; 
nanshou &lt;(=∥ರ﹏ರ)σ 
deyi &lt;(▰˘◡˘▰)&gt; 
kanbujian &lt;(=೧ᆸ೧=)&gt; 
ha ๐&lt;(=๏ᆷ๏=)&gt;๐ 
buyao &lt;(=/๑ᆷ๑\) 
ha &lt;(=OᆸO=)&gt;</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.felixc.at/2012/05/kitty-for-fcitx-quickphrase/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>在 Xfce4 里一键切换 Composite 开关</title>
		<link>http://blog.felixc.at/2012/05/one-key-toggle-composite-in-xfce4/</link>
		<comments>http://blog.felixc.at/2012/05/one-key-toggle-composite-in-xfce4/#comments</comments>
		<pubDate>Sun, 13 May 2012 08:36:13 +0000</pubDate>
		<dc:creator>Felix Yan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Xfce]]></category>

		<guid isPermaLink="false">http://blog.felixc.at/?p=1110</guid>
		<description><![CDATA[常用 KDE4 的用户可能很熟悉 KDE 的 Alt-Shift-F12 切换 Composite 状态, 下面咱让 Xfce4 拥有相同的效果: xfconf-query -c xfwm4 -p /general/use_compositing -T 在 Xfce4 的快捷键设置里, 定义一个快捷键(我选的是Ctrl-Alt-Backspace, 不知为何 Alt-Shift-F12 无法选用), 绑定上面的命令, 就可以了]]></description>
			<content:encoded><![CDATA[<p>常用 KDE4 的用户可能很熟悉 KDE 的 Alt-Shift-F12 切换 Composite 状态, 下面咱让 Xfce4 拥有相同的效果:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">xfconf-query <span style="color: #660033;">-c</span> xfwm4 <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>general<span style="color: #000000; font-weight: bold;">/</span>use_compositing <span style="color: #660033;">-T</span></pre></div></div>

<p>在 Xfce4 的快捷键设置里, 定义一个快捷键(我选的是Ctrl-Alt-Backspace, 不知为何 Alt-Shift-F12 无法选用), 绑定上面的命令, 就可以了 <img src='http://blog.felixc.at/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felixc.at/2012/05/one-key-toggle-composite-in-xfce4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google TalkPlugin (包括 Hangout) 不能正常使用与 iptables NAT</title>
		<link>http://blog.felixc.at/2012/05/google-talkplugin-hangout-conflict-with-iptables-nat/</link>
		<comments>http://blog.felixc.at/2012/05/google-talkplugin-hangout-conflict-with-iptables-nat/#comments</comments>
		<pubDate>Fri, 04 May 2012 04:28:32 +0000</pubDate>
		<dc:creator>Felix Yan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[NAT]]></category>

		<guid isPermaLink="false">http://blog.felixc.at/?p=1105</guid>
		<description><![CDATA[嗯, 准确的说, 如果 iptables -t nat 吃掉了 lo 的包 (MASQUERADE 之类的), Google TalkPlugin 就会傲娇掉, 具体表现为无论刷新重装多少次, 都提示没有连接, 网上介绍的各种方法都无效. [006:450] Started GoogleTalkPlugin, path=/opt/google/talkplugin/GoogleTalkPlugin [006:450] Waiting for GoogleTalkPlugin to start... [007:451] Read port file, port=52545 [007:453] Initiated connection to GoogleTalkPlugin [007:551] Socket connection established [007:551] ScheduleOnlineCheck: Online check in 5000ms [007:552] Warning(clientchannel.cc:669): Connection lost while waiting for authorization [...]]]></description>
			<content:encoded><![CDATA[<p>嗯, 准确的说, 如果 iptables -t nat 吃掉了 lo 的包 (MASQUERADE 之类的), Google TalkPlugin 就会傲娇掉, 具体表现为无论刷新重装多少次, 都提示没有连接, 网上介绍的各种方法都无效.</p>

<div class="wp_syntax"><div class="code"><pre class="txt" style="font-family:monospace;">[006:450] Started GoogleTalkPlugin, path=/opt/google/talkplugin/GoogleTalkPlugin 
[006:450] Waiting for GoogleTalkPlugin to start... 
[007:451] Read port file, port=52545 
[007:453] Initiated connection to GoogleTalkPlugin 
[007:551] Socket connection established 
[007:551] ScheduleOnlineCheck: Online check in 5000ms 
[007:552] Warning(clientchannel.cc:669): Connection lost while waiting for authorization reason=0 
[012:567] HandleOnlineCheck: Starting check 
[012:567] Warning(clientchannel.cc:778): Not connected; restart already tried, giving up</pre></div></div>

<p>简单举例, 引起问题的会吃掉 lo 的包的规则如:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #660033;">-A</span> POSTROUTING <span style="color: #660033;">-j</span> MASQUERADE</pre></div></div>

<p>如果想尽量保持原语句正常功能, 而仅仅排除掉 lo 的包, 可以用:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #660033;">-A</span> POSTROUTING <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-o</span> lo <span style="color: #660033;">-j</span> MASQUERADE</pre></div></div>

<p><del datetime="2012-05-13T10:35:04+00:00">-A POSTROUTING -o &#8216;!lo&#8217; -j MASQUERADE<br />
注意: 网上各种教程都玩坏了, ! 和 lo 之间不能有空格, 且用单引号以防止被转义.</del><br />
更新: &#8216;!lo&#8217; 也是错的!!!</p>
<p>当然如果能指定 -o eth0 什么更准确的当然最好啦 <img src='http://blog.felixc.at/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felixc.at/2012/05/google-talkplugin-hangout-conflict-with-iptables-nat/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>最新 nvidia 295.20 驱动造成 gnome-shell 搜索时崩溃的临时解决方案</title>
		<link>http://blog.felixc.at/2012/02/latest-nvidia-295-20-crashes-gnome-shell-on-search-temp-solution/</link>
		<comments>http://blog.felixc.at/2012/02/latest-nvidia-295-20-crashes-gnome-shell-on-search-temp-solution/#comments</comments>
		<pubDate>Sun, 26 Feb 2012 07:34:13 +0000</pubDate>
		<dc:creator>Felix Yan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nvidia]]></category>

		<guid isPermaLink="false">http://blog.felixc.at/?p=1098</guid>
		<description><![CDATA[最近的 nvidia 295.20 驱动会造成 gnome-shell 搜索时崩溃, 查看自己的log有类似如下输出者即为此 bug 所致: /var/log$ sudo grep gnome messages.log &#124; grep nvidia Feb 15 14:16:16 archdesktop kernel: &#91;10841.584296&#93; gnome-shell&#91;9257&#93;: segfault at c ip b5433ea3 sp ab7f3c8c error 6 in libnvidia-tls.so.295.20&#91;b5433000+3000&#93; 下面翻译来自 Arch 官方论坛的一些临时解决方案(任选): 清除GLCache的旧缓存文件: rm -rf ~/.nv/GLCache 不过肯定过些时会重现这个问题 清空最近打开文件记录: echo &#34;&#34; &#62; ~/.local/share/recently-used.xbel sudo chattr +i ~/.local/share/recently-used.xbel 第二句会让文件处于&#8221;只读&#8221;状态, 使问题不再重现. 降级 [...]]]></description>
			<content:encoded><![CDATA[<p>最近的 nvidia 295.20 驱动会造成 gnome-shell 搜索时崩溃, 查看自己的log有类似如下输出者即为此 bug 所致:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> gnome messages.log <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> nvidia
Feb <span style="color: #000000;">15</span> <span style="color: #000000;">14</span>:<span style="color: #000000;">16</span>:<span style="color: #000000;">16</span> archdesktop kernel: <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">10841.584296</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> gnome-shell<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">9257</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>: segfault at c ip b5433ea3 sp ab7f3c8c error <span style="color: #000000;">6</span> <span style="color: #000000; font-weight: bold;">in</span> libnvidia-tls.so.295.20<span style="color: #7a0874; font-weight: bold;">&#91;</span>b5433000+<span style="color: #000000;">3000</span><span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></div></div>

<p>下面翻译来自 Arch 官方论坛的一些临时解决方案(任选):</p>
<ol>
<li>清除GLCache的旧缓存文件:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> ~<span style="color: #000000; font-weight: bold;">/</span>.nv<span style="color: #000000; font-weight: bold;">/</span>GLCache</pre></div></div>

<p>不过肯定过些时会重现这个问题</li>
<li>清空最近打开文件记录:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span> ~<span style="color: #000000; font-weight: bold;">/</span>.local<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>recently-used.xbel
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chattr</span> +i ~<span style="color: #000000; font-weight: bold;">/</span>.local<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>recently-used.xbel</pre></div></div>

<p>第二句会让文件处于&#8221;只读&#8221;状态, 使问题不再重现.</li>
<li>降级 nvidia 驱动到 290.10 或更早的版本</li>
</ol>
<p>参考资料: <a href="https://bbs.archlinux.org/viewtopic.php?id=135826">https://bbs.archlinux.org/viewtopic.php?id=135826</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felixc.at/2012/02/latest-nvidia-295-20-crashes-gnome-shell-on-search-temp-solution/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>在地址栏输入一个字母后的网址</title>
		<link>http://blog.felixc.at/2011/10/these-websites-best-describe-me/</link>
		<comments>http://blog.felixc.at/2011/10/these-websites-best-describe-me/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 14:02:16 +0000</pubDate>
		<dc:creator>Felix Yan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.felixc.at/?p=1088</guid>
		<description><![CDATA[在好友的日志里看到了一份他的网址列表, 随手整理了一下自己的 &#8220;These websites best describe me.&#8221; a is for aur.archlinux.org //好地方不解释&#8230; b is for bilibili.tv //这个..必须的..看糟糕物的地方 c is for chdbits.org //下电影的地方&#8230; d is for dns.he.net //我主要的DNS托管地 e is for ebay.com //好吧, 其实上的挺少的, 不过其他e开头的网址开的更少吧&#8230; f is for felixcat.net //这个必须的= =虽然域名改了一段时间了, 但是访问次数还是没有老域名多&#8230; g is for g.camoe.org //&#8230;下糟糕东西的地方 h is for hub.hust.edu.cn //..查分选课的地方 i is for iptorrents.com [...]]]></description>
			<content:encoded><![CDATA[<p>在<a href="http://aifreedom.com/mylife/175">好友的日志</a>里看到了一份他的网址列表, 随手整理了一下自己的 &#8220;These websites best describe me.&#8221;</p>
<p>a is for <span style="color: #0000ff;">aur.archlinux.org</span> //好地方不解释&#8230;<br />
b is for <span style="color: #0000ff;">bilibili.tv</span> //这个..必须的..看糟糕物的地方<br />
c is for <span style="color: #0000ff;">chdbits.org</span> //下电影的地方&#8230;<br />
d is for <span style="color: #0000ff;">dns.he.net</span> //我主要的DNS托管地<br />
e is for <span style="color: #000000;">ebay.com</span> //好吧, 其实上的挺少的, 不过其他e开头的网址开的更少吧&#8230;<br />
f is for <span style="color: #0000ff;">felixcat.net</span> //这个必须的= =虽然域名改了一段时间了, 但是访问次数还是没有老域名多&#8230;<br />
g is for <span style="color: #0000ff;">g.camoe.org</span> //&#8230;下糟糕东西的地方<br />
h is for <span style="color: #000000;">hub.hust.edu.cn</span> //..查分选课的地方<br />
i is for <span style="color: #0000ff;">iptorrents.com</span> //也是下电影的地方&#8230;<br />
j is for<span style="color: #0000ff;"> jpopsuki.eu</span> //下糟糕原声的地方&#8230;<br />
k is for <span style="color: #000000;">kmgtp.org</span> //HUDBT,不过现在去的非常少了<br />
l is for <span style="color: #0000ff;">lowendbox.com</span> //找便宜测试VPS的地方&#8230;<br />
m is for <span style="color: #0000ff;">minecraftwiki.net</span> //这个..嗯..大家懂的&#8230;<br />
n is for <span style="color: #0000ff;">nicovideo.jp</span> //看糟糕物的地方&#8230;<br />
o is for <span style="color: #0000ff;">open.weibo.com</span> //查新浪微博API的地方 = =&#8230;(这个悲剧<br />
p is for <span style="color: #0000ff;">pastebin.com</span> //好吧..经常贴东西&#8230;<br />
q is for <span style="color: #000000;">quickweb.co.nz</span> //其实没上过几次&#8230;<br />
r is for <span style="color: #0000ff;">report.hust.edu.cn</span> //..每次网挂了都上去看看什么情况<br />
s is for <span style="color: #0000ff;">stackoverflow.com</span> //这个必须的~<br />
t is for <span style="color: #0000ff;">taobao.com</span> //这个必须是淘宝了&#8230;<br />
u is for <span style="color: #0000ff;">u2.dmhy.org</span> //又是下糟糕物的地方&#8230;&#8230;!<br />
v is for <span style="color: #0000ff;">vtk.org</span> //好久没折腾的东西&#8230;<br />
w is for <span style="color: #0000ff;">webhostingtalk.com</span> //也是一个找廉价测试主机的地方<br />
x is for <span style="color: #0000ff;">xda-developers.com</span> //折腾android的地方&#8230;<br />
y is for <span style="color: #0000ff;">youtube.com</span> //这个也必须的了&#8230;<br />
z is for <span style="color: #0000ff;">zeromq.org</span> //也是好东西 嗯</p>
<p>于是&#8230;有近一半都是糟糕物&#8230;果然我坏掉了!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felixc.at/2011/10/these-websites-best-describe-me/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>解决SSH远程登录后屏幕尺寸不对的问题</title>
		<link>http://blog.felixc.at/2011/08/fix-ssh-remote-screen-auto-resize/</link>
		<comments>http://blog.felixc.at/2011/08/fix-ssh-remote-screen-auto-resize/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 19:26:21 +0000</pubDate>
		<dc:creator>Felix Yan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://blog.felixc.at/?p=1059</guid>
		<description><![CDATA[首先解释下标题: 其实我想表达的是: 解决SSH远程登录后本地终端窗口大小改变远程屏幕尺寸没有随之改变导致显示混乱的问题, 但是太长了, 嗯. 我的一部分Linux VPS存在这个问题, 而另一部分是正常的; 一个由镜像默认安装的Ubuntu 10.04 Server一定存在这个问题. 具体解决方法其实很简单, 只是因为搜索的时候有点小纠结, 所以当做译文吧: 编辑 /etc/screenrc 找到 termcapinfo xterm 'is=...' 注: &#8230;表示还有很多长得像乱码的字符, 反正前面部分能对上就行 修改为: termcapinfo xterm* 'is=...' 也就是说, 只添加那个*(星号). 之后重新连接/重新打开screen即可. 之前因为连上ssh并没有启动screen, 而是直接打开mtr, rtorrent 之类的程序, 也存在此问题, 所以没有怀疑到screenrc头上去 = =&#124;&#124;&#124;&#124; 参考资料: http://lists.gnu.org/archive/html/screen-users/2010-12/msg00027.html]]></description>
			<content:encoded><![CDATA[<p>首先解释下标题: 其实我想表达的是: <font color=blue>解决SSH远程登录后本地终端窗口大小改变远程屏幕尺寸没有随之改变导致显示混乱的问题</font>, 但是太长了, 嗯.<br />
我的一部分Linux VPS存在这个问题, 而另一部分是正常的; 一个由镜像默认安装的Ubuntu 10.04 Server一定存在这个问题.</p>
<p>具体解决方法其实很简单, 只是因为搜索的时候有点小纠结, 所以当做译文吧:<br />
编辑 /etc/screenrc<br />
找到</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">termcapinfo xterm 'is=...'</pre></div></div>

<p>注: &#8230;表示还有很多长得像乱码的字符, 反正前面部分能对上就行<br />
修改为:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">termcapinfo xterm* 'is=...'</pre></div></div>

<p>也就是说, 只添加那个<font color=red>*</font>(星号).<br />
之后重新连接/重新打开screen即可.</p>
<p>之前因为连上ssh并没有启动screen, 而是直接打开mtr, rtorrent 之类的程序, 也存在此问题, 所以没有怀疑到screenrc头上去 = =||||</p>
<p>参考资料:<br />
<a href="http://lists.gnu.org/archive/html/screen-users/2010-12/msg00027.html">http://lists.gnu.org/archive/html/screen-users/2010-12/msg00027.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felixc.at/2011/08/fix-ssh-remote-screen-auto-resize/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>让libTorrent优先选择教育网IPv6地址</title>
		<link>http://blog.felixc.at/2011/08/libtorrent-choose-cernet-ipv6-address-first/</link>
		<comments>http://blog.felixc.at/2011/08/libtorrent-choose-cernet-ipv6-address-first/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 16:44:43 +0000</pubDate>
		<dc:creator>Felix Yan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[libtorrent]]></category>
		<category><![CDATA[rtorrent]]></category>

		<guid isPermaLink="false">http://blog.felixc.at/?p=1053</guid>
		<description><![CDATA[猫在教育网机子上挂PT, 但是机子同时是内网的IPv6网关(HE的/64), 结果rtorrent每次返回给tracker的&#038;ipv6=后面总是我在HE的2001:470:xx:xx::1, 和教育网PT上其他用户之间连接效果差爆了. 在折腾了几种workaround无效后, 最后不得不改libtorrent的代码了! 由于ipv6部分本身就是由一个patch加上去的, 我只需要对这个patch再patch一次即可: 安装过程就不再赘述了, 满网上都是的&#8230; --- A/libtorrent-0.12.6-ipv6-07.patch 2011-08-19 00:02:03.603735921 +0800 +++ B/libtorrent-0.12.6-ipv6-07.patch 2011-08-19 00:36:14.824983083 +0800 @@ -417,7 +417,7 @@ diff -Nur libtorrent-0.12.6.orig/src/net/local_addr.cc libtorrent-0.12.6/src/net/local_addr.cc --- libtorrent-0.12.6.orig/src/net/local_addr.cc 1970-01-01 01:00:00.000000000 +0100 +++ libtorrent-0.12.6/src/net/local_addr.cc 2010-07-23 14:44:51.000000000 +0200 -@@ -0,0 +1,336 @@ +@@ -0,0 +1,340 @@ +// libTorrent - BitTorrent library +// Copyright &#40;C&#41; 2005-2007, [...]]]></description>
			<content:encoded><![CDATA[<p>猫在教育网机子上挂PT, 但是机子同时是内网的IPv6网关(HE的/64), 结果rtorrent每次返回给tracker的&#038;ipv6=后面总是我在HE的2001:470:xx:xx::1, 和教育网PT上其他用户之间连接效果差爆了.</p>
<p>在折腾了几种workaround无效后, 最后不得不改libtorrent的代码了! 由于ipv6部分本身就是由一个patch加上去的, 我只需要对这个patch再patch一次即可:<br />
安装过程就不再赘述了, 满网上都是的&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="diff" style="font-family:monospace;"><span style="color: #888822;">--- A/libtorrent-0.12.6-ipv6-07.patch	2011-08-19 00:02:03.603735921 +0800</span>
<span style="color: #888822;">+++ B/libtorrent-0.12.6-ipv6-07.patch	2011-08-19 00:36:14.824983083 +0800</span>
<span style="color: #440088;">@@ -417,7 +417,7 @@</span>
 diff -Nur libtorrent-0.12.6.orig/src/net/local_addr.cc libtorrent-0.12.6/src/net/local_addr.cc
 --- libtorrent-0.12.6.orig/src/net/local_addr.cc	<span style="">1970</span>-01-01 01:00:<span style="">00.000000000</span> +0100
 +++ libtorrent-0.12.6/src/net/local_addr.cc	<span style="">2010</span>-07-<span style="">23</span> <span style="">14</span>:<span style="">44</span>:<span style="">51.000000000</span> +0200
<span style="color: #991111;">-@@ -0,0 +1,336 @@</span>
<span style="color: #00b000;">+@@ -0,0 +1,340 @@</span>
 +// libTorrent - BitTorrent library
 +// Copyright <span style="">&#40;</span>C<span style="">&#41;</span> <span style="">2005</span>-<span style="">2007</span>, Jari Sundell
 +//
<span style="color: #440088;">@@ -502,29 +502,33 @@</span>
 +#ifdef RAK_USE_INET6
 +// IPv6 priority, from highest to lowest:
 +//
<span style="color: #991111;">-+//  1. Global address <span style="">&#40;</span>2000::/16 not in 6to4 or Teredo<span style="">&#41;</span></span>
<span style="color: #991111;">-+//  2. 6to4 <span style="">&#40;</span>2002::/16<span style="">&#41;</span></span>
<span style="color: #991111;">-+//  3. Teredo <span style="">&#40;</span>2001::/32<span style="">&#41;</span></span>
<span style="color: #991111;">-+//  4. Empty/INADDR_ANY <span style="">&#40;</span>::<span style="">&#41;</span></span>
<span style="color: #991111;">-+//  5. Everything else <span style="">&#40;</span>link-local, ULA, etc.<span style="">&#41;</span></span>
<span style="color: #00b000;">++//  1. cernet &amp; cernet2 address <span style="">&#40;</span>2001:250::/32 and 2001:da8::/32<span style="">&#41;</span></span>
<span style="color: #00b000;">++//  2. Other global address <span style="">&#40;</span>2000::/16 not in 6to4 or Teredo<span style="">&#41;</span></span>
<span style="color: #00b000;">++//  3. 6to4 <span style="">&#40;</span>2002::/16<span style="">&#41;</span></span>
<span style="color: #00b000;">++//  4. Teredo <span style="">&#40;</span>2001::/32<span style="">&#41;</span></span>
<span style="color: #00b000;">++//  5. Empty/INADDR_ANY <span style="">&#40;</span>::<span style="">&#41;</span></span>
<span style="color: #00b000;">++//  6. Everything else <span style="">&#40;</span>link-local, ULA, etc.<span style="">&#41;</span></span>
 +int get_priority_ipv6<span style="">&#40;</span>const in6_addr&amp; addr<span style="">&#41;</span> <span style="">&#123;</span>
 +  const uint32_t *addr32 = reinterpret_cast&lt;const uint32_t *&gt;<span style="">&#40;</span>addr.s6_addr<span style="">&#41;</span>;
 +  if <span style="">&#40;</span>addr32<span style="">&#91;</span><span style="">0</span><span style="">&#93;</span> == htonl<span style="">&#40;</span><span style="">0</span><span style="">&#41;</span> &amp;&amp;
 +      addr32<span style="">&#91;</span><span style="">1</span><span style="">&#93;</span> == htonl<span style="">&#40;</span><span style="">0</span><span style="">&#41;</span> &amp;&amp;
 +      addr32<span style="">&#91;</span><span style="">2</span><span style="">&#93;</span> == htonl<span style="">&#40;</span><span style="">0</span><span style="">&#41;</span> &amp;&amp;
 +      addr32<span style="">&#91;</span><span style="">3</span><span style="">&#93;</span> == htonl<span style="">&#40;</span><span style="">0</span><span style="">&#41;</span><span style="">&#41;</span> <span style="">&#123;</span>
<span style="color: #991111;">-+    return <span style="">4</span>;</span>
<span style="color: #00b000;">++    return <span style="">5</span>;</span>
 +  <span style="">&#125;</span>
 +  if <span style="">&#40;</span>addr32<span style="">&#91;</span><span style="">0</span><span style="">&#93;</span> == htonl<span style="">&#40;</span>0x20010000<span style="">&#41;</span><span style="">&#41;</span> <span style="">&#123;</span>
<span style="color: #991111;">-+    return <span style="">3</span>;</span>
<span style="color: #00b000;">++    return <span style="">4</span>;</span>
 +  <span style="">&#125;</span>
 +  if <span style="">&#40;</span><span style="">&#40;</span>addr32<span style="">&#91;</span><span style="">0</span><span style="">&#93;</span> &amp; htonl<span style="">&#40;</span>0xffff0000<span style="">&#41;</span><span style="">&#41;</span> == htonl<span style="">&#40;</span>0x20020000<span style="">&#41;</span><span style="">&#41;</span> <span style="">&#123;</span>
<span style="color: #991111;">-+    return <span style="">2</span>;</span>
<span style="color: #00b000;">++    return <span style="">3</span>;</span>
 +  <span style="">&#125;</span>
<span style="color: #991111;">-+  if <span style="">&#40;</span><span style="">&#40;</span>addr32<span style="">&#91;</span>0<span style="">&#93;</span> &amp; htonl<span style="">&#40;</span>0xe0000000<span style="">&#41;</span><span style="">&#41;</span> == htonl<span style="">&#40;</span>0x20000000<span style="">&#41;</span><span style="">&#41;</span> <span style="">&#123;</span></span>
<span style="color: #00b000;">++  if <span style="">&#40;</span>addr32<span style="">&#91;</span><span style="">0</span><span style="">&#93;</span> == htonl<span style="">&#40;</span>0x20010250<span style="">&#41;</span> || addr32<span style="">&#91;</span>0<span style="">&#93;</span> == htonl<span style="">&#40;</span>0x20010da8<span style="">&#41;</span><span style="">&#41;</span> <span style="">&#123;</span></span>
 +    return <span style="">1</span>;
 +  <span style="">&#125;</span>
<span style="color: #991111;">-+  return <span style="">5</span>;</span>
<span style="color: #00b000;">++  if <span style="">&#40;</span><span style="">&#40;</span>addr32<span style="">&#91;</span>0<span style="">&#93;</span> &amp; htonl<span style="">&#40;</span>0xe0000000<span style="">&#41;</span><span style="">&#41;</span> == htonl<span style="">&#40;</span>0x20000000<span style="">&#41;</span><span style="">&#41;</span> <span style="">&#123;</span></span>
<span style="color: #00b000;">++    return <span style="">2</span>;</span>
<span style="color: #00b000;">++  <span style="">&#125;</span></span>
<span style="color: #00b000;">++  return <span style="">6</span>;</span>
 +<span style="">&#125;</span>
 +#endif
 +</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.felixc.at/2011/08/libtorrent-choose-cernet-ipv6-address-first/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>给用NexusPHP的PT站写的分流/保种员自动发工资脚本</title>
		<link>http://blog.felixc.at/2011/08/auto-pay-for-nexusphp/</link>
		<comments>http://blog.felixc.at/2011/08/auto-pay-for-nexusphp/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 04:52:26 +0000</pubDate>
		<dc:creator>Felix Yan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.felixc.at/?p=1048</guid>
		<description><![CDATA[如题.使用说明: 1, 为实现统计本月流量/保种时间(NexusPHP默认的数据表没有留这些数据), 需要在users表里增加 downloaded_lastmonth, uploaded_lastmonth, seedtime_lastmonth 三个字段. 2, 需要获取分流员/保种员信息, 也需指定pipeliner/guarder字段(enum或boolean, 后者需略微改动此代码) 3, 需要python2.x环境, 以及python-MySQLDb库. 4, 需要服务器上有正常的crontab, 每月1日0点执行即可. 5, 此脚本还提供了记录上月实际上传下载(不含优惠信息), 以及下载时间的统计部分, 相应部分默认已注释掉, 可以手动替换启用. 如需显示在userdetails页面上, 只需做一个简单的减法(当前-上月). 实际上传/下载量的统计还需修改announce.php. 6, 工资(魔力/邀请)参考下面的设置修改. 本初始数据来自CMCT-PT的考核标准和奖励细则. 7, 修改数据库连接字符串的相应部分, 即可用. #!/usr/bin/env python2 &#160; import MySQLdb, math, datetime from MySQLdb.cursors import DictCursor &#160; db = MySQLdb.connect&#40;&#34;localhost&#34;, &#34;user&#34;, &#34;password&#34;, &#34;database&#34;, charset = &#34;utf8&#34;, connect_timeout = [...]]]></description>
			<content:encoded><![CDATA[<p>如题.使用说明:<br />
1, 为实现统计本月流量/保种时间(NexusPHP默认的数据表没有留这些数据), 需要在users表里增加    downloaded_lastmonth, uploaded_lastmonth, seedtime_lastmonth 三个字段.<br />
2, 需要获取分流员/保种员信息, 也需指定pipeliner/guarder字段(enum或boolean, 后者需略微改动此代码)<br />
3, 需要python2.x环境, 以及python-MySQLDb库.<br />
4, 需要服务器上有正常的crontab, 每月1日0点执行即可.<br />
5, 此脚本还提供了记录上月实际上传下载(不含优惠信息), 以及下载时间的统计部分, 相应部分默认已注释掉, 可以手动替换启用. 如需显示在userdetails页面上, 只需做一个简单的减法(当前-上月). 实际上传/下载量的统计还需修改announce.php.<br />
6, 工资(魔力/邀请)参考下面的设置修改. 本初始数据来自CMCT-PT的考核标准和奖励细则.<br />
7, 修改数据库连接字符串的相应部分, 即可用.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python2</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> MySQLdb, <span style="color: #dc143c;">math</span>, <span style="color: #dc143c;">datetime</span>
<span style="color: #ff7700;font-weight:bold;">from</span> MySQLdb.<span style="color: black;">cursors</span> <span style="color: #ff7700;font-weight:bold;">import</span> DictCursor
&nbsp;
db = MySQLdb.<span style="color: black;">connect</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;localhost&quot;</span>, <span style="color: #483d8b;">&quot;user&quot;</span>, <span style="color: #483d8b;">&quot;password&quot;</span>, <span style="color: #483d8b;">&quot;database&quot;</span>, charset = <span style="color: #483d8b;">&quot;utf8&quot;</span>, connect_timeout = <span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span>
cs = db.<span style="color: black;">cursor</span><span style="color: black;">&#40;</span>DictCursor<span style="color: black;">&#41;</span>
&nbsp;
query = <span style="color: #483d8b;">&quot;SELECT * FROM users&quot;</span>
cs.<span style="color: black;">execute</span><span style="color: black;">&#40;</span>query<span style="color: black;">&#41;</span>
alldata = cs.<span style="color: black;">fetchall</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
pays = <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: #dc143c;">user</span> <span style="color: #ff7700;font-weight:bold;">in</span> alldata:
    <span style="color: #008000;">id</span> = <span style="color: #dc143c;">user</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'id'</span><span style="color: black;">&#93;</span>
    username = <span style="color: #dc143c;">user</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'username'</span><span style="color: black;">&#93;</span>
    downloaded = <span style="color: #dc143c;">user</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;downloaded&quot;</span><span style="color: black;">&#93;</span>
    uploaded = <span style="color: #dc143c;">user</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;uploaded&quot;</span><span style="color: black;">&#93;</span>
    <span style="color: #808080; font-style: italic;">#raw_downloaded = user[&quot;raw_downloaded&quot;]</span>
    <span style="color: #808080; font-style: italic;">#raw_uploaded = user[&quot;raw_uploaded&quot;]</span>
    seedtime = <span style="color: #dc143c;">user</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;seedtime&quot;</span><span style="color: black;">&#93;</span>
    <span style="color: #808080; font-style: italic;">#leechtime = user[&quot;leechtime&quot;]</span>
&nbsp;
    downloaded_lastmonth = <span style="color: #dc143c;">user</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;downloaded_lastmonth&quot;</span><span style="color: black;">&#93;</span>
    uploaded_lastmonth = <span style="color: #dc143c;">user</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;uploaded_lastmonth&quot;</span><span style="color: black;">&#93;</span>
    <span style="color: #808080; font-style: italic;">#raw_downloaded_lastmonth = user[&quot;raw_downloaded_lastmonth&quot;]</span>
    <span style="color: #808080; font-style: italic;">#raw_uploaded_lastmonth = user[&quot;raw_uploaded_lastmonth&quot;]</span>
    seedtime_lastmonth = <span style="color: #dc143c;">user</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;seedtime_lastmonth&quot;</span><span style="color: black;">&#93;</span>
    <span style="color: #808080; font-style: italic;">#leechtime_lastmonth = user[&quot;leechtime_lastmonth&quot;]</span>
&nbsp;
    pipeliner = <span style="color: black;">&#40;</span><span style="color: #dc143c;">user</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'pipeliner'</span><span style="color: black;">&#93;</span> == <span style="color: #483d8b;">'yes'</span><span style="color: black;">&#41;</span>
    guarder = <span style="color: black;">&#40;</span><span style="color: #dc143c;">user</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'guarder'</span><span style="color: black;">&#93;</span> == <span style="color: #483d8b;">'yes'</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">if</span> pipeliner:
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> pays.<span style="color: black;">has_key</span><span style="color: black;">&#40;</span>username<span style="color: black;">&#41;</span>:
            pays<span style="color: black;">&#91;</span>username<span style="color: black;">&#93;</span> = <span style="color: black;">&#123;</span><span style="color: #483d8b;">&quot;id&quot;</span>: <span style="color: #008000;">id</span><span style="color: black;">&#125;</span>
        pays<span style="color: black;">&#91;</span>username<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;uploaded_thismonth&quot;</span><span style="color: black;">&#93;</span> = uploaded - uploaded_lastmonth
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">if</span> guarder:
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> pays.<span style="color: black;">has_key</span><span style="color: black;">&#40;</span>username<span style="color: black;">&#41;</span>:
            pays<span style="color: black;">&#91;</span>username<span style="color: black;">&#93;</span> = <span style="color: black;">&#123;</span><span style="color: #483d8b;">&quot;id&quot;</span>: <span style="color: #008000;">id</span><span style="color: black;">&#125;</span>
        pays<span style="color: black;">&#91;</span>username<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;seedtime_thismonth&quot;</span><span style="color: black;">&#93;</span> = seedtime - seedtime_lastmonth
&nbsp;
    <span style="color: #808080; font-style: italic;">#query = &quot;UPDATE users SET downloaded_lastmonth = %s, uploaded_lastmonth = %s, raw_downloaded_lastmonth = %s, raw_uploaded_lastmonth = %s, seedtime_lastmonth = %s, leechtime_lastmonth = %s WHERE id = %s&quot;</span>
    <span style="color: #808080; font-style: italic;">#cs.execute(query, (downloaded, uploaded, raw_downloaded, raw_uploaded, seedtime, leechtime, id))</span>
    query = <span style="color: #483d8b;">&quot;UPDATE users SET downloaded_lastmonth = %s, uploaded_lastmonth = %s, seedtime_lastmonth = %s, WHERE id = %s&quot;</span>
    cs.<span style="color: black;">execute</span><span style="color: black;">&#40;</span>query, <span style="color: black;">&#40;</span>downloaded, uploaded, seedtime, <span style="color: #008000;">id</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: #dc143c;">user</span> <span style="color: #ff7700;font-weight:bold;">in</span> pays.<span style="color: black;">keys</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    karma = <span style="color: #ff4500;">0</span>
    invite = <span style="color: #ff4500;">0</span>
    strprt = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> pays<span style="color: black;">&#91;</span><span style="color: #dc143c;">user</span><span style="color: black;">&#93;</span>.<span style="color: black;">has_key</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;uploaded_thismonth&quot;</span><span style="color: black;">&#41;</span>:
        warning = <span style="color: #008000;">False</span>
        data = pays<span style="color: black;">&#91;</span><span style="color: #dc143c;">user</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'uploaded_thismonth'</span><span style="color: black;">&#93;</span>
&nbsp;
        lst = <span style="color: black;">&#91;</span><span style="color: #483d8b;">'Bytes'</span>, <span style="color: #483d8b;">'KB'</span>, <span style="color: #483d8b;">'MB'</span>, <span style="color: #483d8b;">'GB'</span>, <span style="color: #483d8b;">'TB'</span>, <span style="color: #483d8b;">'PB'</span><span style="color: black;">&#93;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> data <span style="color: #66cc66;">&gt;</span> <span style="color: #ff4500;">0</span>:
            i = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">math</span>.<span style="color: black;">floor</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">math</span>.<span style="color: black;">log</span><span style="color: black;">&#40;</span>data, <span style="color: #ff4500;">1024</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
            i = <span style="color: #ff4500;">0</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> i <span style="color: #66cc66;">&gt;</span>= <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>lst<span style="color: black;">&#41;</span>:
            i = <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>lst<span style="color: black;">&#41;</span> - <span style="color: #ff4500;">1</span>
        data_formated = <span style="color: black;">&#40;</span><span style="color: #483d8b;">'%.2f'</span> + <span style="color: #483d8b;">&quot; &quot;</span> + lst<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>data / <span style="color: #dc143c;">math</span>.<span style="color: #008000;">pow</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1024</span>, i<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        strprt += <span style="color: black;">&#91;</span><span style="color: #dc143c;">user</span> + <span style="color: #483d8b;">&quot; is pipeliner, uploaded: &quot;</span> + data_formated<span style="color: black;">&#93;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">if</span> data <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">107374182400</span>: <span style="color: #808080; font-style: italic;"># 100G</span>
            warning = <span style="color: #008000;">True</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> data <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">322122547200</span>:
            karma += <span style="color: #ff4500;">1000</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> data <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">536870912000</span>:
            karma += <span style="color: #ff4500;">2000</span>
            invite += <span style="color: #ff4500;">1</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> data <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">966367641600</span>:
            karma += <span style="color: #ff4500;">4000</span>
            invite += <span style="color: #ff4500;">1</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> data <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">1610612736000</span>:
            karma += <span style="color: #ff4500;">6000</span>
            invite += <span style="color: #ff4500;">2</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> data <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">2147483648000</span>:
            karma += <span style="color: #ff4500;">8000</span>
            invite += <span style="color: #ff4500;">3</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
            karma += <span style="color: #ff4500;">10000</span>
            invite += <span style="color: #ff4500;">4</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">if</span> warning:
            <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;WARNING: Uploaded less than 100GB last month!&quot;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">if</span> pays<span style="color: black;">&#91;</span><span style="color: #dc143c;">user</span><span style="color: black;">&#93;</span>.<span style="color: black;">has_key</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;seedtime_thismonth&quot;</span><span style="color: black;">&#41;</span>:
        warning = <span style="color: #008000;">False</span>
        seconds_raw = pays<span style="color: black;">&#91;</span><span style="color: #dc143c;">user</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'seedtime_thismonth'</span><span style="color: black;">&#93;</span>
        seconds_datetime = <span style="color: #dc143c;">datetime</span>.<span style="color: black;">timedelta</span><span style="color: black;">&#40;</span>seconds=seconds_raw<span style="color: black;">&#41;</span>
        time_print = <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>seconds_datetime<span style="color: black;">&#41;</span>
        days_calc = seconds_datetime.<span style="color: black;">days</span>
&nbsp;
        strprt += <span style="color: black;">&#91;</span><span style="color: #dc143c;">user</span> + <span style="color: #483d8b;">&quot; is guarder, seed time: &quot;</span> + time_print<span style="color: black;">&#93;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">if</span> days_calc <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">100</span>:
            warning = <span style="color: #008000;">True</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> days_calc <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">300</span>:
            karma += <span style="color: #ff4500;">1000</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> days_calc <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">500</span>:
            karma += <span style="color: #ff4500;">2000</span>
            invite += <span style="color: #ff4500;">1</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> days_calc <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">900</span>:
            karma += <span style="color: #ff4500;">4000</span>
            invite += <span style="color: #ff4500;">1</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> days_calc <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">1500</span>:
            karma += <span style="color: #ff4500;">6000</span>
            invite += <span style="color: #ff4500;">2</span>
        <span style="color: #ff7700;font-weight:bold;">elif</span> days_calc <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">2000</span>:
            karma += <span style="color: #ff4500;">8000</span>
            invite += <span style="color: #ff4500;">3</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
            karma += <span style="color: #ff4500;">10000</span>
            invite += <span style="color: #ff4500;">4</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">if</span> warning:
            <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;WARNING: Seeded less than 100 days last month!&quot;</span>
&nbsp;
    strprt += <span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;Total awarded: %d Karma points and %d invite(s).&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>karma, invite<span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span>strprt<span style="color: black;">&#41;</span>
&nbsp;
    query = <span style="color: #483d8b;">&quot;INSERT INTO messages (sender, receiver, added, msg, subject, saved, location) VALUES(%s, %s, %s, %s, %s, %s, %s)&quot;</span>
    cs.<span style="color: black;">execute</span><span style="color: black;">&#40;</span>query, <span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, pays<span style="color: black;">&#91;</span><span style="color: #dc143c;">user</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'id'</span><span style="color: black;">&#93;</span>, <span style="color: #dc143c;">datetime</span>.<span style="color: #dc143c;">datetime</span>.<span style="color: black;">now</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, <span style="color: #483d8b;">&quot;Awards: &quot;</span> + <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span>strprt<span style="color: black;">&#41;</span>, <span style="color: #483d8b;">&quot;Awards&quot;</span>, <span style="color: #483d8b;">&quot;no&quot;</span>, <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
    query = <span style="color: #483d8b;">&quot;UPDATE users SET last_pm = NOW(), invites = invites + %d, seedbonus = seedbonus + %d WHERE id = &quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>invite, karma<span style="color: black;">&#41;</span>
    query += <span style="color: #483d8b;">&quot;%s&quot;</span>
    cs.<span style="color: black;">execute</span><span style="color: black;">&#40;</span>query, <span style="color: black;">&#40;</span>pays<span style="color: black;">&#91;</span><span style="color: #dc143c;">user</span><span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'id'</span><span style="color: black;">&#93;</span>, <span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">print</span>
&nbsp;
db.<span style="color: black;">commit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
cs.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.felixc.at/2011/08/auto-pay-for-nexusphp/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>让 Linux 里的 .xmind 文件能被双击打开</title>
		<link>http://blog.felixc.at/2011/08/linux-xmind-double-click-open/</link>
		<comments>http://blog.felixc.at/2011/08/linux-xmind-double-click-open/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 13:49:03 +0000</pubDate>
		<dc:creator>Felix Yan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[XMind]]></category>

		<guid isPermaLink="false">http://blog.felixc.at/?p=1039</guid>
		<description><![CDATA[这其实只是一个简单的小trick ubuntu和arch默认安装的xmind, 如果直接在WM/DE的文件管理器里双击打开, 只会打开一个新脑图, 而不会打开你指定的文件, 这个问题还是相当annoying的. 下面是解决方法: 编辑 /usr/share/applications/xmind.desktop 文件, 找到 Exec= 开头的那一行, 修改为: Exec=/usr/share/xmind/xmind-bin %f (如果安装位置不一样请自行修改, 总之一定要是这个-bin的文件, 而不能是直接xmind %f) (其实很纳闷为啥xmind的策略这么诡异- -) 之后保存退出, 然后xmind文件就能直接打开啦! 不过这样仍然有一个问题: 打开的xmind里会有两个标签页, 一个是你打开的文件, 一个仍然是个新建的脑图, 而且默认焦点在新建的脑图上, 这个还是非常不爽的&#8230;希望各路大神提供解决方法 ^_^ 参考资料: http://code.google.com/p/xmind3/issues/detail?id=200]]></description>
			<content:encoded><![CDATA[<p>这其实只是一个简单的小trick <img src='http://blog.felixc.at/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>ubuntu和arch默认安装的xmind, 如果直接在WM/DE的文件管理器里双击打开, 只会打开一个新脑图, 而不会打开你指定的文件, 这个问题还是相当annoying的. 下面是解决方法:</p>
<p>编辑 /usr/share/applications/xmind.desktop 文件,<br />
找到 Exec= 开头的那一行, 修改为:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Exec=/usr/share/xmind/xmind-bin %f</pre></div></div>

<p>(如果安装位置不一样请自行修改, 总之一定要是这个-bin的文件, 而不能是直接xmind %f)<br />
(其实很纳闷为啥xmind的策略这么诡异- -)</p>
<p>之后保存退出, 然后xmind文件就能直接打开啦!<br />
不过这样仍然有一个问题: 打开的xmind里会有两个标签页, 一个是你打开的文件, 一个仍然是个新建的脑图, 而且默认焦点在新建的脑图上, 这个还是非常不爽的&#8230;希望各路大神提供解决方法 ^_^</p>
<p>参考资料: <a href="http://code.google.com/p/xmind3/issues/detail?id=200">http://code.google.com/p/xmind3/issues/detail?id=200</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felixc.at/2011/08/linux-xmind-double-click-open/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>内网Windows XP用户使用ISATAP隧道的方法(附自动配置脚本)</title>
		<link>http://blog.felixc.at/2011/07/isatap-behind-nat-windows-xp-auto-config-python-script/</link>
		<comments>http://blog.felixc.at/2011/07/isatap-behind-nat-windows-xp-auto-config-python-script/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 17:19:31 +0000</pubDate>
		<dc:creator>Felix Yan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[isatap]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.felixc.at/?p=1032</guid>
		<description><![CDATA[声明: 本文采用方法来自 http://blog.lifetoy.org/2010/01/31/isatap-behide-nat/, 我仅仅是写了一个自动配置脚本(不包括配置路由器). 首先, 这个方法只能让内网一台机器用上ISATAP隧道(仅仅是简单的转发了相关数据包而已). 主要步骤分为两个: 配置路由器转发协议号41的数据包到你的内网机器 修改本机的ISATAP相关配置(拥有外网环境则会自动完成这一步, 内网环境需要手动处理一些问题) 只有一部分路由器本来的FIRMWARE支持转发协议号41的数据包, 如果你用的路由器不支持, 那就只能尝试dd-wrt或者openwrt了. 如果你的路由器很不幸的也不能刷这类自定义固件, 那也就没办法了..(嗯) Linux类环境可以使用iptables实现转发(假设你的内网IP地址为192.168.0.10, 网关IP为192.168.0.1, 下同): iptables -t nat -A PREROUTING -d 192.168.0.10 -p 41 -j DNAT --to 192.168.0.1 openwrt则可以修改文件 /etc/config/firewall: (此段为转载) config redirect option src wan option dest lan option dest_ip 192.168.0.10 option proto 41 至此, 第一步就做完了. 第二步, 可以用下面的脚本自动完成. 原文给出的bat脚本我在win7和winxp里都试过, 不能发挥应有的作用, 而且每次外网ip变动时都需要修改, [...]]]></description>
			<content:encoded><![CDATA[<p>声明: 本文采用方法来自 <a href="http://blog.lifetoy.org/2010/01/31/isatap-behide-nat/">http://blog.lifetoy.org/2010/01/31/isatap-behide-nat/</a>, 我仅仅是写了一个自动配置脚本(不包括配置路由器).</p>
<p>首先, 这个方法只能让内网一台机器用上ISATAP隧道(仅仅是简单的转发了相关数据包而已). 主要步骤分为两个:</p>
<ul>
<li>配置路由器转发协议号41的数据包到你的内网机器</li>
<li>修改本机的ISATAP相关配置(拥有外网环境则会自动完成这一步, 内网环境需要手动处理一些问题)</li>
</ul>
<p>只有一部分路由器本来的FIRMWARE支持转发协议号41的数据包, 如果你用的路由器不支持, 那就只能尝试dd-wrt或者openwrt了. 如果你的路由器很不幸的也不能刷这类自定义固件, 那也就没办法了..(嗯)</p>
<p>Linux类环境可以使用iptables实现转发(假设你的内网IP地址为192.168.0.10, 网关IP为192.168.0.1, 下同):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">iptables <span style="color: #660033;">-t</span> nat <span style="color: #660033;">-A</span> PREROUTING <span style="color: #660033;">-d</span> 192.168.0.10 <span style="color: #660033;">-p</span> <span style="color: #000000;">41</span> <span style="color: #660033;">-j</span> DNAT <span style="color: #660033;">--to</span> 192.168.0.1</pre></div></div>

<p>openwrt则可以修改文件 /etc/config/firewall: (此段为转载)</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">config redirect
option src                      wan
option dest                     lan
option dest_ip          192.168.0.10
option proto            41</pre></div></div>

<p>至此, 第一步就做完了.</p>
<p>第二步, 可以用下面的脚本自动完成.<br />
原文给出的bat脚本我在win7和winxp里都试过, 不能发挥应有的作用, 而且每次外网ip变动时都需要修改, 这对于动态ip用户更是无法接受的. 于是我用Python重写了一个脚本, 目前只能在XP系统使用. (其实要在Win7下用应该只需要很小的修改, 不过我暂时没测试环境:P)<br />
注: 脚本中写的是上交的isatap隧道服务器配置, 如需使用其他服务器, 稍加修改即可.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#coding:gbk</span>
<span style="color: #808080; font-style: italic;">#IPv6.py For Windows XP - By Felix Yan</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Change the following line if needed.</span>
interface = <span style="color: #483d8b;">&quot;Automatic Tunneling Pseudo-Interface&quot;</span>
ipv6prefix = <span style="color: #483d8b;">&quot;2001:da8:8000:d011&quot;</span>
isatapserver = <span style="color: #483d8b;">&quot;202.112.26.246&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>, <span style="color: #dc143c;">subprocess</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Getting current IP address ... &quot;</span>,
<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>.<span style="color: black;">flush</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib2</span>, <span style="color: #dc143c;">re</span>
<span style="color: #ff7700;font-weight:bold;">try</span>:
    page = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">urlopen</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;http://www.ip138.com/ip2city.asp&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    pub_ip = <span style="color: #dc143c;">re</span>.<span style="color: black;">findall</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\[</span>([<span style="color: #000099; font-weight: bold;">\d</span><span style="color: #000099; font-weight: bold;">\.</span>]+)<span style="color: #000099; font-weight: bold;">\]</span>'</span>, page<span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> pub_ip
<span style="color: #ff7700;font-weight:bold;">except</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Failed&quot;</span>
    <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Disabling ISATAP ... &quot;</span>,
<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>.<span style="color: black;">flush</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
ret = <span style="color: #dc143c;">subprocess</span>.<span style="color: black;">Popen</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;netsh int ipv6 isatap set state disabled&quot;</span>, shell=<span style="color: #008000;">True</span>, stdout=<span style="color: #dc143c;">subprocess</span>.<span style="color: black;">PIPE</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">if</span> u<span style="color: #483d8b;">&quot;确定&quot;</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">unicode</span><span style="color: black;">&#40;</span>ret.<span style="color: black;">communicate</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>, <span style="color: #483d8b;">&quot;mbcs&quot;</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Failed&quot;</span>
    <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Success&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Re-enabling ISATAP ... &quot;</span>,
<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>.<span style="color: black;">flush</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
ret = <span style="color: #dc143c;">subprocess</span>.<span style="color: black;">Popen</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;netsh int ipv6 isatap set state enabled&quot;</span>, shell=<span style="color: #008000;">True</span>, stdout=<span style="color: #dc143c;">subprocess</span>.<span style="color: black;">PIPE</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">if</span> u<span style="color: #483d8b;">&quot;确定&quot;</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">unicode</span><span style="color: black;">&#40;</span>ret.<span style="color: black;">communicate</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>, <span style="color: #483d8b;">&quot;mbcs&quot;</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Failed&quot;</span>
    <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Success&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Deleting existing IPv6 address for ISATAP interface ... &quot;</span>
ret = <span style="color: #dc143c;">subprocess</span>.<span style="color: black;">Popen</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;netsh int ipv6 show address <span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> + interface + <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span>, shell=<span style="color: #008000;">True</span>, stdout=<span style="color: #dc143c;">subprocess</span>.<span style="color: black;">PIPE</span><span style="color: black;">&#41;</span>
old_ip = <span style="color: #dc143c;">re</span>.<span style="color: black;">findall</span><span style="color: black;">&#40;</span>u<span style="color: #483d8b;">&quot;地址<span style="color: #000099; font-weight: bold;">\s</span>*:<span style="color: #000099; font-weight: bold;">\s</span>*([0-9a-fA-F<span style="color: #000099; font-weight: bold;">\:</span><span style="color: #000099; font-weight: bold;">\.</span>]+)&quot;</span>, <span style="color: #008000;">unicode</span><span style="color: black;">&#40;</span>ret.<span style="color: black;">communicate</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>, <span style="color: #483d8b;">&quot;mbcs&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> ip <span style="color: #ff7700;font-weight:bold;">in</span> old_ip:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Deleting &quot;</span> + ip + <span style="color: #483d8b;">&quot; ... &quot;</span>
    <span style="color: #808080; font-style: italic;">#sys.stdout.flush()</span>
    ret = <span style="color: #dc143c;">subprocess</span>.<span style="color: black;">Popen</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;netsh int ipv6 del address <span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> + interface + <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span> &quot;</span> + ip, shell=<span style="color: #008000;">True</span>, stdout=<span style="color: #dc143c;">subprocess</span>.<span style="color: black;">PIPE</span><span style="color: black;">&#41;</span>
    <span style="color: #808080; font-style: italic;">#print ret.communicate()[0]</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Adding correct IPv6 addresses ... &quot;</span>
new_ip = <span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;fe80::5efe:&quot;</span> + pub_ip, ipv6prefix + <span style="color: #483d8b;">&quot;:0:5efe:&quot;</span> + pub_ip<span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> ip <span style="color: #ff7700;font-weight:bold;">in</span> new_ip:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Adding &quot;</span> + ip + <span style="color: #483d8b;">&quot; ... &quot;</span>,
    <span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>.<span style="color: black;">flush</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    ret = <span style="color: #dc143c;">subprocess</span>.<span style="color: black;">Popen</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;netsh int ipv6 add address <span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> + interface + <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span> &quot;</span> + ip, shell=<span style="color: #008000;">True</span>, stdout=<span style="color: #dc143c;">subprocess</span>.<span style="color: black;">PIPE</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> u<span style="color: #483d8b;">&quot;确定&quot;</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">unicode</span><span style="color: black;">&#40;</span>ret.<span style="color: black;">communicate</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>, <span style="color: #483d8b;">&quot;mbcs&quot;</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Failed&quot;</span>
        <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Success&quot;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Getting interface id ... &quot;</span>,
<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>.<span style="color: black;">flush</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
ret = <span style="color: #dc143c;">subprocess</span>.<span style="color: black;">Popen</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;ipv6 if&quot;</span>, shell=<span style="color: #008000;">True</span>, stdout=<span style="color: #dc143c;">subprocess</span>.<span style="color: black;">PIPE</span><span style="color: black;">&#41;</span>
<span style="color: #008000;">id</span> = <span style="color: #dc143c;">re</span>.<span style="color: black;">findall</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Interface ([<span style="color: #000099; font-weight: bold;">\d</span>]+): &quot;</span> + interface, ret.<span style="color: black;">communicate</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span><span style="color: #008000;">id</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Success: &quot;</span> + <span style="color: #008000;">id</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Failed&quot;</span>
    <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Adding route ... &quot;</span>
route = <span style="color: #483d8b;">&quot;::&quot;</span> + isatapserver
ret = <span style="color: #dc143c;">subprocess</span>.<span style="color: black;">Popen</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;ipv6 rtu ::/0 &quot;</span> + <span style="color: #008000;">id</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span> + <span style="color: #483d8b;">&quot;/&quot;</span> + route, shell=<span style="color: #008000;">True</span>, stdout=<span style="color: #dc143c;">subprocess</span>.<span style="color: black;">PIPE</span><span style="color: black;">&#41;</span>
result = ret.<span style="color: black;">communicate</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Testing 2001:470:20::2 ... &quot;</span>,
<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span>.<span style="color: black;">flush</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
ret = <span style="color: #dc143c;">subprocess</span>.<span style="color: black;">Popen</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;ping -n 1 2001:470:20::2&quot;</span>, shell=<span style="color: #008000;">True</span>, stdout=<span style="color: #dc143c;">subprocess</span>.<span style="color: black;">PIPE</span><span style="color: black;">&#41;</span>
<span style="color: #dc143c;">time</span> = <span style="color: #dc143c;">re</span>.<span style="color: black;">findall</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\=</span>([<span style="color: #000099; font-weight: bold;">\d</span><span style="color: #000099; font-weight: bold;">\.</span>]+ms)&quot;</span>, ret.<span style="color: black;">communicate</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">time</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Success: &quot;</span> + <span style="color: #dc143c;">time</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">else</span>:
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Failed&quot;</span>
    <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span></pre></div></div>

<p>参考资料还有: <a href="http://serverfault.com/questions/89025/forwarding-protocol-41-6to4-to-a-linux-box">http://serverfault.com/questions/89025/forwarding-protocol-41-6to4-to-a-linux-box</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.felixc.at/2011/07/isatap-behind-nat-windows-xp-auto-config-python-script/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 1.720 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-05-17 23:38:18 --><!-- Compression = gzip -->

