<?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>Magki&#039;s Blog &#187; Magki</title>
	<atom:link href="http://www.magki.com/blog/author/admin/feed" rel="self" type="application/rss+xml" />
	<link>http://www.magki.com/blog</link>
	<description>努力赚钱ing &#124; 承接各种企业站, 门户站, 商城等开发(PHP)</description>
	<lastBuildDate>Fri, 16 Dec 2011 03:26:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>解决 Ecshop 2.7.2 与 Discuz! X2 的同步退出问题</title>
		<link>http://www.magki.com/blog/2011/12/fix-synlogout-for-ecshop-and-discuz.html</link>
		<comments>http://www.magki.com/blog/2011/12/fix-synlogout-for-ecshop-and-discuz.html#comments</comments>
		<pubDate>Fri, 16 Dec 2011 03:26:20 +0000</pubDate>
		<dc:creator>Magki</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.magki.com/blog/?p=53</guid>
		<description><![CDATA[最近一个项目需要整合 Ecshop 和 Discuz。整合过程很简单，最新版的 Discuz! X2 已经自带了 uc_server 和 uc_client。由于主目录是 Ecshop，Discuz 放在 bbs 目录下，为了减少垃圾文件，我全局修改了 Ecshop 里关于 uc_client 的调用路径，改成了 discuz 里自带的，这样两个程序就共用一个 uc_client。
全部设置成接口调用方式后测试发现，两边登陆都可以同步登陆到另一程序上，但退出则无法实现同步登陆。顺着 Ecshop 的退出流程，顺藤摸瓜找到了 lib_common.php 文件中的 uc_call 这个方法。这个方法的第二个参数 $params 的默认值是 null。而 Ecshop 注销时只传了调用 uc_client 中同步退出方法名做为一个参数的值，第二个参数使用的是默认值。而这个方法中通过 call_user_func_array($func, $params); 来调用对应的方法，问题就在这，第二个 $params 参数如果是 null 则 call_user_func_array 执行失败。解决办法很简单，修改 Ecshop 里 lib_common.php 中 function uc_call($func, $params=null) 这一行改成 function uc_call($func, $params=array()) 即可。
]]></description>
			<content:encoded><![CDATA[<p>最近一个项目需要整合 Ecshop 和 Discuz。整合过程很简单，最新版的 Discuz! X2 已经自带了 uc_server 和 uc_client。由于主目录是 Ecshop，Discuz 放在 bbs 目录下，为了减少垃圾文件，我全局修改了 Ecshop 里关于 uc_client 的调用路径，改成了 discuz 里自带的，这样两个程序就共用一个 uc_client。</p>
<p>全部设置成接口调用方式后测试发现，两边登陆都可以同步登陆到另一程序上，但退出则无法实现同步登陆。顺着 Ecshop 的退出流程，顺藤摸瓜找到了 lib_common.php 文件中的 uc_call 这个方法。这个方法的第二个参数 $params 的默认值是 null。而 Ecshop 注销时只传了调用 uc_client 中同步退出方法名做为一个参数的值，第二个参数使用的是默认值。而这个方法中通过 call_user_func_array($func, $params); 来调用对应的方法，问题就在这，第二个 $params 参数如果是 null 则 call_user_func_array 执行失败。解决办法很简单，修改 Ecshop 里 lib_common.php 中 function uc_call($func, $params=null) 这一行改成 function uc_call($func, $params=array()) 即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.magki.com/blog/2011/12/fix-synlogout-for-ecshop-and-discuz.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Socket 范例</title>
		<link>http://www.magki.com/blog/2011/10/php-socket-example.html</link>
		<comments>http://www.magki.com/blog/2011/10/php-socket-example.html#comments</comments>
		<pubDate>Thu, 13 Oct 2011 03:14:28 +0000</pubDate>
		<dc:creator>Magki</dc:creator>
				<category><![CDATA[Day After Day]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Socket]]></category>

		<guid isPermaLink="false">http://www.magki.com/blog/?p=52</guid>
		<description><![CDATA[Server.php&#160;代码
&#60;?php
header("Content-type:&#160;text/html;&#160;charset=utf-8");
//确保在连接客户端时不会超时
set_time_limit(0);
//设置IP和端口号
$address&#160;=&#160;'127.0.0.1';
$port&#160;=&#160;8080;
//创建一个SOCKET
if(($sock&#160;=&#160;socket_create(AF_INET,&#160;SOCK_STREAM,&#160;SOL_TCP))&#160;&#60;&#160;0){
&#160;&#160;&#160;echo&#160;"socket_create()&#160;失败的原因是:"&#160;.&#160;socket_strerror($sock)&#160;.&#160;"&#60;br&#62;";
}
//绑定到socket端口
if(($ret&#160;=&#160;socket_bind($sock,&#160;$address,&#160;$port))&#160;&#60;&#160;0){
&#160;&#160;&#160;echo&#160;"socket_bind()&#160;失败的原因是:"&#160;.&#160;socket_strerror($ret)&#160;.&#160;"&#60;br&#62;";
}
//开始监听
if(($ret&#160;=&#160;socket_listen($sock,&#160;4))&#160;&#60;&#160;0){
&#160;&#160;&#160;echo&#160;"socket_listen()&#160;失败的原因是:"&#160;.&#160;socket_strerror($ret)&#160;.&#160;"&#60;br&#62;";
}
$buf&#160;=&#160;'';
do{
&#160;&#160;&#160;if(($msgsock&#160;=&#160;socket_accept($sock))&#160;&#60;&#160;0){
&#160;&#160;&#160;&#160;&#160;&#160;echo&#160;"socket_accept()&#160;failed:&#160;reason:&#160;"&#160;.&#160;socket_strerror($msgsock)&#160;.&#160;"\n";
&#160;&#160;&#160;&#160;&#160;&#160;break;
&#160;&#160;&#160;}
&#160;&#160;&#160;
&#160;&#160;&#160;$msg&#160;=&#160;"&#60;font&#160;color=red&#62;欢迎进入服务器！&#60;/font&#62;";
&#160;&#160;&#160;socket_write($msgsock,&#160;$msg,&#160;strlen($msg));
&#160;&#160;&#160;echo&#160;"读取客户端发来的信息&#60;br&#62;";
&#160;&#160;&#160;$buf&#160;=&#160;socket_read($msgsock,&#160;8192);
&#160;&#160;&#160;echo&#160;$talkback&#160;=&#160;"收到的信息：$buf&#60;br&#62;";
&#160;&#160;&#160;
&#160;&#160;&#160;if(socket_write($msgsock,&#160;"信息接收成功",&#160;strlen("信息接收成功"))&#160;&#60;&#160;0){
&#160;&#160;&#160;&#160;&#160;&#160;echo&#160;"socket_write()&#160;failed:&#160;reason:&#160;"&#160;.&#160;socket_strerror($msgsock)&#160;.&#160;"\n";
&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;echo&#160;"反馈客户端成功";
&#160;&#160;&#160;}
&#160;&#160;&#160;
&#160;&#160;&#160;socket_close($msgsock);
}while(!$buf);
socket_close($sock);
?&#62;

client.php&#160;代码
&#60;?php
header("Content-type:&#160;text/html;&#160;charset=utf-8");
error_reporting(E_ALL);
set_time_limit(0);
echo&#160;"&#60;h2&#62;TCP/IP&#160;Connection&#60;/h2&#62;\n";
$service_port&#160;=&#160;8080;
$address&#160;=&#160;"127.0.0.1";
$socket&#160;=&#160;socket_create(AF_INET,&#160;SOCK_STREAM,&#160;SOL_TCP);
if($socket&#160;&#60;&#160;0){
&#160;&#160;&#160;echo&#160;"socket_create()&#160;failed:&#160;reason:&#160;"&#160;.&#160;socket_strerror($socket)&#160;.&#160;"\n";
}else{
&#160;&#160;&#160;echo&#160;"OK.\n";
}
echo&#160;"试图连接&#160;'$address'&#160;端口&#160;'$service_port'...&#60;br&#62;";
$result&#160;=&#160;socket_connect($socket,&#160;$address,&#160;$service_port);
if($result&#160;&#60;&#160;0){
&#160;&#160;&#160;echo&#160;"socket_connect()&#160;failed.\nReason:&#160;($result)&#160;"&#160;.&#160;socket_strerror($result)&#160;.&#160;"\n";
}else{
&#160;&#160;&#160;echo&#160;"连接OK&#60;br&#62;";
}
$in&#160;=&#160;"Hello&#160;World\r\n";
$out&#160;=&#160;'';
if(!socket_write($socket,&#160;$in,&#160;strlen($in))){
&#160;&#160;&#160;echo&#160;"socket_write()&#160;failed:&#160;reason:&#160;"&#160;.&#160;socket_strerror($socket)&#160;.&#160;"\n";
}else{
&#160;&#160;&#160;echo&#160;"发送到服务器信息成功！&#60;br&#62;";
&#160;&#160;&#160;echo&#160;"发送的内容为：&#60;font&#160;color='red'&#62;$in&#60;/font&#62;&#60;br&#62;";
}
while($out&#160;=&#160;socket_read($socket,&#160;8192)){
&#160;&#160;&#160;echo&#160;"接收服务器回传信息成功！&#60;br&#62;";
&#160;&#160;&#160;echo&#160;"接受的内容为：$out&#60;br&#160;/&#62;";
}
echo&#160;"关闭SOCKET...&#60;br&#62;";
socket_close($socket);
echo&#160;"关闭OK&#60;br&#62;";
?&#62;
]]></description>
			<content:encoded><![CDATA[<p>Server.php&nbsp;代码</p>
<p>&lt;?php<br />
header("Content-type:&nbsp;text/html;&nbsp;charset=utf-8");<br />
//确保在连接客户端时不会超时<br />
set_time_limit(0);</p>
<p>//设置IP和端口号<br />
$address&nbsp;=&nbsp;'127.0.0.1';<br />
$port&nbsp;=&nbsp;8080;</p>
<p>//创建一个SOCKET<br />
if(($sock&nbsp;=&nbsp;socket_create(AF_INET,&nbsp;SOCK_STREAM,&nbsp;SOL_TCP))&nbsp;&lt;&nbsp;0){<br />
&nbsp;&nbsp;&nbsp;echo&nbsp;"socket_create()&nbsp;失败的原因是:"&nbsp;.&nbsp;socket_strerror($sock)&nbsp;.&nbsp;"&lt;br&gt;";<br />
}</p>
<p>//绑定到socket端口<br />
if(($ret&nbsp;=&nbsp;socket_bind($sock,&nbsp;$address,&nbsp;$port))&nbsp;&lt;&nbsp;0){<br />
&nbsp;&nbsp;&nbsp;echo&nbsp;"socket_bind()&nbsp;失败的原因是:"&nbsp;.&nbsp;socket_strerror($ret)&nbsp;.&nbsp;"&lt;br&gt;";<br />
}</p>
<p>//开始监听<br />
if(($ret&nbsp;=&nbsp;socket_listen($sock,&nbsp;4))&nbsp;&lt;&nbsp;0){<br />
&nbsp;&nbsp;&nbsp;echo&nbsp;"socket_listen()&nbsp;失败的原因是:"&nbsp;.&nbsp;socket_strerror($ret)&nbsp;.&nbsp;"&lt;br&gt;";<br />
}</p>
<p>$buf&nbsp;=&nbsp;'';</p>
<p>do{<br />
&nbsp;&nbsp;&nbsp;if(($msgsock&nbsp;=&nbsp;socket_accept($sock))&nbsp;&lt;&nbsp;0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"socket_accept()&nbsp;failed:&nbsp;reason:&nbsp;"&nbsp;.&nbsp;socket_strerror($msgsock)&nbsp;.&nbsp;"\n";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;$msg&nbsp;=&nbsp;"&lt;font&nbsp;color=red&gt;欢迎进入服务器！&lt;/font&gt;";<br />
&nbsp;&nbsp;&nbsp;socket_write($msgsock,&nbsp;$msg,&nbsp;strlen($msg));</p>
<p>&nbsp;&nbsp;&nbsp;echo&nbsp;"读取客户端发来的信息&lt;br&gt;";<br />
&nbsp;&nbsp;&nbsp;$buf&nbsp;=&nbsp;socket_read($msgsock,&nbsp;8192);</p>
<p>&nbsp;&nbsp;&nbsp;echo&nbsp;$talkback&nbsp;=&nbsp;"收到的信息：$buf&lt;br&gt;";<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;if(socket_write($msgsock,&nbsp;"信息接收成功",&nbsp;strlen("信息接收成功"))&nbsp;&lt;&nbsp;0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"socket_write()&nbsp;failed:&nbsp;reason:&nbsp;"&nbsp;.&nbsp;socket_strerror($msgsock)&nbsp;.&nbsp;"\n";<br />
&nbsp;&nbsp;&nbsp;}else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"反馈客户端成功";<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;socket_close($msgsock);<br />
}while(!$buf);</p>
<p>socket_close($sock);<br />
?&gt;</p>
<p><span id="more-52"></span></p>
<p>client.php&nbsp;代码</p>
<p>&lt;?php<br />
header("Content-type:&nbsp;text/html;&nbsp;charset=utf-8");<br />
error_reporting(E_ALL);<br />
set_time_limit(0);<br />
echo&nbsp;"&lt;h2&gt;TCP/IP&nbsp;Connection&lt;/h2&gt;\n";</p>
<p>$service_port&nbsp;=&nbsp;8080;<br />
$address&nbsp;=&nbsp;"127.0.0.1";</p>
<p>$socket&nbsp;=&nbsp;socket_create(AF_INET,&nbsp;SOCK_STREAM,&nbsp;SOL_TCP);<br />
if($socket&nbsp;&lt;&nbsp;0){<br />
&nbsp;&nbsp;&nbsp;echo&nbsp;"socket_create()&nbsp;failed:&nbsp;reason:&nbsp;"&nbsp;.&nbsp;socket_strerror($socket)&nbsp;.&nbsp;"\n";<br />
}else{<br />
&nbsp;&nbsp;&nbsp;echo&nbsp;"OK.\n";<br />
}</p>
<p>echo&nbsp;"试图连接&nbsp;'$address'&nbsp;端口&nbsp;'$service_port'...&lt;br&gt;";<br />
$result&nbsp;=&nbsp;socket_connect($socket,&nbsp;$address,&nbsp;$service_port);<br />
if($result&nbsp;&lt;&nbsp;0){<br />
&nbsp;&nbsp;&nbsp;echo&nbsp;"socket_connect()&nbsp;failed.\nReason:&nbsp;($result)&nbsp;"&nbsp;.&nbsp;socket_strerror($result)&nbsp;.&nbsp;"\n";<br />
}else{<br />
&nbsp;&nbsp;&nbsp;echo&nbsp;"连接OK&lt;br&gt;";<br />
}</p>
<p>$in&nbsp;=&nbsp;"Hello&nbsp;World\r\n";<br />
$out&nbsp;=&nbsp;'';</p>
<p>if(!socket_write($socket,&nbsp;$in,&nbsp;strlen($in))){<br />
&nbsp;&nbsp;&nbsp;echo&nbsp;"socket_write()&nbsp;failed:&nbsp;reason:&nbsp;"&nbsp;.&nbsp;socket_strerror($socket)&nbsp;.&nbsp;"\n";<br />
}else{<br />
&nbsp;&nbsp;&nbsp;echo&nbsp;"发送到服务器信息成功！&lt;br&gt;";<br />
&nbsp;&nbsp;&nbsp;echo&nbsp;"发送的内容为：&lt;font&nbsp;color='red'&gt;$in&lt;/font&gt;&lt;br&gt;";<br />
}</p>
<p>while($out&nbsp;=&nbsp;socket_read($socket,&nbsp;8192)){<br />
&nbsp;&nbsp;&nbsp;echo&nbsp;"接收服务器回传信息成功！&lt;br&gt;";<br />
&nbsp;&nbsp;&nbsp;echo&nbsp;"接受的内容为：$out&lt;br&nbsp;/&gt;";<br />
}</p>
<p>echo&nbsp;"关闭SOCKET...&lt;br&gt;";<br />
socket_close($socket);<br />
echo&nbsp;"关闭OK&lt;br&gt;";<br />
?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.magki.com/blog/2011/10/php-socket-example.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>怀念家驹</title>
		<link>http://www.magki.com/blog/2011/06/missing-beyond.html</link>
		<comments>http://www.magki.com/blog/2011/06/missing-beyond.html#comments</comments>
		<pubDate>Thu, 30 Jun 2011 04:34:03 +0000</pubDate>
		<dc:creator>Magki</dc:creator>
				<category><![CDATA[Day After Day]]></category>

		<guid isPermaLink="false">http://www.magki.com/blog/?p=51</guid>
		<description><![CDATA[相信跟我同为80年代上下的朋友们都熟悉黄家驹，哪怕你不是他的歌迷！从他不幸去世那天至今整整18载了，时间过的好快！
小时候是个乖乖仔，家里有个录放机一直都是给放些少儿歌。初中的时候偶然的机会从一个女同学那里借了一盘宝丽金的金曲合集，回家听过后就特喜欢里面的那首《真的爱你》，后来同学告诉我说这首歌是 Beyond 唱的并帮我从城里买了一盘 Beyond 的专辑。这一听就一发不可收拾了，疯狂的收集 Beyond 的磁带（全是盗版的，没办法，那时候 CD 对我来说是可望不可及的奢侈品）。那时候没有网络，所有 Beyond 的消息都来自各种磁带里附带的信息，慢慢的知道我最喜欢的主唱早三年前已经过世，慢慢知道了 Beyond 的成长历程，知道了很多歌背后的故事……渐渐的，Beyond 成了我学习之余的全部
至今我主要还是听 Beyond 的歌，无论换了什么手机，里面都雷打不动的保存着 Beyond 所发表的所有专辑的 MP3。这些常会触动到心弦歌，伴我闯过了一段又一段迷茫和艰难的人生之路，现在已不是当年那个听了歌就冲动的要去学吉他的少年了。听着这些歌比以往少了些许激情，却多了一份感动，一份怀念……
文笔不好，不太会表达内心的感受，忘诸位 Beyond 同好见谅。
Beyond 不死，精神永存
]]></description>
			<content:encoded><![CDATA[<p>相信跟我同为80年代上下的朋友们都熟悉黄家驹，哪怕你不是他的歌迷！从他不幸去世那天至今整整18载了，时间过的好快！</p>
<p>小时候是个乖乖仔，家里有个录放机一直都是给放些少儿歌。初中的时候偶然的机会从一个女同学那里借了一盘宝丽金的金曲合集，回家听过后就特喜欢里面的那首《真的爱你》，后来同学告诉我说这首歌是 Beyond 唱的并帮我从城里买了一盘 Beyond 的专辑。这一听就一发不可收拾了，疯狂的收集 Beyond 的磁带（全是盗版的，没办法，那时候 CD 对我来说是可望不可及的奢侈品）。那时候没有网络，所有 Beyond 的消息都来自各种磁带里附带的信息，慢慢的知道我最喜欢的主唱早三年前已经过世，慢慢知道了 Beyond 的成长历程，知道了很多歌背后的故事……渐渐的，Beyond 成了我学习之余的全部</p>
<p>至今我主要还是听 Beyond 的歌，无论换了什么手机，里面都雷打不动的保存着 Beyond 所发表的所有专辑的 MP3。这些常会触动到心弦歌，伴我闯过了一段又一段迷茫和艰难的人生之路，现在已不是当年那个听了歌就冲动的要去学吉他的少年了。听着这些歌比以往少了些许激情，却多了一份感动，一份怀念……</p>
<p>文笔不好，不太会表达内心的感受，忘诸位 Beyond 同好见谅。</p>
<p>Beyond 不死，精神永存</p>
]]></content:encoded>
			<wfw:commentRss>http://www.magki.com/blog/2011/06/missing-beyond.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>windows 下 gVim 的中文utf8支持</title>
		<link>http://www.magki.com/blog/2010/12/fix-gvim-for-chinese-utf8-support-in-windows.html</link>
		<comments>http://www.magki.com/blog/2010/12/fix-gvim-for-chinese-utf8-support-in-windows.html#comments</comments>
		<pubDate>Sun, 26 Dec 2010 07:42:48 +0000</pubDate>
		<dc:creator>Magki</dc:creator>
				<category><![CDATA[L.A.M.P]]></category>

		<guid isPermaLink="false">http://www.magki.com/blog/?p=50</guid>
		<description><![CDATA[做开发养成的习惯，编码一贯用 utf8 格式。以前一直没事，最近在 windows 下装了 gVim 准备好好练练快捷键发现 gVim 打开 UTF8 编码的文件中文都是乱码。网上搜了一下修改了 vim 的配置文件 _vimrc 解决了这个小问题，把下面这段配置代码插入到 _vimrc 最前端就可以了。
if has("gui_running")
&#160;&#160;&#160;&#160;set encoding=utf-8
&#160;&#160;&#160;&#160;set fileencodings=utf-8,chinese,latin-1
&#160;&#160;&#160;&#160;if has("win32")
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;set fileencoding=chinese
&#160;&#160;&#160;&#160;else
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;set fileencoding=utf-8
&#160;&#160;&#160;&#160;endif
&#160;&#160;&#160;&#160;let &#038;termencoding=&#038;encoding
&#160;&#160;&#160;&#160;source $VIMRUNTIME/delmenu.vim
&#160;&#160;&#160;&#160;source $VIMRUNTIME/menu.vim
&#160;&#160;&#160;&#160;language messages zh_CN.utf-8
endif
]]></description>
			<content:encoded><![CDATA[<p>做开发养成的习惯，编码一贯用 utf8 格式。以前一直没事，最近在 windows 下装了 gVim 准备好好练练快捷键发现 gVim 打开 UTF8 编码的文件中文都是乱码。网上搜了一下修改了 vim 的配置文件 _vimrc 解决了这个小问题，把下面这段配置代码插入到 _vimrc 最前端就可以了。</p>
<p>if has("gui_running")<br />
&nbsp;&nbsp;&nbsp;&nbsp;set encoding=utf-8<br />
&nbsp;&nbsp;&nbsp;&nbsp;set fileencodings=utf-8,chinese,latin-1</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;if has("win32")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set fileencoding=chinese<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set fileencoding=utf-8<br />
&nbsp;&nbsp;&nbsp;&nbsp;endif</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;let &#038;termencoding=&#038;encoding</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;source $VIMRUNTIME/delmenu.vim<br />
&nbsp;&nbsp;&nbsp;&nbsp;source $VIMRUNTIME/menu.vim</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;language messages zh_CN.utf-8<br />
endif</p>
]]></content:encoded>
			<wfw:commentRss>http://www.magki.com/blog/2010/12/fix-gvim-for-chinese-utf8-support-in-windows.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>还原 Archlinux 官方库里的 Firefox 和 Thunderbird 的图标</title>
		<link>http://www.magki.com/blog/2010/11/restore-firefox-and-thunderbird-icon-in-the-official-repository-of-archlinux.html</link>
		<comments>http://www.magki.com/blog/2010/11/restore-firefox-and-thunderbird-icon-in-the-official-repository-of-archlinux.html#comments</comments>
		<pubDate>Sun, 14 Nov 2010 03:57:20 +0000</pubDate>
		<dc:creator>Magki</dc:creator>
				<category><![CDATA[L.A.M.P]]></category>

		<guid isPermaLink="false">http://www.magki.com/blog/?p=49</guid>
		<description><![CDATA[根据 Mozilla 的政策，在诸如 Archlinux 等发行版的软件库中所包含的 Mozilla 软件的图标都不能使用官方图标。所以在 Archlinux 下通过软件库安装了 Firefox 和 Thunderbird 后会发现图标很丑……至少我是这么觉得的 :p
曾在网上找过别人的脚本来还原，但那个脚本里所用的图标来源失效了，遂自己下载了官方版 Firefox 和 Thunderbird 写个小脚本替换了下。分享出来，也供自己以后方便。点击下载并解压后，用 root 权限执行 brand.sh 就可以了，脚本很简单就4行复制命令，大家可以放心使用。
]]></description>
			<content:encoded><![CDATA[<p>根据 Mozilla 的政策，在诸如 Archlinux 等发行版的软件库中所包含的 Mozilla 软件的图标都不能使用官方图标。所以在 Archlinux 下通过软件库安装了 Firefox 和 Thunderbird 后会发现图标很丑……至少我是这么觉得的 :p</p>
<p>曾在网上找过别人的脚本来还原，但那个脚本里所用的图标来源失效了，遂自己下载了官方版 Firefox 和 Thunderbird 写个小脚本替换了下。分享出来，也供自己以后方便。<a href="http://www.magki.com/down/other/brand.zip">点击下载</a>并解压后，用 root 权限执行 brand.sh 就可以了，脚本很简单就4行复制命令，大家可以放心使用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.magki.com/blog/2010/11/restore-firefox-and-thunderbird-icon-in-the-official-repository-of-archlinux.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>最近做的一个 nginx 配置的备份</title>
		<link>http://www.magki.com/blog/2010/10/a-simple-conf-file-of-nginx.html</link>
		<comments>http://www.magki.com/blog/2010/10/a-simple-conf-file-of-nginx.html#comments</comments>
		<pubDate>Mon, 18 Oct 2010 09:53:48 +0000</pubDate>
		<dc:creator>Magki</dc:creator>
				<category><![CDATA[L.A.M.P]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.magki.com/blog/?p=48</guid>
		<description><![CDATA[#设置&#160;nginx&#160;所属用户
user&#160;http;
#设置&#160;nginx&#160;运行的进程数
worker_processes&#160;&#160;8;
worker_rlimit_nofile&#160;10240;
events&#160;{
&#160;&#160;&#160;&#160;#启用&#160;epoll&#160;优化网络
&#160;&#160;&#160;&#160;use&#160;epoll;
&#160;&#160;&#160;&#160;#设置最大连接数
&#160;&#160;&#160;&#160;worker_connections&#160;&#160;1024;
}
http&#160;{
&#160;&#160;&#160;&#160;include&#160;&#160;&#160;&#160;&#160;&#160;&#160;mime.types;
&#160;&#160;&#160;&#160;default_type&#160;&#160;application/octet-stream;
&#160;&#160;&#160;&#160;#启用&#160;sendfile&#160;函数输出
&#160;&#160;&#160;&#160;sendfile&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;on;
&#160;&#160;&#160;&#160;#设置超时时间
&#160;&#160;&#160;&#160;keepalive_timeout&#160;&#160;65;
&#160;&#160;&#160;&#160;#隐藏&#160;nginx&#160;版本号
&#160;&#160;&#160;&#160;server_tokens&#160;off;
&#160;&#160;&#160;&#160;#配置&#160;GZIP
&#160;&#160;&#160;&#160;gzip&#160;&#160;on;
&#160;&#160;&#160;&#160;gzip_min_length&#160;1k;
&#160;&#160;&#160;&#160;gzip_buffers&#160;4&#160;16k;
&#160;&#160;&#160;&#160;gzip_http_version&#160;1.1;
&#160;&#160;&#160;&#160;gzip_comp_level&#160;2;
&#160;&#160;&#160;&#160;gzip_types&#160;text/plain&#160;application/x-javascript&#160;text/css&#160;application/xml;
&#160;&#160;&#160;&#160;gzip_vary&#160;on;
&#160;&#160;&#160;&#160;#配置数据缓冲以及文件缓存
&#160;&#160;&#160;&#160;client_header_buffer_size&#160;4k;
&#160;&#160;&#160;&#160;client_max_body_size&#160;8m;
&#160;&#160;&#160;&#160;open_file_cache&#160;max=1024&#160;inactive=20s;
&#160;&#160;&#160;&#160;open_file_cache_valid&#160;30s;
&#160;&#160;&#160;&#160;open_file_cache_min_uses&#160;1;

&#160;&#160;&#160;&#160;#将默认站点指向到&#160;/usr/html
&#160;&#160;&#160;&#160;server&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;listen&#160;&#160;&#160;&#160;&#160;&#160;80;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;server_name&#160;_;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;location&#160;/&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;root&#160;&#160;&#160;&#160;&#160;/usr/html;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;index&#160;&#160;&#160;&#160;index.html&#160;index.htm;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;#将服务器&#160;8899&#160;端口的所有访问指向到&#160;phpMyAdmin
&#160;&#160;&#160;&#160;server&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;listen&#160;&#160;&#160;&#160;&#160;&#160;8899;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;server_name&#160;_;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;location&#160;/&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;root&#160;&#160;&#160;&#160;&#160;/usr/html/phpmyadmin;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;index&#160;&#160;&#160;&#160;index.html&#160;index.htm&#160;index.php;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#配置&#160;PHP&#160;解析
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;location&#160;~&#160;\.php$&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;root&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;/usr/html/phpmyadmin;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;fastcgi_pass&#160;&#160;&#160;127.0.0.1:9000;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;fastcgi_index&#160;&#160;index.php;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;fastcgi_param&#160;&#160;SCRIPT_FILENAME&#160;&#160;$document_root$fastcgi_script_name;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;include&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;fastcgi_params;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;#调用其他虚拟空间独立配置文件
&#160;&#160;&#160;&#160;include&#160;/etc/nginx/conf/vhost/*.conf;
}
]]></description>
			<content:encoded><![CDATA[<p><span style="color: #808080;">#设置&nbsp;nginx&nbsp;所属用户</span><br />
user&nbsp;http;<br />
<span style="color: #808080;">#设置&nbsp;nginx&nbsp;运行的进程数</span><br />
worker_processes&nbsp;&nbsp;8;<br />
worker_rlimit_nofile&nbsp;10240;</p>
<p>events&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080;">#启用&nbsp;epoll&nbsp;优化网络</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;use&nbsp;epoll;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080;">#设置最大连接数</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;worker_connections&nbsp;&nbsp;1024;<br />
}</p>
<p>http&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mime.types;<br />
&nbsp;&nbsp;&nbsp;&nbsp;default_type&nbsp;&nbsp;application/octet-stream;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080;">#启用&nbsp;sendfile&nbsp;函数输出</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;sendfile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080;">#设置超时时间</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;keepalive_timeout&nbsp;&nbsp;65;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080;">#隐藏&nbsp;nginx&nbsp;版本号</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;server_tokens&nbsp;off;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080;">#配置&nbsp;GZIP</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;gzip&nbsp;&nbsp;on;<br />
&nbsp;&nbsp;&nbsp;&nbsp;gzip_min_length&nbsp;1k;<br />
&nbsp;&nbsp;&nbsp;&nbsp;gzip_buffers&nbsp;4&nbsp;16k;<br />
&nbsp;&nbsp;&nbsp;&nbsp;gzip_http_version&nbsp;1.1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;gzip_comp_level&nbsp;2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;gzip_types&nbsp;text/plain&nbsp;application/x-javascript&nbsp;text/css&nbsp;application/xml;<br />
&nbsp;&nbsp;&nbsp;&nbsp;gzip_vary&nbsp;on;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080;">#配置数据缓冲以及文件缓存</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;client_header_buffer_size&nbsp;4k;<br />
&nbsp;&nbsp;&nbsp;&nbsp;client_max_body_size&nbsp;8m;<br />
&nbsp;&nbsp;&nbsp;&nbsp;open_file_cache&nbsp;max=1024&nbsp;inactive=20s;<br />
&nbsp;&nbsp;&nbsp;&nbsp;open_file_cache_valid&nbsp;30s;<br />
&nbsp;&nbsp;&nbsp;&nbsp;open_file_cache_min_uses&nbsp;1;</p>
<p><span id="more-48"></span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080;">#将默认站点指向到&nbsp;/usr/html</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;server&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server_name&nbsp;_;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location&nbsp;/&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/html;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;&nbsp;&nbsp;&nbsp;index.html&nbsp;index.htm;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080;">#将服务器&nbsp;8899&nbsp;端口的所有访问指向到&nbsp;phpMyAdmin</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;server&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8899;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server_name&nbsp;_;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location&nbsp;/&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/html/phpmyadmin;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;&nbsp;&nbsp;&nbsp;index.html&nbsp;index.htm&nbsp;index.php;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080;">#配置&nbsp;PHP&nbsp;解析</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;location&nbsp;~&nbsp;\.php$&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/html/phpmyadmin;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_pass&nbsp;&nbsp;&nbsp;127.0.0.1:9000;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_index&nbsp;&nbsp;index.php;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_param&nbsp;&nbsp;SCRIPT_FILENAME&nbsp;&nbsp;$document_root$fastcgi_script_name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fastcgi_params;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #808080;">#调用其他虚拟空间独立配置文件</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;/etc/nginx/conf/vhost/*.conf;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.magki.com/blog/2010/10/a-simple-conf-file-of-nginx.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linux 下的游戏乐趣 Mame 模拟器</title>
		<link>http://www.magki.com/blog/2010/10/play-by-mame-emulation-in-linux.html</link>
		<comments>http://www.magki.com/blog/2010/10/play-by-mame-emulation-in-linux.html#comments</comments>
		<pubDate>Sun, 17 Oct 2010 14:05:18 +0000</pubDate>
		<dc:creator>Magki</dc:creator>
				<category><![CDATA[Day After Day]]></category>

		<guid isPermaLink="false">http://www.magki.com/blog/?p=47</guid>
		<description><![CDATA[很多人拒绝 linux 的原因之一就是缺少游戏——虽然 linux 不是一个游戏机系统，不过闲暇之余找点乐子还是有些许必要的，我就是如此。于是，最近鼓捣起 linux 下的 Mame 模拟器来了。
linux 下比较出名的模拟器就是 sdlmame 了，至今一直在更新维护。我用的 archlinux 系统的软件仓库里就能下载到。不过 sdlmame 是命令行操作的，不是很方便，这里推荐两款前端 gmameui 和 mamepgui。
有了前端还得找个地方下游戏 roms，这里强烈推荐去 http://www.gametronik.com/site/emulation/mame/ 因为这里的所有 roms 文件都是紧跟着最新版的 mame 进行更新的。之前我在国内的 roms 站下了很多游戏都无法玩，最后是在这个站上更新了才好。
]]></description>
			<content:encoded><![CDATA[<p>很多人拒绝 linux 的原因之一就是缺少游戏——虽然 linux 不是一个游戏机系统，不过闲暇之余找点乐子还是有些许必要的，我就是如此。于是，最近鼓捣起 linux 下的 Mame 模拟器来了。</p>
<p>linux 下比较出名的模拟器就是 sdlmame 了，至今一直在更新维护。我用的 archlinux 系统的软件仓库里就能下载到。不过 sdlmame 是命令行操作的，不是很方便，这里推荐两款前端 gmameui 和 mamepgui。</p>
<p>有了前端还得找个地方下游戏 roms，这里强烈推荐去 http://www.gametronik.com/site/emulation/mame/ 因为这里的所有 roms 文件都是紧跟着最新版的 mame 进行更新的。之前我在国内的 roms 站下了很多游戏都无法玩，最后是在这个站上更新了才好。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.magki.com/blog/2010/10/play-by-mame-emulation-in-linux.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>在 WIN7 上安装 IE9 beta</title>
		<link>http://www.magki.com/blog/2010/09/install-ie9-beta-in-win7.html</link>
		<comments>http://www.magki.com/blog/2010/09/install-ie9-beta-in-win7.html#comments</comments>
		<pubDate>Thu, 16 Sep 2010 05:51:55 +0000</pubDate>
		<dc:creator>Magki</dc:creator>
				<category><![CDATA[Day After Day]]></category>

		<guid isPermaLink="false">http://www.magki.com/blog/?p=46</guid>
		<description><![CDATA[粗看标题一定会奇怪。IE9 beta 不是支持 WIN7 么？这个有什么好讨论的。但事实上应该有很多朋友跟我一样，点击 IE9 的安装文件老提示需要更新。然则在指定页面上下载的那几个补丁有三个是无法安装的。微软搞错拉，呵呵。跟我有同样问题的同学可以下载下面地址里的压缩包，里面就有你漏装导致无法安装IE9的补丁，把里面的补丁都装一次就好拉。
http://u.115.com/file/f694a9ce24
话说回来。IE9 确实挺不错。期待正式版。
]]></description>
			<content:encoded><![CDATA[<p>粗看标题一定会奇怪。IE9 beta 不是支持 WIN7 么？这个有什么好讨论的。但事实上应该有很多朋友跟我一样，点击 IE9 的安装文件老提示需要更新。然则在指定页面上下载的那几个补丁有三个是无法安装的。微软搞错拉，呵呵。跟我有同样问题的同学可以下载下面地址里的压缩包，里面就有你漏装导致无法安装IE9的补丁，把里面的补丁都装一次就好拉。</p>
<p>http://u.115.com/file/f694a9ce24</p>
<p>话说回来。IE9 确实挺不错。期待正式版。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.magki.com/blog/2010/09/install-ie9-beta-in-win7.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>近期配置 linux 服务器的一点备注</title>
		<link>http://www.magki.com/blog/2010/09/some-note-about-linux-server.html</link>
		<comments>http://www.magki.com/blog/2010/09/some-note-about-linux-server.html#comments</comments>
		<pubDate>Fri, 10 Sep 2010 01:10:17 +0000</pubDate>
		<dc:creator>Magki</dc:creator>
				<category><![CDATA[L.A.M.P]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.magki.com/blog/?p=45</guid>
		<description><![CDATA[一、PHP.ini
某个客户我配置好以后反映无法上传文件，具体表现为 $_FILES['abc']['tmp_name'] 为空。判断是没有临时文件夹的权限造成的。几番检查最后发现原来是 php.ini 中的 open_basedir 没有把 PHP 默认存放临时文件用的 /tmp/ 文件夹添加进去，补上后问题解决。
二、sed 命令
在编写一个用于开设新站点的 shell 脚本时，碰到使用 sed 命令修改配置文件的命令行始终无法调用脚本变量的问题。最终在网上偶然看到原因，原来要用双引号。
sed -i "s/newdomain/${2}/g" /etc/nginx/conf/vhost/$1.conf
三、用于开设新站点用的 shell 脚本。（初学练手，待完善）


#!/bin/sh
if [ -z $1 ]; then
&#160;&#160;&#160;&#160;echo "no folder name!"
&#160;&#160;&#160;&#160;exit 0
fi
if [ -z $2 ]; then
&#160;&#160;&#160;&#160;echo "no domain!"
&#160;&#160;&#160;&#160;exit 0
fi
if [ -z $3 ]; then
&#160;&#160;&#160;&#160;echo "no ftp password!"
&#160;&#160;&#160;&#160;exit 0
fi
if [ -f /srv/http/$1 ]; then
&#160;&#160;&#160;&#160;echo "The $1 has [...]]]></description>
			<content:encoded><![CDATA[<p>一、PHP.ini</p>
<p>某个客户我配置好以后反映无法上传文件，具体表现为 $_FILES['abc']['tmp_name'] 为空。判断是没有临时文件夹的权限造成的。几番检查最后发现原来是 php.ini 中的 open_basedir 没有把 PHP 默认存放临时文件用的 /tmp/ 文件夹添加进去，补上后问题解决。</p>
<p>二、sed 命令</p>
<p>在编写一个用于开设新站点的 shell 脚本时，碰到使用 sed 命令修改配置文件的命令行始终无法调用脚本变量的问题。最终在网上偶然看到原因，原来要用双引号。<br />
<span style="color: #ff0000;">sed -i "s/newdomain/${2}/g" /etc/nginx/conf/vhost/$1.conf</span></p>
<p>三、用于开设新站点用的 shell 脚本。（初学练手，待完善）<br />
<span id="more-45"></span></p>
<blockquote><p>
#!/bin/sh</p>
<p>if [ -z $1 ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "no folder name!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit 0<br />
fi</p>
<p>if [ -z $2 ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "no domain!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit 0<br />
fi</p>
<p>if [ -z $3 ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "no ftp password!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit 0<br />
fi</p>
<p>if [ -f /srv/http/$1 ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo "The $1 has exists!"<br />
&nbsp;&nbsp;&nbsp;&nbsp;exit 0<br />
fi</p>
<p># for web<br />
mkdir /srv/http/$1<br />
chown -R http:http /srv/http/$1<br />
chmod -R 777 /srv/http/$1<br />
cp /etc/nginx/conf/vhost.conf /etc/nginx/conf/vhost/$1.conf<br />
sed -i "s/vhost/${1}/g" /etc/nginx/conf/vhost/$1.conf<br />
sed -i "s/newdomain/${2}/g" /etc/nginx/conf/vhost/$1.conf<br />
echo "<?php echo 'hello world!'; ?>" > /srv/http/$1/index.php</p>
<p># for ftp<br />
echo $1 >> /etc/vsftpd.txt<br />
echo $3 >> /etc/vsftpd.txt<br />
db_load -T -t hash -f /etc/vsftpd.txt /etc/vsftpd_login.db<br />
echo "local_root=/srv/http/$1" > /etc/vsftpd_user_conf/$1</p>
<p># restart all<br />
/etc/rc.d/nginx restart<br />
/etc/rc.d/vsftpd restart
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.magki.com/blog/2010/09/some-note-about-linux-server.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个简单的 JS 倒计时代码</title>
		<link>http://www.magki.com/blog/2010/06/a-simple-countdown-of-js.html</link>
		<comments>http://www.magki.com/blog/2010/06/a-simple-countdown-of-js.html#comments</comments>
		<pubDate>Mon, 21 Jun 2010 00:57:23 +0000</pubDate>
		<dc:creator>Magki</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.magki.com/blog/?p=44</guid>
		<description><![CDATA[公司的项目需要一个可以任意定时同时多次使用的倒计时，网上找了下都偏复杂，想了下自己整理了一个很简单的。
用法很简单，两个参数，第一个参数就是终止时间的时间戳，PHP 中 time() 输出的格式标准。二个参数是显示倒计时的 HTML 标签元素 ID 后缀。
function&#160;GetRTime(EndTime,&#160;id){
&#160;&#160;&#160;var&#160;EndTime&#160;=&#160;new&#160;Date(EndTime&#160;*&#160;1000);
&#160;&#160;&#160;function&#160;run(){
&#160;&#160;&#160;&#160;&#160;&#160;var&#160;StepTime&#160;=&#160;new&#160;Date();
&#160;&#160;&#160;&#160;&#160;&#160;var&#160;runTime=EndTime.getTime()&#160;-&#160;StepTime;
&#160;&#160;&#160;&#160;&#160;&#160;var&#160;nD=Math.floor(runTime/(1000&#160;*&#160;60&#160;*&#160;60&#160;*&#160;24));
&#160;&#160;&#160;&#160;&#160;&#160;var&#160;nH=Math.floor(runTime/(1000*60*60))&#160;%&#160;24;
&#160;&#160;&#160;&#160;&#160;&#160;var&#160;nM=Math.floor(runTime/(1000*60))&#160;%&#160;60;
&#160;&#160;&#160;&#160;&#160;&#160;var&#160;nS=Math.floor(runTime/1000)&#160;%&#160;60;
&#160;&#160;&#160;&#160;&#160;&#160;var&#160;nMS=Math.floor(runTime/100)&#160;%&#160;10;
&#160;&#160;&#160;&#160;&#160;&#160;var&#160;nNS=Math.floor(runTime/10)&#160;%&#160;10;
&#160;&#160;&#160;&#160;&#160;&#160;if(nD>&#160;0){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document.getElementById("RemainD"+id).innerHTML&#160;=&#160;nD;
&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document.getElementById("RemainD"+id).innerHTML&#160;=&#160;0;
&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;if(nH>&#160;0){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document.getElementById("RemainH"+id).innerHTML&#160;=&#160;nH;
&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document.getElementById("RemainH"+id).innerHTML&#160;=&#160;0;
&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;if(nM>&#160;0){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document.getElementById("RemainM"+id).innerHTML&#160;=&#160;nM;
&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document.getElementById("RemainM"+id).innerHTML&#160;=&#160;0;
&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;if(nS>&#160;0){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document.getElementById("RemainS"+id).innerHTML&#160;=&#160;nS;
&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document.getElementById("RemainS"+id).innerHTML&#160;=&#160;0;
&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;if(nMS>&#160;0){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document.getElementById("RemainMS"+id).innerHTML&#160;=&#160;nMS;
&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document.getElementById("RemainMS"+id).innerHTML&#160;=&#160;0;
&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;if(nNS>&#160;0){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document.getElementById("RemainNS"+id).innerHTML&#160;=&#160;nNS;
&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;document.getElementById("RemainNS"+id).innerHTML&#160;=&#160;0;
&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;setTimeout(run,10);
&#160;&#160;&#160;}
&#160;&#160;&#160;setTimeout(run,10);
}
]]></description>
			<content:encoded><![CDATA[<p>公司的项目需要一个可以任意定时同时多次使用的倒计时，网上找了下都偏复杂，想了下自己整理了一个很简单的。</p>
<p>用法很简单，两个参数，第一个参数就是终止时间的时间戳，PHP 中 time() 输出的格式标准。二个参数是显示倒计时的 HTML 标签元素 ID 后缀。</p>
<blockquote><p>function&nbsp;GetRTime(EndTime,&nbsp;id){<br />
&nbsp;&nbsp;&nbsp;var&nbsp;EndTime&nbsp;=&nbsp;new&nbsp;Date(EndTime&nbsp;*&nbsp;1000);</p>
<p>&nbsp;&nbsp;&nbsp;function&nbsp;run(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;StepTime&nbsp;=&nbsp;new&nbsp;Date();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;runTime=EndTime.getTime()&nbsp;-&nbsp;StepTime;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;nD=Math.floor(runTime/(1000&nbsp;*&nbsp;60&nbsp;*&nbsp;60&nbsp;*&nbsp;24));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;nH=Math.floor(runTime/(1000*60*60))&nbsp;%&nbsp;24;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;nM=Math.floor(runTime/(1000*60))&nbsp;%&nbsp;60;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;nS=Math.floor(runTime/1000)&nbsp;%&nbsp;60;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;nMS=Math.floor(runTime/100)&nbsp;%&nbsp;10;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;nNS=Math.floor(runTime/10)&nbsp;%&nbsp;10;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(nD>&nbsp;0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("RemainD"+id).innerHTML&nbsp;=&nbsp;nD;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("RemainD"+id).innerHTML&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(nH>&nbsp;0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("RemainH"+id).innerHTML&nbsp;=&nbsp;nH;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("RemainH"+id).innerHTML&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(nM>&nbsp;0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("RemainM"+id).innerHTML&nbsp;=&nbsp;nM;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("RemainM"+id).innerHTML&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(nS>&nbsp;0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("RemainS"+id).innerHTML&nbsp;=&nbsp;nS;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("RemainS"+id).innerHTML&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(nMS>&nbsp;0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("RemainMS"+id).innerHTML&nbsp;=&nbsp;nMS;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("RemainMS"+id).innerHTML&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(nNS>&nbsp;0){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("RemainNS"+id).innerHTML&nbsp;=&nbsp;nNS;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("RemainNS"+id).innerHTML&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setTimeout(run,10);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;setTimeout(run,10);<br />
}</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.magki.com/blog/2010/06/a-simple-countdown-of-js.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

