<?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>raptium&#039;s &#187; 瞎折腾</title>
	<atom:link href="http://archive.raptium.net/category/messed-up/feed/" rel="self" type="application/rss+xml" />
	<link>http://archive.raptium.net</link>
	<description>raptium&#039;s another weblog</description>
	<lastBuildDate>Fri, 15 Jul 2011 07:51:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<atom:link rel='hub' href='http://archive.raptium.net/?pushpress=hub'/>
		<item>
		<title>nginx php 错误配置导致安全漏洞</title>
		<link>http://archive.raptium.net/2011/04/17/check-your-nginx-php-configuration/</link>
		<comments>http://archive.raptium.net/2011/04/17/check-your-nginx-php-configuration/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 15:42:36 +0000</pubDate>
		<dc:creator>raptium</dc:creator>
				<category><![CDATA[瞎折腾]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.raptium.net/?p=509</guid>
		<description><![CDATA[后知后觉发现了此文 Setting up PHP-FastCGI and nginx? Don’t trust the tutorials: check your configuration! 基本上是说，网上的大部分 nginx + php 配置教程中有一个错误，导致 php 会试图执行非 php 文件，甚至是用户上传的图片。 事实上看到此漏洞的描述我已经立刻想到问题之所在了，的确，之前我写的那篇配置笔记也是有此问题的。基本原理就是 nginx 配置中有这么一段 location ~ .*.php5?$ { include fastcgi_params; root /var/host/phpMyAdmin; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php_fcgi.sock; fastcgi_index index.php; } 凡是以 .php 或者 .php5 结尾的 uri 都会被交给 php 处理，于是类似于 user.jpg/aaa.php 也会交给 php 处理，于是 user.jpg [...]]]></description>
			<content:encoded><![CDATA[<p>后知后觉发现了此文 <a href="https://nealpoole.com/blog/2011/04/setting-up-php-fastcgi-and-nginx-dont-trust-the-tutorials-check-your-configuration/">Setting up PHP-FastCGI and nginx? Don’t trust the tutorials: check your configuration!</a> 基本上是说，网上的大部分 nginx + php 配置教程中有一个错误，导致 php 会试图执行非 php 文件，甚至是用户上传的图片。</p>
<p>事实上看到此漏洞的描述我已经立刻想到问题之所在了，的确，之前我写的那篇<a href="/2009/05/01/centos-nginx-php-config-howto/">配置笔记</a>也是有此问题的。基本原理就是 nginx 配置中有这么一段</p>
<pre>location ~ .*.php5?$ {
        include fastcgi_params;
        root /var/host/phpMyAdmin;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/var/run/php_fcgi.sock;
        fastcgi_index index.php;
    }</pre>
<p>凡是以 .php 或者 .php5 结尾的 uri 都会被交给 php 处理，于是类似于 user.jpg/aaa.php 也会交给 php 处理，于是 user.jpg 就被当成 php 代码给执行了。</p>
<p>解决此问题的方法有好几种，codex.wordpress.com 上面提供的一种方式是如下修改 nginx 中有关 php 的配置。不过如果 nginx 和 php 不运行在同一台机器上时，此方法无效。</p>
<pre>location ~ \.php$ {
	# Zero-day exploit defense.
	# http://forum.nginx.org/read.php?2,88845,page=3
	# Won't work properly (404 error) if the file is not stored on this server, which is entirely possible with php-fpm/php-fcgi.
	# Comment the 'try_files' line out if you set up php-fpm/php-fcgi on another machine.  And then cross your fingers that you won't get hacked.
	try_files $uri =404;

	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	include fastcgi_params;
	fastcgi_index index.php;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#	fastcgi_intercept_errors on;
	fastcgi_pass php;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://archive.raptium.net/2011/04/17/check-your-nginx-php-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Envy 14 上手记</title>
		<link>http://archive.raptium.net/2010/09/06/envy-14-short-review/</link>
		<comments>http://archive.raptium.net/2010/09/06/envy-14-short-review/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 08:53:47 +0000</pubDate>
		<dc:creator>raptium</dc:creator>
				<category><![CDATA[唠唠叨叨]]></category>
		<category><![CDATA[瞎折腾]]></category>

		<guid isPermaLink="false">http://www.raptium.net/?p=479</guid>
		<description><![CDATA[上个礼拜订的 HP 学生机 Envy 14 今天终于拿到了，具体型号是 14-1016tx。拿到新机器欣喜之余我觉得还是可以写个上手小记的。 -- SimpleFlickr Content -- (Please visit the original post page to view the details.) 首先包装很漂亮，好像今年惠普的大部分机型都是黑色的大纸盒包装，要比往常牛皮纸纸箱看起来感觉好许多。至于 Envy 就又有点不同，因为它的内置音响是 Beats 的，所以大黑盒子开出来，里面又是个黑盒子，上面还套着个印着 Beats 纸环。黑底上飘着一点红，这个我觉得相当之骚…… 由于今天我是第一个买了 Envy 去提货的，那些工作人员好像都没开过 Envy 的盒，所以开盒验货的时候，不由得赞叹起来，看来 Envy 也不是瞎起的名字…… 以至于我的感觉似乎有些太好了。 第一次开机要选语言，选完之后会自动装一堆东西才能进系统。原本在网上看评测的时候，看到说 HP 在这台机上预装的软件不是太多的。可是我点开开始菜单的时候我发现他们错了，还是一堆我一辈子都用不到的东西。当然也有我原本就想下载安装的，比如 Fences，竟然装了个 HP OEM 版进来，这个值得表扬一下。 把不要的软件卸载完，第一次重启的时候，发现进入了一个叫做 QuickWeb 的东西。可以上网，聊天，听音乐。研究了一下，基本鉴定是一个 HP 定制的 Linux。浏览器是 Firefox 改的，聊天工具是 Pidgin 改的，音乐播放器不明。这个东西还算有点用，至少比进 Windows 要快一点，如果只是想开机看一下邮件或者偷个菜的话，也的确更加方便，而且应当更加省电。 [...]]]></description>
			<content:encoded><![CDATA[<p>上个礼拜订的 HP 学生机 Envy 14 今天终于拿到了，具体型号是 14-1016tx。拿到新机器欣喜之余我觉得还是可以写个上手小记的。</p>
<p>
<strong>-- SimpleFlickr Content --</strong><br />
(Please visit the original post page to view the details.)
</p>
<p>首先包装很漂亮，好像今年惠普的大部分机型都是黑色的大纸盒包装，要比往常牛皮纸纸箱看起来感觉好许多。至于 Envy 就又有点不同，因为它的内置音响是 Beats 的，所以大黑盒子开出来，里面又是个黑盒子，上面还套着个印着 Beats 纸环。黑底上飘着一点红，这个我觉得相当之骚…… 由于今天我是第一个买了 Envy 去提货的，那些工作人员好像都没开过 Envy 的盒，所以开盒验货的时候，不由得赞叹起来，看来 Envy 也不是瞎起的名字…… 以至于我的感觉似乎有些太好了。</p>
<p>第一次开机要选语言，选完之后会自动装一堆东西才能进系统。原本在网上看评测的时候，看到说 HP 在这台机上预装的软件不是太多的。可是我点开开始菜单的时候我发现他们错了，还是一堆我一辈子都用不到的东西。当然也有我原本就想下载安装的，比如 Fences，竟然装了个 HP OEM 版进来，这个值得表扬一下。</p>
<p>把不要的软件卸载完，第一次重启的时候，发现进入了一个叫做 QuickWeb 的东西。可以上网，聊天，听音乐。研究了一下，基本鉴定是一个 HP 定制的 Linux。浏览器是 Firefox 改的，聊天工具是 Pidgin 改的，音乐播放器不明。这个东西还算有点用，至少比进 Windows 要快一点，如果只是想开机看一下邮件或者偷个菜的话，也的确更加方便，而且应当更加省电。</p>
<p>进 Windows 装系统更新，一段时间下来觉得发热还是挺厉害的，我都没有开任何需求高的游戏，仅仅是 CPU 发热就能感觉出来。右手边掌托上是有些热的，右上可能是显卡位置，也比较热。这么估计不会比我旧的 Macbook Pro 好到哪里去，唯一的进步就是，这次是右手边热，左手边不热，和 Macbook Pro 正好相反。这样其实已经好了很多，因为玩很多游戏都时候都是左手放 asdf 位，右手那鼠标，如果左手边热的话很容易出手汗…… </p>
<p>[未完待续] </p>
]]></content:encoded>
			<wfw:commentRss>http://archive.raptium.net/2010/09/06/envy-14-short-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>人人克隆关系网？</title>
		<link>http://archive.raptium.net/2010/04/29/relationship-clone-in-sns/</link>
		<comments>http://archive.raptium.net/2010/04/29/relationship-clone-in-sns/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 22:17:08 +0000</pubDate>
		<dc:creator>raptium</dc:creator>
				<category><![CDATA[唠唠叨叨]]></category>
		<category><![CDATA[瞎折腾]]></category>

		<guid isPermaLink="false">http://www.raptium.net/?p=462</guid>
		<description><![CDATA[今天 Ice 在人人网偶然发现了一个夏润喆的小号，此号有不少好友，都是小号。这些小号又有不少其他好友，也大都是小号。这些号的共同点为：真名，真头像（如果有的话），互相加了好友，不活跃，无日志，少状态。注册日期无法判定，但是 ID 都是7字开头，应该在最近一年内注册。于是我们觉得这可能是一个阴谋，有人在暗地里经营着一张克隆关系网…… 我们无从得知克隆关系网的目的，然而其带来的安全隐患是巨大的，倘若此关系网规模再增大，每个人的信息再补充完整一些，就能达到以假乱真的效果，从而引发人人网信任危机，甚至其他更严重的问题。 在这里整理了少量克隆帐号，欢迎补充，如果有加错的也请提醒修正。]]></description>
			<content:encoded><![CDATA[<p>今天 Ice 在<a href="http://www.renren.com">人人网</a>偶然发现了一个夏润喆的小号，此号有不少好友，都是小号。这些小号又有不少其他好友，也大都是小号。这些号的共同点为：真名，真头像（如果有的话），互相加了好友，不活跃，无日志，少状态。注册日期无法判定，但是 ID 都是7字开头，应该在最近一年内注册。于是我们觉得这可能是一个阴谋，有人在暗地里经营着一张克隆关系网……</p>
<p>我们无从得知克隆关系网的目的，然而其带来的安全隐患是巨大的，倘若此关系网规模再增大，每个人的信息再补充完整一些，就能达到以假乱真的效果，从而引发人人网信任危机，甚至其他更严重的问题。</p>
<p>在<a href="http://spreadsheets.google.com/pub?key=0AhInt93ERSDMdDVMajBkWWI5NG5pZG1PYzNWSk5WSFE&#038;hl=en&#038;single=true&#038;gid=0&#038;output=html">这里</a>整理了少量克隆帐号，欢迎补充，如果有加错的也请提醒修正。</p>
]]></content:encoded>
			<wfw:commentRss>http://archive.raptium.net/2010/04/29/relationship-clone-in-sns/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>雅加達歷險記 &#8211; 上篇</title>
		<link>http://archive.raptium.net/2010/04/06/i-am-going-to-jakart/</link>
		<comments>http://archive.raptium.net/2010/04/06/i-am-going-to-jakart/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 06:11:53 +0000</pubDate>
		<dc:creator>raptium</dc:creator>
				<category><![CDATA[Life is Short]]></category>
		<category><![CDATA[瞎折腾]]></category>
		<category><![CDATA[香港]]></category>

		<guid isPermaLink="false">http://www.raptium.net/?p=457</guid>
		<description><![CDATA[今日抵港入關語錄 ──你是去美國嗎？ ──不是，我去印尼。 ──印尼哪裡？ ──雅加達。 ──簽證呢？ ──來不及辦了，落地簽吧。 ──什麼時候的飛機？ ──明天下午3點50。 …… 五日後應當還有下篇，敬請期待。]]></description>
			<content:encoded><![CDATA[<p><em>今日抵港入關語錄</em></p>
<p>──你是去美國嗎？<br />
──不是，我去印尼。<br />
──印尼哪裡？<br />
──雅加達。<br />
──簽證呢？<br />
──來不及辦了，落地簽吧。<br />
──什麼時候的飛機？<br />
──明天下午3點50。<br />
……</p>
<p>五日後應當還有下篇，敬請期待。</p>
]]></content:encoded>
			<wfw:commentRss>http://archive.raptium.net/2010/04/06/i-am-going-to-jakart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>好久沒看到這麼有趣的東西了</title>
		<link>http://archive.raptium.net/2010/03/15/long-time-no-see-scholar-zhang/</link>
		<comments>http://archive.raptium.net/2010/03/15/long-time-no-see-scholar-zhang/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 15:08:04 +0000</pubDate>
		<dc:creator>raptium</dc:creator>
				<category><![CDATA[唠唠叨叨]]></category>
		<category><![CDATA[瞎折腾]]></category>
		<category><![CDATA[gfw]]></category>

		<guid isPermaLink="false">http://www.raptium.net/?p=453</guid>
		<description><![CDATA[很久沒有更新 Blog 的原因之一是，一直都覺得挺無聊的（當然主要原因還是我懶）。 今日在 Google Reader 上見到 Jackie Chen 同學分享的“西廂計劃”原理小解一文， 客戶端張生和服務器端崔鶯鶯的故事本就非常有趣，可是接著讀下去看到西廂計劃的實際內容時，我才真的意識到：好久沒看到這麼有趣的東西了啊～ 西廂計劃和常見的穿牆方式不同，既不走彎路、遠路，也不須加密數據，而是利用 GFW 自身缺陷和 TCP/IP 協議的某些特性來實現了直連免過濾。西廂計劃告訴我們，學好 IEG3310 是一件很有意義的事情，看似無聊的三次握手也可能握得很精彩。 忘記曾經一次又一次看到 Connection Reset 頁面時的沮喪心情，向西廂計劃的貢獻者們致敬！ ps. GFW 一要審查過濾，二不能影響性能，這兩點早就決定了它的命運。]]></description>
			<content:encoded><![CDATA[<p>很久沒有更新 Blog 的原因之一是，一直都覺得挺無聊的（當然主要原因還是我懶）。</p>
<p>今日在 Google Reader 上見到 Jackie Chen 同學分享的<a href="http://blog.youxu.info/2010/03/14/west-chamber/">“西廂計劃”原理小解</a>一文， 客戶端張生和服務器端崔鶯鶯的故事本就非常有趣，可是接著讀下去看到西廂計劃的實際內容時，我才真的意識到：好久沒看到這麼有趣的東西了啊～</p>
<p><a href="http://code.google.com/p/scholarzhang/">西廂計劃</a>和常見的穿牆方式不同，既不走彎路、遠路，也不須加密數據，而是利用 GFW 自身缺陷和 TCP/IP 協議的某些特性來實現了直連免過濾。西廂計劃告訴我們，學好 IEG3310 是一件很有意義的事情，看似無聊的三次握手也可能握得很精彩。</p>
<p>忘記曾經一次又一次看到 Connection Reset 頁面時的沮喪心情，向西廂計劃的貢獻者們致敬！<span id="more-453"></span></p>
<p>ps.<br />
GFW 一要審查過濾，二不能影響性能，這兩點早就決定了它的命運。</p>
]]></content:encoded>
			<wfw:commentRss>http://archive.raptium.net/2010/03/15/long-time-no-see-scholar-zhang/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>协同翻译工具之阴谋论</title>
		<link>http://archive.raptium.net/2009/06/09/is-google-translato-toolkit-a-plot/</link>
		<comments>http://archive.raptium.net/2009/06/09/is-google-translato-toolkit-a-plot/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 03:18:10 +0000</pubDate>
		<dc:creator>raptium</dc:creator>
				<category><![CDATA[唠唠叨叨]]></category>
		<category><![CDATA[瞎折腾]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.raptium.net/?p=416</guid>
		<description><![CDATA[听说 Google 又有新服务推出，是一个翻译工具，叫做 Google Translator Toolkit。推出的似乎比较低调，看域名也不像是一个独立的新产品，可以算作 Google Translate 的一部分。 我小试了一下，没有太多令人意外的地方：典型的 Google UI 设计——简洁，类似早些时候 Google Docs 的界面；拥有 CAT 软件基本的功能，多语言，自动翻译，词汇表导入……支持的格式也都是常见的那几种。基本的操作，似乎也没有太多可以研究——上传，选择语言，自动翻译，逐词句手工翻译，完成。 然而，这肯定不是全部，菜单上还有一个按钮——Share，这是一个协同翻译工具，你可以把需要翻译的文章和其他人共享，一同翻译，效率自然大大提高。除了共同翻译外，词汇表也可以共享，这又提高了翻译效率。然后，还有，那个叫做 Translation Memory 的东西，Google 给出的解释是 A translation memory (TM) is a database of human translations 这样，人工翻译的结果是可以存入数据库的。再注意到灰色字的提示 If no TM is specified, translated segments are stored in out shared, global TM. 原来，我们协同翻译的工作远比我们所想得更有意义，它们被存入了公共的数据库，凭借着 Google 在数据处理上的超级牛力，这些数据必定大大提高之后的翻译效率。于是，终于有人跳出来说，这，是一个阴谋！看到此文有人评论：翻译的成果竟然给 Google 使用下三滥手段偷了去，然后用来制造翻译产品并从中直接或间接牟利，作为一个专业的翻译，我，感到相当震惊！ 这么想来，这个工具虽然能够提高翻译效率同质量，Google 却做得有点不厚道，默认设置不应该是共享 [...]]]></description>
			<content:encoded><![CDATA[<p>听说 Google 又有新服务推出，是一个翻译工具，叫做 <a href="http://translate.google.com/toolkit">Google Translator Toolkit</a>。推出的似乎比较低调，看域名也不像是一个独立的新产品，可以算作 Google Translate 的一部分。</p>
<p>我小试了一下，没有太多令人意外的地方：典型的 Google UI 设计——简洁，类似早些时候 Google Docs 的界面；拥有 <a href="http://en.wikipedia.org/wiki/Computer-assisted_translation">CAT</a> 软件基本的功能，多语言，自动翻译，词汇表导入……支持的格式也都是常见的那几种。基本的操作，似乎也没有太多可以研究——上传，选择语言，自动翻译，逐词句手工翻译，完成。</p>
<p>然而，这肯定不是全部，菜单上还有一个按钮——<strong>Share</strong>，这是一个协同翻译工具，你可以把需要翻译的文章和其他人共享，一同翻译，效率自然大大提高。除了共同翻译外，词汇表也可以共享，这又提高了翻译效率。然后，还有，那个叫做 Translation Memory 的东西，Google 给出的解释是 <em>A translation memory (TM) is a database of human translations</em> 这样，人工翻译的结果是可以存入数据库的。再注意到灰色字的提示 <em>If no TM is specified, translated segments are stored in out shared, global TM.</em> 原来，我们协同翻译的工作远比我们所想得更有意义，它们被存入了公共的数据库，凭借着 Google 在数据处理上的超级牛力，这些数据必定大大提高之后的翻译效率。于是，终于有人跳出来说，这，是一个阴谋！看到<a href="http://googlesystem.blogspot.com/2009/06/google-translator-toolkit.html#c7388000813909388161">此文</a>有人评论：<strong>翻译的成果竟然给 Google 使用下三滥手段偷了去，然后用来制造翻译产品并从中直接或间接牟利，作为一个专业的翻译，我，感到相当震惊！</strong></p>
<p>这么想来，这个工具虽然能够提高翻译效率同质量，Google 却做得有点不厚道，默认设置不应该是共享 Translation Memory 的，毕竟翻译也是人家辛苦劳动的成果，不经意间被利用，难免让人感到不快。</p>
<p>Anyway，作为一个不会翻译的非专业人士，我，愿意围观更多翻译作品的诞生……</p>
]]></content:encoded>
			<wfw:commentRss>http://archive.raptium.net/2009/06/09/is-google-translato-toolkit-a-plot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>它真的不是一个搜索引擎</title>
		<link>http://archive.raptium.net/2009/05/15/its-not-a-search-engine/</link>
		<comments>http://archive.raptium.net/2009/05/15/its-not-a-search-engine/#comments</comments>
		<pubDate>Sat, 16 May 2009 04:06:34 +0000</pubDate>
		<dc:creator>raptium</dc:creator>
				<category><![CDATA[唠唠叨叨]]></category>
		<category><![CDATA[瞎折腾]]></category>
		<category><![CDATA[WolframAlpha]]></category>

		<guid isPermaLink="false">http://www.raptium.net/?p=392</guid>
		<description><![CDATA[Wolfram 推出了一个叫做 WolframAlpha 的东西，之前网上有人把它称之为 Google 的挑战者，一时间得到了众多关注。然而它真的不是一个搜索引擎，它根本不是和 Google 竞争，它做和 Google 完全不同的事情。如果说它和 Google 有什么相似，那么最明显的只是——一个文本框——你输入词句，它给你信息。我没有说那个是搜索框，对，Google 的是搜索框，然而 WolframAlpha 的不是，它的输入框右边是个“=”，这是一个计算知识引擎（Computational Knowledge Engine），你在这里得到的信息，是算出来的。 前天一看到 Wolfram 这个词，就觉得似曾相识，而那个 Logo 更是相当面善，略加搜索才恍然大悟，Mathematica！如果你不知道 Wolfram，你也应该听说 Mathematica，如果你不知道 Mathematica，那么，你总该听说过 MATLAB…… Mathematica 是一个广泛使用的计算机代数系统，拥有强大的数值计算和符号运算能力。 我用过它，在我还是大一的时候，我懒得动手去算微积分作业，Mathematica 告诉了我答案，于是考试的时候我什么都不会，那门课我得了 B-……尽管如此，我还是很喜欢这个软件，虽然其实我不知道怎么用它。 一个数学计算软件摆在眼前，我就觉得有些头脑发热了——虽然我是学工科的，我并没有上很多数学课，而基础的数学我也可能学的不够好。对我来说，那都是些高深的东西，科学？计算？其实那些离我们并非太远，WolframAlpha 这次把一切搬到了网上，透过浏览器，在那个文本框中输入关键字，它用海量的数据和强劲的计算来告诉你想知道的信息。 我花了大概半个小时来玩 WolframAlpha，还没有算正式上线，它显得非常不稳定。不过几次尝试的结果还是让人感到欣喜。输入 integrate x^2 dx from 0 to 1，它会告诉你 x^2dx 从 0 到 1 的定积分是 1/3，还附带一个图，标注了阴影部分来解释；输入 force m=1kg a=1m/s^2，它会告诉你，让质量为1千克的物体产生1米每平方秒的加速度，需要的力是1牛顿；输入 The Chinese University [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wolfram.com/">Wolfram</a> 推出了一个叫做 <a href="http://www.wolframalpha.com">WolframAlpha</a> 的东西，之前网上有人把它称之为 Google 的挑战者，一时间得到了众多关注。然而<strong>它真的不是一个搜索引擎，它根本不是和 Google 竞争，它做和 Google 完全不同的事情</strong>。如果说它和 Google 有什么相似，那么最明显的只是——一个文本框——你输入词句，它给你信息。我没有说那个是搜索框，对，Google 的是搜索框，然而 WolframAlpha 的不是，它的输入框右边是个“=”，这是一个<strong>计算知识引擎</strong>（Computational Knowledge Engine），你在这里得到的信息，是算出来的。</p>
<p>前天一看到 Wolfram 这个词，就觉得似曾相识，而那个 Logo 更是相当面善，略加搜索才恍然大悟，<a href="http://en.wikipedia.org/wiki/Mathematica">Mathematica</a>！如果你不知道 Wolfram，你也应该听说 Mathematica，如果你不知道 Mathematica，那么，你总该听说过 <a href="http://en.wikipedia.org/wiki/MATLAB">MATLAB</a>…… Mathematica 是一个广泛使用的计算机代数系统，拥有强大的数值计算和符号运算能力。 我用过它，在我还是大一的时候，我懒得动手去算微积分作业，Mathematica 告诉了我答案，于是考试的时候我什么都不会，<a href="http://www.math.cuhk.edu.hk/course/mat1010/">那门课</a>我得了 B-……尽管如此，我还是很喜欢这个软件，虽然其实我不知道怎么用它。</p>
<p>一个数学计算软件摆在眼前，我就觉得有些头脑发热了——虽然我是学工科的，我并没有上很多数学课，而基础的数学我也可能学的不够好。对我来说，那都是些高深的东西，科学？计算？其实那些离我们并非太远，WolframAlpha 这次把一切搬到了网上，透过浏览器，在那个文本框中输入关键字，它用海量的数据和强劲的计算来告诉你想知道的信息。</p>
<div class="right inline">
<img src="http://www.raptium.net/wp-content/uploads/2009/05/integrate1.png" alt="integrate x^2 dx from 0 to 1" title="integrate x^2 dx from 0 to 1" class="sided wp-image-403" /></div>
<p>我花了大概半个小时来玩 WolframAlpha，还没有算正式上线，它显得非常不稳定。不过几次尝试的结果还是让人感到欣喜。输入 integrate x^2 dx from 0 to 1，它会告诉你 x^2dx 从 0 到 1 的定积分是 1/3，还附带一个图，标注了阴影部分来解释；输入 force m=1kg a=1m/s^2，它会告诉你，让质量为1千克的物体产生1米每平方秒的加速度，需要的力是1牛顿；输入 The Chinese University of Kong Kong，它会告诉你香港中文大学成立于1963年，大约有1万8千学生，本地生学费6千美元一年，国际生学费1万2千美元一年；输入 mortgage 5% 3 years $100k，它会告诉你，5分利息的按揭贷款10万美元，3年还清的话，每月要还2997美元，最后交了7895美元的利息……输入 D# 会得到什么？哦，五线谱和键盘图，还有 369.994Hz……</p>
<p>由于服务器不稳定，我不能试验太多东西，很多基于 JavaScript 的功能也不能正常工作。我尝试了 Firefox, IE 和 Safari，似乎都是这样，说明并非浏览器兼容性问题。就目前来看，我觉得 WolframAlpha 很好玩，但我不知道将来会是怎样，会不会很有用。它不会改变我依赖 Google 的习惯，如果非要说产生什么影响，我想被影响更多的应该是 Wikipedia，以后有些关于数字和图表的问题，问过 Google 和 Wikipedia 之后，我也许会试试 WolframAlpha。</p>
]]></content:encoded>
			<wfw:commentRss>http://archive.raptium.net/2009/05/15/its-not-a-search-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx 的 wordpress rewrite 规则</title>
		<link>http://archive.raptium.net/2009/05/01/wordpress-rewrite-rule-for-nginx/</link>
		<comments>http://archive.raptium.net/2009/05/01/wordpress-rewrite-rule-for-nginx/#comments</comments>
		<pubDate>Sat, 02 May 2009 06:41:36 +0000</pubDate>
		<dc:creator>raptium</dc:creator>
				<category><![CDATA[瞎折腾]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.raptium.net/?p=374</guid>
		<description><![CDATA[我目前在用的 nginx 设置就是这个，已经包含了 WP Super Cache 的 rewrite rule，大部分内容是我搜来的，很不幸暂时找不到来自哪里了…… 其实网上类似的内容太多了～ server { listen 80; server_name www.example.net; location / { index index.php; root /var/host/wordpress; gzip_static on; if (-f $request_filename) { break; } set $supercache_file ''; set $supercache_uri $request_uri; if ($request_method = POST) { set $supercache_uri ''; } if ($query_string) { set $supercache_uri ''; } if ($http_cookie [...]]]></description>
			<content:encoded><![CDATA[<p>我目前在用的 nginx 设置就是这个，已经包含了 <a href="http://wordpress.org/extend/plugins/wp-super-cache/">WP Super Cache</a> 的 rewrite rule，大部分内容是我搜来的，很不幸暂时找不到来自哪里了…… 其实网上类似的内容太多了～</p>
<pre>server {
  listen 80;
  server_name www.example.net;

  location / {
    index index.php;
    root /var/host/wordpress;
    gzip_static on;

    if (-f $request_filename) {
      break;
    }

    set $supercache_file '';
    set $supercache_uri $request_uri;

    if ($request_method = POST) {
      set $supercache_uri '';
    }

    if ($query_string) {
      set $supercache_uri '';
    }

    if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
      set $supercache_uri '';
    }

    if ($supercache_uri ~ ^(.+)$) {
      set $supercache_file /wp-content/cache/supercache/$http_host/$1index.html;
    }

    if (-f $document_root$supercache_file) {
      rewrite ^(.*)$ $supercache_file break;
    }

    if (!-e $request_filename) {
      rewrite . /index.php last;
    }
  }

  location ~ .*.php5?$ {
    include fastcgi_params;
    root /var/host/wordpress;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/var/run/php_fcgi.sock;
    fastcgi_index index.php;
  }
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://archive.raptium.net/2009/05/01/wordpress-rewrite-rule-for-nginx/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[配置笔记]CentOS + nginx + PHP</title>
		<link>http://archive.raptium.net/2009/05/01/centos-nginx-php-config-howto/</link>
		<comments>http://archive.raptium.net/2009/05/01/centos-nginx-php-config-howto/#comments</comments>
		<pubDate>Fri, 01 May 2009 17:51:07 +0000</pubDate>
		<dc:creator>raptium</dc:creator>
				<category><![CDATA[瞎折腾]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.raptium.net/?p=345</guid>
		<description><![CDATA[之前的这篇文章似乎是挖了个坑一直没填，然而每每出现这种情况的时候，都会发现还偏偏总有人通过 Google 搜索过来……一定让不少人失望了，真是过意不去～于是这次重新写一篇，但愿能把坑填上…… 和上次略有不同，这次 Linux 发行版是用的 CentOS，因为最近一段时间来其实我接触最多的还是 RHEL，所以就不写 Ubuntu 了。MySQL 也不在本文叙述范围之内，我实际应用的时候是直接 yum install mysql-server 装的，没有什么好说的。 nginx 用了 0.7.x 开发版。php 当然是通过 fastcgi 运行，不过没有用从 lighttpd 里分离出来的 spawn-fcgi，而是用了 php-fpm 这个补丁。 编译安装 nginx 用 yum 安装依赖包 yum install gcc openssl-devel pcre-devel zlib-devel 下载最新版的 nginx，并解压缩。 cd /usr/local/src wget http://sysoev.ru/nginx/nginx-0.7.53.tar.gz tar zxvf nginx-0.7.53.tar.gz rm -rf nginx-0.7.53.tar.gz 编译选项，取自 nginx wiki，这个配置适合 RHEL/CentOS，已经带了几个常用的模块。 cd [...]]]></description>
			<content:encoded><![CDATA[<p><em>之前的<a href="/2008/11/27/ubuntu-nginx-mysql-php-config/">这篇文章</a>似乎是挖了个坑一直没填，然而每每出现这种情况的时候，都会发现还偏偏总有人通过 Google 搜索过来……一定让不少人失望了，真是过意不去～于是这次重新写一篇，但愿能把坑填上……</em></p>
<p>和上次略有不同，这次 Linux 发行版是用的 CentOS，因为最近一段时间来其实我接触最多的还是 RHEL，所以就不写 Ubuntu 了。MySQL 也不在本文叙述范围之内，我实际应用的时候是直接 yum install mysql-server 装的，没有什么好说的。</p>
<p>nginx 用了 0.7.x 开发版。php 当然是通过 fastcgi 运行，不过没有用从 lighttpd 里分离出来的 spawn-fcgi，而是用了 php-fpm 这个补丁。<br />
<span id="more-345"></span><br />
<strong>编译安装 nginx</strong></p>
<p>用 yum 安装依赖包</p>
<pre>yum install gcc openssl-devel pcre-devel zlib-devel</pre>
<p>下载最新版的 nginx，并解压缩。</p>
<pre>cd /usr/local/src
wget http://sysoev.ru/nginx/nginx-0.7.53.tar.gz
tar zxvf nginx-0.7.53.tar.gz
rm -rf nginx-0.7.53.tar.gz</pre>
<p>编译选项，取自 <a href="http://wiki.nginx.org/NginxInstallOptions">nginx wiki</a>，这个配置适合 RHEL/CentOS，已经带了几个常用的模块。</p>
<pre>cd /usr/local/src/nginx-0.7.53
./configure
  --prefix=/usr
  --sbin-path=/usr/sbin/nginx
  --conf-path=/etc/nginx/nginx.conf
  --error-log-path=/var/log/nginx/error.log
  --pid-path=/var/run/nginx/nginx.pid
  --lock-path=/var/lock/nginx.lock
  --user=nginx
  --group=nginx
  --with-http_ssl_module
  --with-http_flv_module
  --with-http_gzip_static_module
  --http-log-path=/var/log/nginx/access.log
  --http-client-body-temp-path=/var/tmp/nginx/client/
  --http-proxy-temp-path=/var/tmp/nginx/proxy/
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/
make
make install</pre>
<p>由于编译时指定了默认用户和组都为 nginx，所以还要创建一下。</p>
<pre>groupadd nginx
useradd -d /home/nginx -g nginx nginx</pre>
<p><strong>编译安装 PHP</strong></p>
<p>php-fpm 只有针对 PHP 5.2.8 的补丁，尚不支持最新的 5.2.9，所以只能下载较旧的版本了。</p>
<pre>cd /usr/local/src
wget http://hk.php.net/distributions/php-5.2.8.tar.bz2
tar jxvf php-5.2.8.tar.bz2
rm -f php-5.2.8.tar.bz2</pre>
<p>下载 php-fpm 补丁</p>
<pre>cd /usr/local/src
wget http://php-fpm.anight.org/downloads/head/php-5.2.8-fpm-0.5.10.diff.gz
gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.8 -p1
</pre>
<p>配置安装 php</p>
<pre>cd /usr/local/src/php-5.2.8
./configure
  --enable-fastcgi
  --enable-fpm
  --with-mysql
  --with-mcrypt
  --with-zlib
make
make install</pre>
<p>这个参数至少可以运行 wordpress，如果要其他更加复杂的 php 应用，可能需要加入其他 extension。<br />
如果缺少依赖的话，试试这些</p>
<pre>yum install mysql-devel libmcrypt-devel zlib-devel libxml2-devel libtool-ltdl-devel</pre>
<p><strong>nginx 和 php-fpm 的设置</strong><br />
nginx 的配置文件位于 /ect/nginx/nginx.conf<br />
最好在 http {} 的 最后加入 include vhosts/*.conf;<br />
以后其他 virtual host 可以写在 vhosts 下面<br />
比如 一个 PHPMyAdmin 的配置可以这么写</p>
<pre>server {
    listen 80;
    server_name sql.example.net;

    location / {
        index index.php;
        root /var/host/phpMyAdmin;
    }

    location ~ .*.php5?$ {
        include fastcgi_params;
        root /var/host/phpMyAdmin;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/var/run/php_fcgi.sock;
        fastcgi_index index.php;
    }
}</pre>
<p>其中 unix:/var/run/php_fcgi.sock 要和 php-fpm 的配置相对应，php-fpm 的默认配置（/usr/local/etc/php-fpm.conf）也基本上够用了。要修改的大概只有这一段</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;value</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;listen_address&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>/var/run/php_fcgi.sock<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;value</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;listen_options&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;value</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;backlog&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>-1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;value</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;owner&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>nginx<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;value</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;group&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>nginx<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;value</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;mode&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>0666<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://archive.raptium.net/2009/05/01/centos-nginx-php-config-howto/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>校内出错的那几分钟</title>
		<link>http://archive.raptium.net/2009/03/27/bad-gateway-to-xiaonei/</link>
		<comments>http://archive.raptium.net/2009/03/27/bad-gateway-to-xiaonei/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 16:22:58 +0000</pubDate>
		<dc:creator>raptium</dc:creator>
				<category><![CDATA[瞎折腾]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[校内]]></category>

		<guid isPermaLink="false">http://www.raptium.com/?p=329</guid>
		<description><![CDATA[貌似最近通过搜索 校内 502 Bad Gateway 来到此页面的同学越来越多了。简单明了的告诉你，这是校内的服务器不行了，不是用户的问题，也许等等就好了，如果等等也不好……那……校内，你倒底行不行啊？ &#8212; Updated on 2 Jun, 2009 晚上开着校内的时候，突然弹了个框出来，说是 502 Bad Gateway，然后按刷新就看不到校内了，看到了……我熟悉的 nginx 502 错误页面～ 当时就想，校内又出错了啊，还是 nginx，可以研究一下哈。 立刻问了一下小野猪，他说校内是可以上的，就是有点慢。而我却是立刻返回 502 页面，服务器 nginx 0.6.32，校内正常的服务器应该是 resin 才对。两个人访问结果不同的情况，除了我 RP 差之外，还是有其他原因的，我猜就是我这两天碰巧在搞得 DNS Round Robin $ nslookup xiaonei.com Server:        208.67.222.222 Address:    208.67.222.222#53 Non-authoritative answer: Name:    xiaonei.com Address: 211.157.20.6 Name:    xiaonei.com Address: 211.157.20.3 Name:    xiaonei.com Address: 211.157.20.2 [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>貌似最近通过搜索 <strong>校内 502 Bad Gateway</strong> 来到此页面的同学越来越多了。简单明了的告诉你，这是校内的服务器不行了，不是用户的问题，也许等等就好了，如果等等也不好……那……校内，你倒底行不行啊？ <em>&#8212; Updated on 2 Jun, 2009</em></p></blockquote>
<p>晚上开着校内的时候，突然弹了个框出来，说是 502 Bad Gateway，然后按刷新就看不到校内了，看到了……我熟悉的 nginx 502 错误页面～ 当时就想，校内又出错了啊，还是 nginx，可以研究一下哈。</p>
<p>立刻问了一下小野猪，他说校内是可以上的，就是有点慢。而我却是立刻返回 502 页面，服务器 nginx 0.6.32，校内正常的服务器应该是 resin 才对。两个人访问结果不同的情况，除了我 RP 差之外，还是有其他原因的，我猜就是我这两天碰巧在搞得 DNS Round Robin</p>
<pre>$ nslookup xiaonei.com
Server:        208.67.222.222
Address:    208.67.222.222#53

Non-authoritative answer:
Name:    xiaonei.com
Address: 211.157.20.6
Name:    xiaonei.com
Address: 211.157.20.3
Name:    xiaonei.com
Address: 211.157.20.2</pre>
<p>和 google.com 一样，xiaonei.com 解析的时候也会有三个 IP，DNS Server 会在每次回复的时候改变顺序，不过究竟用哪个 IP 还是客户端说了算，有时候 DNS Cache 久了，你可能长时间使用一个 IP 访问。不过这个在减低服务器负载上还是有效果的，因为人多了之后，还是大致上 IP 均分的。</p>
<p>DNS Round Robin  的实现是很容易，然后也有很大的弊端：由于 DNS propagation delay 通常要很久，几十分钟到几个小时甚至几天都有可能，所以如果一个服务器要临时下线的话，客户端是不知道这一情况的，还是会继续访问那个 IP，并不会被自动分流到好得 IP 上去。当然还是可以在 router/firewall 上把下线的 IP 分给某一台在线的服务器，不过要做到完全平滑过渡似乎是不大可能了（你至少得把所有 TCP 连接给断开才能改吧？）</p>
<p>回到校内这个问题上来…… 我试着反复清空 DNS cache，情况是，有一个 IP 返回 502，两个 IP 是好的，之后似乎情况又有变化，甚至有一段时间有两个 IP 是 502…… 于是猜测校内在重启 back-end server，但由于 DNS round robin 并不能解决平滑过渡的问题，即使是三只服务器依次重启，我还是遇到了出错的页面。</p>
<p>至于 nginx 的出现，我并不觉得惊讶，因为 nginx 的优秀性能总能让用它的人从中受益，校内可能省了点硬件的钱，我们则得到更好的用户体验～ 对于校内背后的服务器结构，我依旧迷惑。最外层是 squid，直接打 IP 就能看出来，而且即使 nginx 报 502 的时候，同一个 IP 还是能看到 squid，所以 squid 是最外层。然后是 nginx，可是再里面呢？resin？如果用 nginx 做 reverse proxy 的话，他的 server tag 是不会变的，永远都会自称 nginx，这个和 Apache 不同， Apache mod_proxy 做 reverse proxy 的话，server tag 是显示的 back-end server 的 server tag。于是迷惑了，更加奇怪的是，既然用到了 nginx，为什么校内的静态图片却是在 Apache 上呢…… 也许要等下次，下下次，不知道多少次校内出错的时候才能猜出来了～～</p>
]]></content:encoded>
			<wfw:commentRss>http://archive.raptium.net/2009/03/27/bad-gateway-to-xiaonei/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: archive.raptium.net @ 2012-05-22 22:22:16 by W3 Total Cache -->
