<?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.icybear.net/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.icybear.net</link>
	<description>某熊吐槽用Blog</description>
	<lastBuildDate>Mon, 28 Feb 2011 17:38:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Welcome to Fremont</title>
		<link>http://blog.icybear.net/2011/03/welcome.html</link>
		<comments>http://blog.icybear.net/2011/03/welcome.html#comments</comments>
		<pubDate>Mon, 28 Feb 2011 17:30:44 +0000</pubDate>
		<dc:creator>Bearice</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.icybear.net/?p=892</guid>
		<description><![CDATA[如果你可以看到这条消息，那么证明熊叔再次成功的搬家了。这次的目的地是Fremont, VPS提供商是mipshost。这次的VPS使用的是对大陆来说很不错的he.net线路，所以访问会快很多ww 好几个月前我换VPS时 @tjmao 同学就推荐了 mipshost ，不过当时没货所以就买了相对便宜的photonvps。 虽然photonvps基本上没出过什么大问题不过2月25号左右VPS机房的线路好像抽搐的厉害，于是便继续搬家。由于photon那边是月付的（6USD/mo）所以也没浪费几天。 不过搬到mipshost也经历了不少挫折的。前两天其实我就买过一次他的VPS了,当时感觉速度各方面好像还不错，但是后来发现他的VPS竟然是使用NAT的！！！ 也就说没法使用he.net 的 ipv6 tunnel了，而且也没有原生的ipv6，访问会受到一定影响=”= 。 跟客服交流了几次还是决定退货=”=，期间他的客服还推荐我使用它们的全虚拟vps,结果我用了一个下午楞是连个ubuntu都没装好=”= 。 由于熊叔没有visa或者Master卡，也没有paypal 买VPS受到的很多的限制以至于一直没有找到很合适的。不过昨天mipshost的客服给我发邮件说他们愿意痛改前非去掉NAT，于是立刻下单买了一年份，7折优惠后接近600RMB每年。 由于昨天一直在公司加班所以直到现在才吧所以数据搬迁完毕，其实VPS之间的搬迁还是挺简单的，因为系统一样（都是ubuntu 10.04,我就是用不管centos的系统），所以我直接装好软件以后用scp吧旧机器上的配置文件覆盖到新机器上就OK了。 希望he.net的线路不要杯具，may the force be with it. PS:在发布这篇东西的时候发现我用的squid代理向post.php提交数据的时候会造成服务器无响应，不知道是为什么=”=]]></description>
			<content:encoded><![CDATA[<p>如果你可以看到这条消息，那么证明熊叔再次成功的搬家了。这次的目的地是Fremont, VPS提供商是mipshost。这次的VPS使用的是对大陆来说很不错的he.net线路，所以访问会快很多ww<br />
好几个月前我换VPS时 @tjmao 同学就推荐了 mipshost ，不过当时没货所以就买了相对便宜的photonvps。 虽然photonvps基本上没出过什么大问题不过2月25号左右VPS机房的线路好像抽搐的厉害，于是便继续搬家。由于photon那边是月付的（6USD/mo）所以也没浪费几天。</p>
<p>不过搬到mipshost也经历了不少挫折的。前两天其实我就买过一次他的VPS了,当时感觉速度各方面好像还不错，但是后来发现他的VPS竟然是使用NAT的！！！ 也就说没法使用he.net 的 ipv6 tunnel了，而且也没有原生的ipv6，访问会受到一定影响=”= 。 跟客服交流了几次还是决定退货=”=，期间他的客服还推荐我使用它们的全虚拟vps,结果我用了一个下午楞是连个ubuntu都没装好=”= 。<br />
由于熊叔没有visa或者Master卡，也没有paypal 买VPS受到的很多的限制以至于一直没有找到很合适的。不过昨天mipshost的客服给我发邮件说他们愿意痛改前非去掉NAT，于是立刻下单买了一年份，7折优惠后接近600RMB每年。</p>
<p>由于昨天一直在公司加班所以直到现在才吧所以数据搬迁完毕，其实VPS之间的搬迁还是挺简单的，因为系统一样（都是ubuntu 10.04,我就是用不管centos的系统），所以我直接装好软件以后用scp吧旧机器上的配置文件覆盖到新机器上就OK了。</p>
<p>希望he.net的线路不要杯具，may the force be with it.</p>
<p>PS:在发布这篇东西的时候发现我用的squid代理向post.php提交数据的时候会造成服务器无响应，不知道是为什么=”=</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.icybear.net/2011/03/welcome.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JIS2UTF8</title>
		<link>http://blog.icybear.net/2011/02/jis2utf8.html</link>
		<comments>http://blog.icybear.net/2011/02/jis2utf8.html#comments</comments>
		<pubDate>Sat, 12 Feb 2011 10:32:34 +0000</pubDate>
		<dc:creator>Bearice</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.icybear.net/?p=883</guid>
		<description><![CDATA[前几天下载了一些日文原版小说，但是发现文件的编码都是JIS的，每次看都是乱码，而且文件很多没法一个个转换（平时我都是用emeditor来搞定这类事情的）于是随手写个小程序来转换编码。主要目的是吧JIS编码的文本文件转换成UTF8-BOM的。除了用来转小说以外还能转无损文件里附带的cue文件。 转换单个文件只需要吧文件拖到程序图标上就可以了，批量转换一个文件夹的方法： 命令行进入要转换的目录然后 for /r . %a in (*.txt) do jis2txt %a 以下是代码： 执行文件：http://static.icybear.net/2011/02/jis2utf8.exe #include &#60;stdio.h&#62; #include &#60;tchar.h&#62; #include &#60;windows.h&#62; #define CP_932 932 char* jis2utf8(char* in,int len,int* ulen) { int wlen = MultiByteToWideChar(CP_932,0,in,len,NULL,0); wchar_t* wbuf = (wchar_t*)malloc(wlen*sizeof(wchar_t)); MultiByteToWideChar(CP_932,0,in,len,wbuf,wlen); *ulen = WideCharToMultiByte(CP_UTF8,0,wbuf,wlen,NULL,0,NULL,NULL); char* ubuf = (char*)malloc(*ulen); WideCharToMultiByte(CP_UTF8,0,wbuf,wlen,ubuf,*ulen,NULL,NULL); free(wbuf); return ubuf; } wchar_t* bakname(wchar_t* name) { static [...]]]></description>
			<content:encoded><![CDATA[<p>前几天下载了一些日文原版小说，但是发现文件的编码都是JIS的，每次看都是乱码，而且文件很多没法一个个转换（平时我都是用emeditor来搞定这类事情的）于是随手写个小程序来转换编码。主要目的是吧JIS编码的文本文件转换成UTF8-BOM的。除了用来转小说以外还能转无损文件里附带的cue文件。</p>
<p>转换单个文件只需要吧文件拖到程序图标上就可以了，批量转换一个文件夹的方法：</p>
<p>命令行进入要转换的目录然后</p>
<pre name="code" class="brush:bash">for /r . %a in (*.txt) do jis2txt %a</pre>
<p>以下是代码：<span id="more-883"></span><br />
执行文件：<a href="//static.icybear.net/2011/02/jis2utf8.exe">http://static.icybear.net/2011/02/jis2utf8.exe</a></p>
<pre class="brush:c">#include &lt;stdio.h&gt;
#include &lt;tchar.h&gt;
#include &lt;windows.h&gt;
#define CP_932 932
char* jis2utf8(char* in,int len,int* ulen)
{
	int wlen = MultiByteToWideChar(CP_932,0,in,len,NULL,0);
	wchar_t* wbuf = (wchar_t*)malloc(wlen*sizeof(wchar_t));
	MultiByteToWideChar(CP_932,0,in,len,wbuf,wlen);
	*ulen = WideCharToMultiByte(CP_UTF8,0,wbuf,wlen,NULL,0,NULL,NULL);
	char* ubuf = (char*)malloc(*ulen);
	WideCharToMultiByte(CP_UTF8,0,wbuf,wlen,ubuf,*ulen,NULL,NULL);
	free(wbuf);
	return ubuf;
}

wchar_t* bakname(wchar_t* name)
{
	static wchar_t buf[1024];
	wcscpy(buf,name);
	wcscat(buf,L".bak");
	return buf;
}

int main(int argc,char** argv)
{
	wchar_t** wargs = CommandLineToArgvW(GetCommandLineW(),&amp;argc);
	wprintf(L"%s\n",wargs[1]);
	FILE* fin = _wfopen(wargs[1],L"rb");
	fseek(fin,0,SEEK_END);
	int len = ftell(fin);
	fseek(fin,0,SEEK_SET);
	printf("read %d bytes\n",len);
	char* buf = malloc(len);
	fread(buf,1,len,fin);
	fclose(fin);
	int ulen;
	char* nbuf = jis2utf8(buf,len,&amp;ulen);
	FILE* fout = _wfopen(wargs[1],L"wb+");
	fwrite("\xEF\xBB\xBF",1,3,fout);
	fwrite(nbuf,1,ulen,fout);
	fclose(fout);

	FILE* fbak = _wfopen(bakname(wargs[1]),L"wb+");
	fwrite(buf,1,len,fbak);
	fclose(fbak);
	return 0;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.icybear.net/2011/02/jis2utf8.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>搬家成功，部分数据丢失</title>
		<link>http://blog.icybear.net/2011/01/successful-move-some-data-loss.html</link>
		<comments>http://blog.icybear.net/2011/01/successful-move-some-data-loss.html#comments</comments>
		<pubDate>Tue, 04 Jan 2011 05:49:29 +0000</pubDate>
		<dc:creator>Bearice</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.icybear.net/?p=874</guid>
		<description><![CDATA[由于原来的合租已经快到期了所以熊叔终于买了自己的VPS，不过由于原来的数据库没备份只能回档到10月ToT（不过反正后来也没写几篇）。 在此再次感谢原来的合租组织者欧叔。 由于这次是租VPS，所以终于可以玩很多以前玩不了的玩意儿了比如SSL =w= 而且好像访问速度也快了不少。现在在公司，等晚上回宿舍再做详细描述。]]></description>
			<content:encoded><![CDATA[<p>由于原来的合租已经快到期了所以熊叔终于买了自己的VPS，不过由于原来的数据库没备份只能回档到10月ToT（不过反正后来也没写几篇）。 在此再次感谢原来的合租组织者欧叔。<br />
由于这次是租VPS，所以终于可以玩很多以前玩不了的玩意儿了比如SSL =w= 而且好像访问速度也快了不少。现在在公司，等晚上回宿舍再做详细描述。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.icybear.net/2011/01/successful-move-some-data-loss.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>今天犯了一个愚蠢的错误</title>
		<link>http://blog.icybear.net/2010/10/today-made-a-stupid-mistake.html</link>
		<comments>http://blog.icybear.net/2010/10/today-made-a-stupid-mistake.html#comments</comments>
		<pubDate>Sun, 10 Oct 2010 10:09:57 +0000</pubDate>
		<dc:creator>Bearice</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://blog.icybear.net/?p=871</guid>
		<description><![CDATA[很久没更新了，今天悄悄更新一下。 最近某熊找到了一份做手机开发的工作，目前主要是做Android平台下的游戏。然后今天老大说要做一下播放BGM的实验。很快的，我写出了这样的代码： @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); new AsyncPlayer("bgm").play(getApplication(), Uri.fromFile(new File("/sdcard/bgm.mp3")), true, AudioManager.STREAM_MUSIC); //balabala... } 本来以为没问题的，但是测试的时候发现音乐播放个几十秒就停止了，找不出任何原因！ 几乎调试、搜索了一个下午都是无解，就差认为Android有问题用硬件调试器了。后来用手机自带的硬件播放器听歌的时候看到日志上不断的在刷“mAudioStreamOut->write(40960 byte)” 之类的东西，终于明白了：因为AsyncPlayer对象是创建在栈上的！onCreate函数返回以后这个对象就会被GC了，能出声音才有鬼。于是马上修改代码证实了这个设想： AsyncPlayer bgm = new AsyncPlayer("bgm"); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); bgm.play(getApplication(), Uri.fromFile(new File("/sdcard/bgm.mp3")), true, AudioManager.STREAM_MUSIC); //balabala... } 就是这样:-)]]></description>
			<content:encoded><![CDATA[<p>很久没更新了，今天悄悄更新一下。<br />
最近某熊找到了一份做手机开发的工作，目前主要是做Android平台下的游戏。然后今天老大说要做一下播放BGM的实验。很快的，我写出了这样的代码：</p>
<pre class="brush:java" name="code">

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		new AsyncPlayer("bgm").play(getApplication(), Uri.fromFile(new File("/sdcard/bgm.mp3")), true, AudioManager.STREAM_MUSIC);
		//balabala...
	}
</pre>
<p>本来以为没问题的，但是测试的时候发现音乐播放个几十秒就停止了，找不出任何原因！<br />
几乎调试、搜索了一个下午都是无解，就差认为Android有问题用硬件调试器了。后来用手机自带的硬件播放器听歌的时候看到日志上不断的在刷“mAudioStreamOut->write(40960 byte)” 之类的东西，终于明白了：因为AsyncPlayer对象是创建在栈上的！onCreate函数返回以后这个对象就会被GC了，能出声音才有鬼。于是马上修改代码证实了这个设想：</p>
<pre class="brush:java" name="code">
	AsyncPlayer bgm = new AsyncPlayer("bgm");
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		bgm.play(getApplication(), Uri.fromFile(new File("/sdcard/bgm.mp3")), true, AudioManager.STREAM_MUSIC);
		//balabala...
	}
</pre>
<p>就是这样:-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.icybear.net/2010/10/today-made-a-stupid-mistake.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>rrdtool 1.4.3 win32 msvc10</title>
		<link>http://blog.icybear.net/2010/08/rrdtool-1-4-3-win32-msvc10.html</link>
		<comments>http://blog.icybear.net/2010/08/rrdtool-1-4-3-win32-msvc10.html#comments</comments>
		<pubDate>Tue, 31 Aug 2010 12:18:45 +0000</pubDate>
		<dc:creator>Bearice</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.icybear.net/?p=857</guid>
		<description><![CDATA[rddtool的源码树里的vc项目文件(win32/rrd.sln)已经很久没更新了，已经不能编译了，于是修改了一下并编译出来。 编译结果：http://static.icybear.net/rrdtool/rrdtool-1.4.3-win32-msvc10.rar 编译环境（包括库文件）：http://static.icybear.net/rrdtool/rrdtool-1.4.3-win32-msvc10-buildenv.rar]]></description>
			<content:encoded><![CDATA[<p>rddtool的源码树里的vc项目文件(win32/rrd.sln)已经很久没更新了，已经不能编译了，于是修改了一下并编译出来。<br />
编译结果：<a href="http://static.icybear.net/rrdtool/rrdtool-1.4.3-win32-msvc10.rar">http://static.icybear.net/rrdtool/rrdtool-1.4.3-win32-msvc10.rar</a><br />
编译环境（包括库文件）：<a href="http://static.icybear.net/rrdtool/rrdtool-1.4.3-win32-msvc10-buildenv.rar">http://static.icybear.net/rrdtool/rrdtool-1.4.3-win32-msvc10-buildenv.rar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.icybear.net/2010/08/rrdtool-1-4-3-win32-msvc10.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[IPv6]如何搭建一个支持IPv6的PPTP VPN</title>
		<link>http://blog.icybear.net/2010/07/ipv6-how-to-build-a-support-for-ipv6-pptp-vpn.html</link>
		<comments>http://blog.icybear.net/2010/07/ipv6-how-to-build-a-support-for-ipv6-pptp-vpn.html#comments</comments>
		<pubDate>Fri, 09 Jul 2010 22:08:12 +0000</pubDate>
		<dc:creator>Bearice</dc:creator>
				<category><![CDATA[ipv6]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[网络]]></category>
		<category><![CDATA[pptp]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://blog.icybear.net/?p=852</guid>
		<description><![CDATA[自从上次成功的搞定Linux下的IPv6隧道以后，我一直在想还能怎么玩这个/48的路由。前几天某人需要一个国内的VPN，于是在搭建VPN的时候研究了一下如何在VPN上分配IPv6地址。现在吧过程记录如下： 安装一个普通的PPTP VPN，不会的自己去Google，其实不只是PPTP，L2TP或者其他基于pppd的隧道都可以使用下面的方法支持IPv6 编辑相应的pppd options文件，比如pptpd的是 /etc/ppp/pptp-options，添加下面的选项： ipparam pptpd ipv6 , 注意ipv6后面是空格和逗号 安装radvd,从 http://silmor.de/69 下载tdhcpd 新建文件夹/etc/ppp/ipv6-radvd,新建文件/etc/ppp/ipv6-up.d/radvd: #!/bin/sh if test $PPP_IPPRARM != pptpd ;then exit 0 fi ADDR=$(echo $PPP_REMOTE &#124; cut -d : -f 3,4,5,6) if test x$ADDR == x ; then echo "Unable to generate IPv6 Address" exit 0 fi ADDR=2001:470:8192:BEEF:$ADDR #add route route -6 add [...]]]></description>
			<content:encoded><![CDATA[<p>自从上次成功的搞定Linux下的IPv6隧道以后，我一直在想还能怎么玩这个/48的路由。前几天某人需要一个国内的VPN，于是在搭建VPN的时候研究了一下如何在VPN上分配IPv6地址。现在吧过程记录如下：</p>
<ol>
<li>安装一个普通的PPTP VPN，不会的自己去Google，其实不只是PPTP，L2TP或者其他基于pppd的隧道都可以使用下面的方法支持IPv6</li>
<li>编辑相应的pppd options文件，比如pptpd的是 /etc/ppp/pptp-options，添加下面的选项：<br />
<blockquote><p>ipparam pptpd<br />
ipv6 ,</p></blockquote>
<p>注意ipv6后面是空格和逗号</li>
<li>安装radvd,从 <a href="http://silmor.de/69">http://silmor.de/69</a> 下载tdhcpd</li>
<li>新建文件夹/etc/ppp/ipv6-radvd,新建文件/etc/ppp/ipv6-up.d/radvd:
<pre class="brush:bash">#!/bin/sh
if test $PPP_IPPRARM != pptpd ;then
        exit 0
fi

ADDR=$(echo $PPP_REMOTE | cut -d : -f 3,4,5,6)

if test x$ADDR == x ; then
        echo "Unable to generate IPv6 Address"
        exit 0
fi
ADDR=2001:470:8192:BEEF:$ADDR

#add route
route -6 add $ADDR/128 dev $PPP_IFACE

#generate radvd config
RAP=/etc/ppp/ipv6-radvd/$PPP_IFACE
RA=$RAP.conf

cat &lt;&lt;EOF &gt;$RA
interface $PPP_IFACE{
        AdvManagedFlag off;
        AdvOtherConfigFlag on;
        AdvSendAdvert on;
        MinRtrAdvInterval 5;
        MaxRtrAdvInterval 100;
        UnicastOnly on;
        AdvSourceLLAddress on;
        prefix 2001:470:8192:BEEF::/64 {};
};
EOF

#start radvd
/usr/sbin/radvd -C $RA -p $RAP.pid

#start tchdpd
/usr/sbin/tdhcpd \
 --dns-server=2001:470:20::2 \
 --dns-name=$PPP_IFACE.tunnel.ipv6.icybear.net \
 --pid-file=$RAP.dhcp.pid \
 --local-id=tunnel.ipv6.icybear.net -L debug\
 $PPP_IFACE

#update dns
ARPA=$(ipv6_rev $ADDR)
nsupdate &lt;&lt; EOF
update delete $ARPA
update add $ARPA 10 ptr $PPP_IFACE.tunnel.ipv6.icybear.net
send
update delete $PPP_IFACE.tunnel.ipv6.icybear.net
update add $PPP_IFACE.tunnel.ipv6.icybear.net 10 aaaa $ADDR
send
EOF

exit 0</pre>
<p>在注意吧里面的2001:470:8192:BEEF 改成你自己要分配的/64地址，但是注意一定要/64的，我试过更小的地址段都不成功，可能是客户端做自动分配地址时是需要使用EUI-64的原因吧。<br />
另外最后的nsupdate那段如果不需要修改dns记录或者根本就没有DNS服务器就可以去掉，不影响。</li>
<li>然后是/etc/ppp/ipv6-down.d/radvd:
<pre class="brush:bash">#!/bin/sh
RAP=/etc/ppp/ipv6-radvd/$PPP_IFACE
kill `cat $RAP.pid` || true
kill `cat $RAP.dhcp.pid` || true
rm -f $RAP.*
ADDR=$(echo $PPP_REMOTE | cut -d : -f 3,4,5,6)
ADDR=2001:470:8192:BEEF:$ADDR
ARPA=$(ipv6_rev $ADDR)
nsupdate &lt;&lt; EOF
update delete $ARPA
send
update delete $PPP_IFACE.tunnel.ipv6.icybear.net
send
EOF
exit 0</pre>
</li>
<li>现在就可以使用P支持IPv6的PTP客户端（比如Windows Vista以上）获取IPv6地址了，另外需要注意的是如果有内网的话记着添加相应的路由记录，比如我使用OSPFv3路由重分发</li>
</ol>
<p>参考资料：http://silmor.de/66</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.icybear.net/2010/07/ipv6-how-to-build-a-support-for-ipv6-pptp-vpn.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>[草泥马语]草泥马语发布新版Erlang based虚拟机</title>
		<link>http://blog.icybear.net/2010/07/horse-whisperer-horse-whisperer-released-new-version-of-erlang-based-virtual-machine.html</link>
		<comments>http://blog.icybear.net/2010/07/horse-whisperer-horse-whisperer-released-new-version-of-erlang-based-virtual-machine.html#comments</comments>
		<pubDate>Wed, 30 Jun 2010 17:30:00 +0000</pubDate>
		<dc:creator>Bearice</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[未分类]]></category>
		<category><![CDATA[蛋痛]]></category>
		<category><![CDATA[草泥马]]></category>

		<guid isPermaLink="false">http://blog.icybear.net/?p=839</guid>
		<description><![CDATA[欢迎参观-&#62;http://code.google.com/p/grass-mud-horse/ PS:图片来源于互联网，请版权所有者与我联系]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-842" title="gmh" src="http://static.icybear.net/2010/07/gmh.jpg" alt="" width="500" height="656" />欢迎参观-&gt;<a href="http://code.google.com/p/grass-mud-horse/">http://code.google.com/p/grass-mud-horse/</a></p>
<p>PS:图片来源于互联网，请版权所有者与我联系</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.icybear.net/2010/07/horse-whisperer-horse-whisperer-released-new-version-of-erlang-based-virtual-machine.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>省省吧，继续抱着FF娘睡觉</title>
		<link>http://blog.icybear.net/2010/06/plug-ins-to-finally-decided-to-change-the-chrome.html</link>
		<comments>http://blog.icybear.net/2010/06/plug-ins-to-finally-decided-to-change-the-chrome.html#comments</comments>
		<pubDate>Thu, 24 Jun 2010 14:26:38 +0000</pubDate>
		<dc:creator>Bearice</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.icybear.net/?p=834</guid>
		<description><![CDATA[很长一段时间以来，Chrome在我的机器上只能沦为二线浏览器，不是因为Chrome不好用，而是因为FF娘太好用了。不过最近FF娘在我的机器上跑的越来越吃力了，页面载入速度也慢的不得了。于是终于决定更换Chrome，不看不知道原来Chrome已经发展了这么多的插件，FF上有名的插件几乎都可以在Chrome找到移植版这种事情真是太没想到了…… 于是： 不过……]]></description>
			<content:encoded><![CDATA[<p><span style="text-decoration: line-through;">很长一段时间以来，Chrome在我的机器上只能沦为二线浏览器，不是因为Chrome不好用，而是因为FF娘太好用了。不过最近FF娘在我的机器上跑的越来越吃力了，页面载入速度也慢的不得了。于是终于决定更换Chrome，不看不知道原来Chrome已经发展了这么多的插件，FF上有名的插件几乎都可以在Chrome找到移植版这种事情真是太没想到了……<br />
于是：</span><img class="aligncenter size-full wp-image-835" title="未命名图片" src="http://static.icybear.net/2010/06/未命名图片.png" alt="" width="552" height="39" /><br />
<img class="aligncenter size-large wp-image-836" title="未命名图片2" src="http://static.icybear.net/2010/06/未命名图片2.png" alt="" width="761" height="1024" /><span style="text-decoration: line-through;"><br />
不过……</span><br />
<img class="aligncenter size-full wp-image-837" title="未命名图片3" src="http://static.icybear.net/2010/06/未命名图片3.png" alt="" width="551" height="580" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.icybear.net/2010/06/plug-ins-to-finally-decided-to-change-the-chrome.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[IPv6]熊熊的IPv6部署实战.Part1 6in4隧道&amp;&amp;PPTP隧道</title>
		<link>http://blog.icybear.net/2010/06/ipv6-ipv6-deployment-blazing-combat-part1-6in4-tunnel-pptp-tunnel.html</link>
		<comments>http://blog.icybear.net/2010/06/ipv6-ipv6-deployment-blazing-combat-part1-6in4-tunnel-pptp-tunnel.html#comments</comments>
		<pubDate>Wed, 23 Jun 2010 12:31:41 +0000</pubDate>
		<dc:creator>Bearice</dc:creator>
				<category><![CDATA[ipv6]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[网络]]></category>
		<category><![CDATA[6to4]]></category>
		<category><![CDATA[pptp]]></category>

		<guid isPermaLink="false">http://blog.icybear.net/?p=829</guid>
		<description><![CDATA[这几天一直在鼓捣IPv6的东西，利用HE.net提供的TunnelBroker服务在学校的网络上部署了一个小型的IPv6网络。这篇文章就是这几天的工作的一些总结。由于涉及到的东西很多很杂，所以会分成几个部分来写。今天先写出第一部分：如何在Linux（Ubuntu）下连接远程PPTP服务器然后再在PPTP隧道的基础上建立6in4连接。 如何去he.net申请Tunnel我就不说了，都会。申请到的Tunnel会有如下参数： Server IPv4 address: 72.52.104.74 Server IPv6 address: 2001:470:1f04:cab::1/64 Client IPv4 address: 184.104.13.193 Client IPv6 address: 2001:470:1f04:cab::2/64 Routed /48: 2001:470:8192::/48 Routed /64: 2001:470:1f05:cab::/64 另外，如果服务器支持PPTP，还会给出相应的参数： Server IPv4 Hostname: tserv3.fmt2.ipv6.he.net Client IPv4 Address: 184.104.13.193 VPN (PPTP) Username: bearice%63106 由于服务器是通过NAT出外网的，所以需要首先配置PPTP拨号： pptpsetup --create IPv6VPN \ --server tserv3.fmt2.ipv6.he.net \ --username bearice%63106 \ --password *** 这样会在/etc/ppp/peers/下建立一个IPv6VPN的文件，以后我们可以使用pon IPv6VPN就可以与服务器建立连接了，不过这还不够，我们需要配置开机自动连接和短线重连，另外还需要在隧道连接后添加一些路由表让6in4使用。 修改IPv6VPN，现在应该是这个样子： persist maxfail [...]]]></description>
			<content:encoded><![CDATA[<p>这几天一直在鼓捣IPv6的东西，利用HE.net提供的TunnelBroker服务在学校的网络上部署了一个小型的IPv6网络。这篇文章就是这几天的工作的一些总结。由于涉及到的东西很多很杂，所以会分成几个部分来写。今天先写出第一部分：如何在Linux（Ubuntu）下连接远程PPTP服务器然后再在PPTP隧道的基础上建立6in4连接。</p>
<p>如何去<a href="http://he.net/">he.net</a>申请Tunnel我就不说了，都会。申请到的Tunnel会有如下参数：</p>
<pre class="brush:text">Server IPv4 address:  	72.52.104.74
Server IPv6 address: 	2001:470:1f04:cab::1/64
Client IPv4 address: 	184.104.13.193
Client IPv6 address: 	2001:470:1f04:cab::2/64
Routed /48:  	2001:470:8192::/48
Routed /64: 	2001:470:1f05:cab::/64
</pre>
<p>另外，如果服务器支持PPTP，还会给出相应的参数：</p>
<pre class="brush:text">Server IPv4 Hostname:  tserv3.fmt2.ipv6.he.net
Client IPv4 Address: 	184.104.13.193
VPN (PPTP) Username: 	bearice%63106
</pre>
<p>由于服务器是通过NAT出外网的，所以需要首先配置PPTP拨号：</p>
<pre class="brush:bash">
pptpsetup --create IPv6VPN \
              --server tserv3.fmt2.ipv6.he.net  \
              --username bearice%63106 \
              --password ***</pre>
<p>这样会在/etc/ppp/peers/下建立一个IPv6VPN的文件，以后我们可以使用pon IPv6VPN就可以与服务器建立连接了，不过这还不够，我们需要配置开机自动连接和短线重连，另外还需要在隧道连接后添加一些路由表让6in4使用。<br />
修改IPv6VPN，现在应该是这个样子：</p>
<pre class="brush:text">persist
maxfail 0
pty "pptp tserv3.fmt2.ipv6.he.net --nolaunchpppd"
lock
noauth
nobsdcomp
nodeflate
name bearice%63106
remotename IPv6VPN
ipparam IPv6VPN
updetach </pre>
<p>在文件的开头我添加了“persist”和“maxfail 0” 使ppp进程在链接终端以后自动重连。<br />
然后修改/etc/network/interfaces 添加如下内容：</p>
<pre class="brush:text">
auto he-vpn
iface he-vpn inet ppp
        provider IPv6VPN

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
        endpoint 72.52.104.74
        local      184.104.13.193
        address  2001:470:1f04:cab::2
        netmask 64
        up         ip -6 route add default dev he-ipv6
        down     ip -6 route del default dev he-ipv6
        mtu       1420
        ttl         255
</pre>
<p>使隧道可以开机后自动连接。<br />
但是现在6in4隧道还不能正常使用。如果你进行嗅探的话会发现所有出站的IPv6数据包没有使用PPTP隧道进行封装而是直接向网关发出。<br />
这里困扰了我很久，最后在he.net的论坛里找到了答案：</p>
<blockquote><p>使用PPTP隧道会在路由表内添加一条指向服务器的路由，由于这条路由的存在使我们的流量通过PPTP隧道传出，要解决这个问题需要添加一条策略路由：如果IP源地址等于我们的PPTP隧道地址则使用一个特殊的路由表进行路由。
</p></blockquote>
<p>实际上的操作如下：<br />
首先执行</p>
<pre class="brush:bash">echo "1 pptp" >> /etc/iproute2/rt_tables</pre>
<p>向系统添加一个路由表。<br />
然后在/etc/ppp/ip-up.d下建立一个vpn_route文件（名字无所谓） chmod +x这个文件然后添加下面的内容：</p>
<pre class="brush:bash">#!/bin/sh -e
ip route add default dev $PPP_IFACE table pptp
ip rule add from $PPP_LOCAL table pptp
exit 0</pre>
<p>使得PPP可以在连接建立以后自动的添加这条策略路由。为了严谨，我们在PPP链接断开后删除路由：/etc/ppp/ip-down.d/vpn_route</p>
<pre class="brush:bash">#!/bin/sh -e
ip route del default dev $PPP_IFACE table pptp
ip rule del from $PPP_LOCAL table pptp
exit 0</pre>
<p>现在，你就可以使用ifup he-vpn建立PPTP隧道，使用ping6 2001:470:1f04:cab::1测试6in4隧道连接。<br />
今天就到这，下一次的内容是如何在内部网络建立IPv6路由结构，OSPFv3、quagga的配置。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.icybear.net/2010/06/ipv6-ipv6-deployment-blazing-combat-part1-6in4-tunnel-pptp-tunnel.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[blog]搬家完毕</title>
		<link>http://blog.icybear.net/2010/06/blog-move-completed.html</link>
		<comments>http://blog.icybear.net/2010/06/blog-move-completed.html#comments</comments>
		<pubDate>Fri, 11 Jun 2010 00:51:30 +0000</pubDate>
		<dc:creator>Bearice</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://blog.icybear.net/?p=827</guid>
		<description><![CDATA[今年换了新的合租服务器，感谢欧叔的技术支持。 目前看来这个服务器要比Godaddy的速度要快一些，但是稳定性还有待考据。 昨晚搬家时遇到不少问题，比如这个PHP环境要求文件不能带有UTF8的BOM头，否则就乱码。还有内存限制等等乱七八糟的问题，不过好在都顺利解决了。 嗯，就是这样。这个月会很忙所以估计不会有什么更新了。]]></description>
			<content:encoded><![CDATA[<p>今年换了新的合租服务器，感谢欧叔的技术支持。</p>
<p>目前看来这个服务器要比Godaddy的速度要快一些，但是稳定性还有待考据。</p>
<p>昨晚搬家时遇到不少问题，比如这个PHP环境要求文件不能带有UTF8的BOM头，否则就乱码。还有内存限制等等乱七八糟的问题，不过好在都顺利解决了。</p>
<p>嗯，就是这样。这个月会很忙所以估计不会有什么更新了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.icybear.net/2010/06/blog-move-completed.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

