<?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>Hello, SA</title>
	<atom:link href="http://blog.helosa.org/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.helosa.org</link>
	<description>Linux System Administrator</description>
	<lastBuildDate>Fri, 04 May 2012 16:37:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>申请一个 bing translator api 玩玩</title>
		<link>http://blog.helosa.org/2012/03/31/bing-translator-api.html</link>
		<comments>http://blog.helosa.org/2012/03/31/bing-translator-api.html#comments</comments>
		<pubDate>Fri, 30 Mar 2012 18:41:44 +0000</pubDate>
		<dc:creator>Chan Cham Chung</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://blog.helosa.org/?p=522</guid>
		<description><![CDATA[想补充下我的 DrawSthHelper 的翻译功能，google translate 的 api 收费了，于是转而投奔 bing translate ，然后发现，真 TMD 麻烦。很少用 MS 的 online 服务，好像是 bing app ID 的模式 deprecated 了，以后要用 Azure Marketplace 的了。然后就有了下面这个麻烦至极的过程。。。 api doc 在这里：http://msdn.microsoft.com/en-us/library/ff512421.aspx 其中，因为 bing app id 已经不再维护了（但还是可用的），还要注册一个 Azure Marketplace ，还要获取一个 access token 。 获取 access token 在这里：http://msdn.microsoft.com/en-us/library/hh454950.aspx 我简单罗列一下步骤，也就是翻译一下啦 @@ 1，来这里免费注册个账号 https://datamarket.azure.com/developer/applications/ 2，然后通过这个链接：http://go.microsoft.com/?linkid=9782667 ，来订阅（subscribe）Microsoft Translate API 的数据，每个月可以免费翻译 200w 个字符，我相信。。。一般人都够用了。 3，然后注册一个自己的应用，以下需要填的信息： 客户端ID（client_id，等会需要用），名称（随意），客户端机密（这翻译烂的。。。client secret ，等会也需要用），重定向 [...]]]></description>
			<content:encoded><![CDATA[<p>想补充下我的 DrawSthHelper 的翻译功能，google translate 的 api 收费了，于是转而投奔 bing translate ，然后发现，真 TMD 麻烦。很少用 MS 的 online 服务，好像是 bing app ID 的模式 deprecated 了，以后要用 Azure Marketplace 的了。然后就有了下面这个麻烦至极的过程。。。</p>
<p>api doc 在这里：http://msdn.microsoft.com/en-us/library/ff512421.aspx</p>
<p>其中，因为 bing app id 已经不再维护了（但还是可用的），还要注册一个 Azure Marketplace ，还要获取一个 access token 。</p>
<p>获取 access token 在这里：http://msdn.microsoft.com/en-us/library/hh454950.aspx</p>
<p>我简单罗列一下步骤，也就是翻译一下啦 @@</p>
<p>1，来这里免费注册个账号 https://datamarket.azure.com/developer/applications/</p>
<p>2，然后通过这个链接：http://go.microsoft.com/?linkid=9782667 ，来订阅（subscribe）Microsoft Translate API 的数据，每个月可以免费翻译 200w 个字符，我相信。。。一般人都够用了。</p>
<p>3，然后注册一个自己的应用，以下需要填的信息：</p>
<p>客户端ID（client_id，等会需要用），名称（随意），客户端机密（这翻译烂的。。。client secret ，等会也需要用），重定向 URL （其实是随意的，就是如果你的应用对外使用了，会显示你的名称，而你的名称的链接就是填的这个）</p>
<p>4，然后，POST 数据去获取 access token</p>
<p>POST 的参数如下：</p>
<p>client_id , 就是刚才那个客户端ID</p>
<p>client_secret ，URL encode 一下，例如，&#8221;=&#8221; 是 %3D</p>
<p>scope，定值，http://api.microsofttranslator.com/</p>
<p>grant_type，也是定值，client_credentials</p>
<p>然后就 POST 吧</p>
<p>curl -d &#8216;grant_type=client_credentials&amp;client_id={your client id}&amp;client_secret={your client secret after url encode}&amp;scope=http://api.microsofttranslator.com&#8217; https://datamarket.accesscontrol.windows.net/v2/OAuth2-13 | python -m json.tool</p>
<p>返回的是一个 json ，我用 python 去解析了一下，我们只需要其中的 access token 。</p>
<p>5，翻译一个词看看，这回是 GET ，GET 的参数如下：</p>
<p>text , 需要翻译的文本啊，字符串啊</p>
<p>to ，这个不用解释了吧。。。</p>
<p>from ，这个也不用</p>
<p>不过，需要注意的一点。。。就是要加一个 Authorization 的header ，值是 bearer + &#8221; &#8221; + 刚才的 access token</p>
<p>翻译开始：</p>
<p>curl -H &#8220;Authorization: bearer {刚才那一大串access token}&#8221;  &#8221;http://api.microsofttranslator.com/V2/Http.svc/Translate?text=hello&amp;from=en&amp;to=zh-CH&#8221;</p>
<p>bing 返回：</p>
<p>&lt;string xmlns=&#8221;http://schemas.microsoft.com/2003/10/Serialization/&#8221;&gt;你好&lt;/string&gt;</p>
<p>（这个时代还用 XML 。。。）</p>
<p>&nbsp;</p>
<p>附 language codes ：http://msdn.microsoft.com/en-us/library/hh456380.aspx</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.helosa.org/2012/03/31/bing-translator-api.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>npm 安装hashlib 失败</title>
		<link>http://blog.helosa.org/2012/03/31/npm-install-hashlib-fail.html</link>
		<comments>http://blog.helosa.org/2012/03/31/npm-install-hashlib-fail.html#comments</comments>
		<pubDate>Fri, 30 Mar 2012 18:37:42 +0000</pubDate>
		<dc:creator>Chan Cham Chung</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[hubot]]></category>
		<category><![CDATA[node.js]]></category>

		<guid isPermaLink="false">http://blog.helosa.org/?p=506</guid>
		<description><![CDATA[呃。。。这篇东西趟在我的草稿箱一段时间了。。。 当时在摆弄 hubot 。我本机 MacOSX 要装几个 lib ================== 有个script 需要hashlib 的，但我发现npm 安装不上hashlib ，报错 [1/6] cc: libhash/md4c.c -&#62; build/Release/libhash/md4c_1.o [2/6] cc: libhash/md5c.c -&#62; build/Release/libhash/md5c_1.o [3/6] cc: libhash/sha0c.c -&#62; build/Release/libhash/sha0c_1.o [4/6] cxx: hashlib.cc -&#62; build/Release/hashlib_2.o ../hashlib.cc:14:16: error: ev.h: No such file or directory ../hashlib.cc:15:17: error: eio.h: No such file or directory ../hashlib.cc:311: error: ‘eio_req’ was not declared [...]]]></description>
			<content:encoded><![CDATA[<p>呃。。。这篇东西趟在我的草稿箱一段时间了。。。</p>
<p>当时在摆弄 hubot 。我本机 MacOSX 要装几个 lib</p>
<p>==================</p>
<p>有个script 需要hashlib 的，但我发现npm 安装不上hashlib ，报错</p>
<div id="_mcePaste">[1/6] cc: libhash/md4c.c -&gt; build/Release/libhash/md4c_1.o</div>
<div id="_mcePaste">[2/6] cc: libhash/md5c.c -&gt; build/Release/libhash/md5c_1.o</div>
<div id="_mcePaste">[3/6] cc: libhash/sha0c.c -&gt; build/Release/libhash/sha0c_1.o</div>
<div id="_mcePaste">[4/6] cxx: hashlib.cc -&gt; build/Release/hashlib_2.o</div>
<div id="_mcePaste">../hashlib.cc:14:16: error: ev.h: No such file or directory</div>
<div id="_mcePaste">../hashlib.cc:15:17: error: eio.h: No such file or directory</div>
<div id="_mcePaste">../hashlib.cc:311: error: ‘eio_req’ was not declared in this scope</div>
<div id="_mcePaste">../hashlib.cc:311: error: ‘req’ was not declared in this scope</div>
<div id="_mcePaste">../hashlib.cc:312: error: expected ‘,’ or ‘;’ before ‘{’ token</div>
<div id="_mcePaste">Waf: Leaving directory `/usr/local/lib/node_modules/npm/node_modules/hashlib/build&#8217;</div>
<div id="_mcePaste">Build failed:  -&gt; task failed (err #1):</div>
<div id="_mcePaste">{task: cxx hashlib.cc -&gt; hashlib_2.o}</div>
<p>解决办法也简单，根据 https://github.com/brainfucker/hashlib/issues/25</p>
<p>npm install https://github.com/ovaillancourt/hashlib/tarball/compat_fix_node_0_6_X 即可</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.helosa.org/2012/03/31/npm-install-hashlib-fail.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DrawSth</title>
		<link>http://blog.helosa.org/2012/03/18/drawsth.html</link>
		<comments>http://blog.helosa.org/2012/03/18/drawsth.html#comments</comments>
		<pubDate>Sun, 18 Mar 2012 03:34:47 +0000</pubDate>
		<dc:creator>Chan Cham Chung</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.helosa.org/?p=515</guid>
		<description><![CDATA[这几天都在玩这个 app，苦于词汇量真的太少。。。真的看出来对方画的是什么，也不懂拼。 随便写了个小程序，原理很简单，将所有的字母全排列一次，然后 spell check 。全排列原来已经有 lib 实现了，spell check 也有 pyenchant ，真是没有技术含量啊。。。 日后考虑加入 Google Translate ，不知道会不会因为太频繁访问被 Google ban 掉。 https://github.com/hellosa/draw-something-helper 当然，一般不用这东西，要不就破坏了游戏性了。 &#8212;&#8212;&#8212;&#8212;&#8212; update 2012-03-20: 今天想加入 google translate 的功能。。。发现貌似收费了。。。]]></description>
			<content:encoded><![CDATA[<p>这几天都在玩这个 app，苦于词汇量真的太少。。。真的看出来对方画的是什么，也不懂拼。</p>
<p>随便写了个小程序，原理很简单，将所有的字母全排列一次，然后 spell check 。全排列原来已经有 lib 实现了，spell check 也有 pyenchant ，真是没有技术含量啊。。。</p>
<p>日后考虑加入 Google Translate ，不知道会不会因为太频繁访问被 Google ban 掉。</p>
<p>https://github.com/hellosa/draw-something-helper</p>
<p>当然，一般不用这东西，要不就破坏了游戏性了。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>update 2012-03-20:</p>
<p>今天想加入 google translate 的功能。。。发现貌似收费了。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.helosa.org/2012/03/18/drawsth.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>变</title>
		<link>http://blog.helosa.org/2012/03/16/change.html</link>
		<comments>http://blog.helosa.org/2012/03/16/change.html#comments</comments>
		<pubDate>Thu, 15 Mar 2012 17:31:16 +0000</pubDate>
		<dc:creator>Chan Cham Chung</dc:creator>
				<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://blog.helosa.org/?p=510</guid>
		<description><![CDATA[最近生活，不知道算不算充实，反正就是那么过着 漫画方面，&#60;Hunter X Hunter&#62; 终于迎来了蚂蚁篇的终结。。。好几年了。。。看看停停的，很多剧情都忘得差不多了，结果 339 &#60;静寂&#62; 来了个集体大回忆，没有一句对白，一格一格，把蚂蚁篇来了个完美的终结。看完我只能惊叹，神作！！《猎人》最终发展得如何，不清楚，但这一话，绝对神作。蚂蚁篇，大家都有这个想法，想看看 FJ 如何终结王，结果，一个蔷薇就完结了。有几话看得我心跳加速，好刺激。FJ 真成魔了。 看了本书，韩寒的《青春》。看完才发现，浪费钱！！！正本书，基本除了几篇（或者根本没有）不是他的博文外，基本取自于他的 blog ，坑爹啊。。。我之前基本都看过了。。。虽然我相信你是真的。。。但也不能这样坑人吧。。。 看了部电影，《桃姐》。我第一次在北京看粤语电影，专诚跑去东直门的百老汇电影中心看《岁月神偷》，感动。第二次就是和室友去看《志明与春娇》，也是佳作。这回的《桃姐》更是非常感动，平静的叙事，朴实的画面，平凡的人生，正如影片的英文名 A Simple Life ，很是喜欢。本月还有《春娇与志明》，期待一下！预告片的主题曲极好听，瞬间爱上，曲婉婷的《Drenched》 好了，回到这个 post 的 title 来，“变” ？？没错，我决定改变一下了！！上周五突然蹦出来的一个想法，然后经过几天，终于作出了决定！！4 月 1 日！]]></description>
			<content:encoded><![CDATA[<p>最近生活，不知道算不算充实，反正就是那么过着</p>
<p>漫画方面，&lt;Hunter X Hunter&gt; 终于迎来了蚂蚁篇的终结。。。好几年了。。。看看停停的，很多剧情都忘得差不多了，结果 339 &lt;静寂&gt; 来了个集体大回忆，没有一句对白，一格一格，把蚂蚁篇来了个完美的终结。看完我只能惊叹，神作！！《猎人》最终发展得如何，不清楚，但这一话，绝对神作。蚂蚁篇，大家都有这个想法，想看看 FJ 如何终结王，结果，一个蔷薇就完结了。有几话看得我心跳加速，好刺激。FJ 真成魔了。</p>
<p>看了本书，韩寒的《青春》。看完才发现，浪费钱！！！正本书，基本除了几篇（或者根本没有）不是他的博文外，基本取自于他的 blog ，坑爹啊。。。我之前基本都看过了。。。虽然我相信你是真的。。。但也不能这样坑人吧。。。</p>
<p>看了部电影，《桃姐》。我第一次在北京看粤语电影，专诚跑去东直门的百老汇电影中心看《岁月神偷》，感动。第二次就是和室友去看《志明与春娇》，也是佳作。这回的《桃姐》更是非常感动，平静的叙事，朴实的画面，平凡的人生，正如影片的英文名 A Simple Life ，很是喜欢。本月还有《春娇与志明》，期待一下！预告片的主题曲极好听，瞬间爱上，曲婉婷的《Drenched》</p>
<p>好了，回到这个 post 的 title 来，“变” ？？没错，我决定改变一下了！！上周五突然蹦出来的一个想法，然后经过几天，终于作出了决定！！4 月 1 日！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.helosa.org/2012/03/16/change.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>zhihubot 搭建</title>
		<link>http://blog.helosa.org/2012/02/22/zhihubot.html</link>
		<comments>http://blog.helosa.org/2012/02/22/zhihubot.html#comments</comments>
		<pubDate>Wed, 22 Feb 2012 04:20:50 +0000</pubDate>
		<dc:creator>Chan Cham Chung</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[hubot]]></category>

		<guid isPermaLink="false">http://blog.helosa.org/?p=500</guid>
		<description><![CDATA[zhihubot 是一个基于GitHub 开源的Hubot [1]，长期寄居于Campfire 某个room 的机器人。那说回来，Hubot 又是啥呢？Hubot 是GitHub 内部的机器人，它能做很多事情，例如自动化部署，时不时贴一下有趣的图片，为他们播放音乐，翻译，你能想到的，都可以，只需要在Campfire 里的一个有Hubot 的chat room 里，和Hubot 说一句话就可以了，剩下就交给Hubot 吧。原生支持shell 和campfire ，当然，还有更多的接口，如IRC, gtalk。它之前的内部版本是用什么写的就不知道了，现在开源的版本是用node.js 的CoffeeScript 写的，想到自己的Hubot 需要什么功能，自行动手写吧。 还是说如何搭建吧。Hubot 有两个项目：主项目 https://github.com/github/hubot 和收集回来的脚本 https://github.com/github/hubot-scripts，下载源码包吧，以后它更新了你又跟进不了，git clone 一个readonly 的吧，差不多效果。所以，fork 吧，以后说不定要加入自己的很多scripts呢。fork 出来以后，在自己本地clone 一份吧，然后就可以开始了。 我一般在自己的Mac 下用shell 测试，在线上的Linux 连接Campfire 。因为包管理工具不同而略有不同而已。 Mac 下，我用的是homebrew brew install node.js ，安装node.js curl http://npmjs.org/install.sh &#124; sh ，安装npm &#8212; node package manager 进入hubot 目录，npm install [...]]]></description>
			<content:encoded><![CDATA[<p>zhihubot 是一个基于GitHub 开源的Hubot [1]，长期寄居于Campfire 某个room 的机器人。那说回来，Hubot 又是啥呢？Hubot 是GitHub 内部的机器人，它能做很多事情，例如自动化部署，时不时贴一下有趣的图片，为他们播放音乐，翻译，你能想到的，都可以，只需要在Campfire 里的一个有Hubot 的chat room 里，和Hubot 说一句话就可以了，剩下就交给Hubot 吧。原生支持shell 和campfire ，当然，还有更多的接口，如IRC, gtalk。它之前的内部版本是用什么写的就不知道了，现在开源的版本是用node.js 的CoffeeScript 写的，想到自己的Hubot 需要什么功能，自行动手写吧。</p>
<p>还是说如何搭建吧。Hubot 有两个项目：主项目 https://github.com/github/hubot 和收集回来的脚本 https://github.com/github/hubot-scripts，下载源码包吧，以后它更新了你又跟进不了，git clone 一个readonly 的吧，差不多效果。所以，fork 吧，以后说不定要加入自己的很多scripts呢。fork 出来以后，在自己本地clone 一份吧，然后就可以开始了。</p>
<p>我一般在自己的Mac 下用shell 测试，在线上的Linux 连接Campfire 。因为包管理工具不同而略有不同而已。</p>
<p>Mac 下，我用的是homebrew</p>
<p>brew install node.js ，安装node.js</p>
<p>curl http://npmjs.org/install.sh | sh ，安装npm &#8212; node package manager</p>
<p>进入hubot 目录，npm install ，然后所有的依赖都帮你安装完成了</p>
<p>进行测试前，要export 一个系统变量，export PATH=&#8221;node_modules/.bin:$PATH&#8221;</p>
<p>./bin/hubot ，测试，尽情玩吧</p>
<p>Hubot&gt;       ，见到这个命令行提示符，我最初是完成不知道如何操作的。。。万事开头难啊，哈哈</p>
<p>输入 hubot pug me 测试下</p>
<p>Linux 下，这次我用的是Debian</p>
<p># apt-get install build-essential libssl-dev git-core redis-server libexpat1-dev ，安装相关的包</p>
<p>debian 既然还没有node.js 。。。自己下源码装吧</p>
<div id="_mcePaste"># wget http://nodejs.org/dist/v0.6.9/node-v0.6.9.tar.gz</div>
<div id="_mcePaste"># tar xf node-v0.6.9.tar.gz -C /usr/local/src &amp;&amp; cd /usr/local/src/node-v0.6.9</div>
<div id="_mcePaste"># ./configure &amp;&amp; make &amp;&amp; make install</div>
<div></div>
<div>安装完node.js 后，安装 CoffeeScript ，npm install -g coffee-script</div>
<p>同样，现在也可以用shell 测试了。</p>
<p>现在来尝试一下连接Campfire 。首先去新建一个账号给hubot 使用。然后去邀请hubot 加入campfire 。</p>
<p>在hubot 目录下新建一个文件run ，内容为：</p>
<p>=========================================</p>
<p>#!/bin/bash</p>
<p>##</p>
<p>## Wrapper for Hubot startup</p>
<p>##</p>
<p>HUBOT=&#8221;/path/to/your/hubot/&#8221;</p>
<p>NAME=&#8221;zhihubot&#8221;</p>
<p>ADAPTER=&#8221;campfire&#8221;</p>
<p>HUBOT_CAMPFIRE_TOKEN=&#8221;your bot&#8217;s api&#8221;</p>
<p>HUBOT_CAMPFIRE_ACCOUNT=&#8221;subdomain&#8221;</p>
<p>HUBOT_CAMPFIRE_ROOMS=&#8221;room number 1, room number 2&#8243;</p>
<p>OPTS=&#8221;&#8211;name ${NAME} &#8211;adapter ${ADAPTER}&#8221;</p>
<p>export HUBOT_CAMPFIRE_TOKEN</p>
<p>export HUBOT_CAMPFIRE_ACCOUNT</p>
<p>export HUBOT_CAMPFIRE_ROOMS<br />
until ${HUBOT} ${OPTS}; do</p>
<p>echo &#8220;Hubot crashed with exit code $?. Restarting.&#8221; &gt;&amp;2</p>
<p>sleep 5</p>
<p>done</p>
<p>================================================</p>
<p>NAME ，hubot 的名字，每次发命令基本都要带上，robot.hear 的不用</p>
<p>HUBOT_CAMPFIRE_TOKEN ，你申请那个hubot 用的账号的api token，在账号的info 里有</p>
<p>HUBOT_CAMPFIRE_ACCOUNT ，这里的account 有点误导，其实是$subdomain.campfirenow.com 的subdomain ，而不是hubot 的账号</p>
<p>HUBOT_CAMPFIRE_ROOMS ，聊天室的id ，用逗号分隔</p>
<p>填上以上，再赋个权，chmod +x run ，在screen or tmux 下，./run 即可。</p>
<p>OK. Let&#8217;s rock !</p>
<p>如果成功了，hubot 会作为你刚才为它申请那个账号的身份，进入聊天室，你会见到它在线的</p>
<p>在聊天室中输入 zhihubot pug me （格式一般为$hubotname $command ，可以 zhihubot help 查看帮助）看看效果？？（爱死那狗狗了！）</p>
<p>hubot-scripts 里还有很多有趣的scripts ，可以自行玩玩，但由于写的人很多，很不完善，未必每个scripts 都能顺利跑起来噢</p>
<p>由于其默认读取的是两个目录：hubot/scripts &amp; hubot/src/scripts ，后者是built-in 脚本，那么我就把自己觉得好玩的或者自己写的脚本放hubot/scripts 里。</p>
<p>========================================</p>
<p>Campfire 本身是可以免费的，但免费版实在太弱了，只能同时容纳4 个人聊天，想让你的Hubot 活起来，果断购买吧！！一个月10+ 刀的消费对于一个公司甚至个人来说都不算什么，何况它能极大提高团队的活力、幸福感、积极性、xxxx</p>
<p>Hubot ，很明显来自于GitHub 的Hub ，加上robot 的bot，而zhihubot ，很明显又是利用了hubot 的hu ，直接将zhihu 串上去，很是山寨。所以呢，zhihubot 是有它自己的名字的，它叫Marvin ，它长这个样子的</p>
<p><a href="http://blog.helosa.org/wp-content/uploads/2012/02/marvin.jpg"><img class="alignnone size-medium wp-image-502" title="marvin" src="http://blog.helosa.org/wp-content/uploads/2012/02/marvin-182x300.jpg" alt="" width="182" height="300" /></a></p>
<p>Reference:</p>
<p>[1] http://hubot.github.com/</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.helosa.org/2012/02/22/zhihubot.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>今天有一个面试</title>
		<link>http://blog.helosa.org/2012/02/21/interview.html</link>
		<comments>http://blog.helosa.org/2012/02/21/interview.html#comments</comments>
		<pubDate>Mon, 20 Feb 2012 18:19:34 +0000</pubDate>
		<dc:creator>Chan Cham Chung</dc:creator>
				<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://blog.helosa.org/?p=497</guid>
		<description><![CDATA[今天这个面试真的是气死人！！ 我百忙中抽了两个小时来出了一份题，虽然我是还不满意这份题，但总的感觉涉及了基础，数据库设计，产品，见不了大场面也可以让我看出一个人的水平吧。用了10 来分钟就交卷了，一眼扫过去尽是不满意。如果我狠一点的话，马上就轰走了！！ 招聘一个合适的人，真难！！想从学生堆里挑吧，这个时候，通常也轮不到我挑了。。。不是自己不去培养，没有给我机会去培养。。。不过我也看透了，宁缺毋滥！一个人始终只能做一个人的事情，想交出一份大项目的答卷，实在不是现在能做的。 今天还发生一件事，证明我还是不成熟，很多事情处理得很没有技巧。 近来，思考得最多的，还是团队的成长。虽然我还没有自己的一支team ，但我还是希望整个大团队可以进步得更快一点，不用担心扯着蛋的，因为现在的进步实在太慢了，有没有进步是另一回事。把事情想出来，还要亲自去实施。执行过程中，还有各种打断。。。苦逼命。还有现状的各种不满意。。。没空去修啊。。。]]></description>
			<content:encoded><![CDATA[<p>今天这个面试真的是气死人！！</p>
<p>我百忙中抽了两个小时来出了一份题，虽然我是还不满意这份题，但总的感觉涉及了基础，数据库设计，产品，见不了大场面也可以让我看出一个人的水平吧。用了10 来分钟就交卷了，一眼扫过去尽是不满意。如果我狠一点的话，马上就轰走了！！</p>
<p>招聘一个合适的人，真难！！想从学生堆里挑吧，这个时候，通常也轮不到我挑了。。。不是自己不去培养，没有给我机会去培养。。。不过我也看透了，宁缺毋滥！一个人始终只能做一个人的事情，想交出一份大项目的答卷，实在不是现在能做的。</p>
<p>今天还发生一件事，证明我还是不成熟，很多事情处理得很没有技巧。</p>
<p>近来，思考得最多的，还是团队的成长。虽然我还没有自己的一支team ，但我还是希望整个大团队可以进步得更快一点，不用担心扯着蛋的，因为现在的进步实在太慢了，有没有进步是另一回事。把事情想出来，还要亲自去实施。执行过程中，还有各种打断。。。苦逼命。还有现状的各种不满意。。。没空去修啊。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.helosa.org/2012/02/21/interview.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>HAproxy 代理redis</title>
		<link>http://blog.helosa.org/2012/01/31/haproxy-redis-proxy.html</link>
		<comments>http://blog.helosa.org/2012/01/31/haproxy-redis-proxy.html#comments</comments>
		<pubDate>Tue, 31 Jan 2012 08:27:51 +0000</pubDate>
		<dc:creator>Chan Cham Chung</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[haproxy]]></category>
		<category><![CDATA[redis]]></category>

		<guid isPermaLink="false">http://blog.helosa.org/?p=493</guid>
		<description><![CDATA[转眼2012 的1 月要过去了。。。还是不要空着一个月吧，随便写点什么记录一下。 1 月实践了一下haproxy  作为redis 的代理，统一了所有的redis 入口，对于应用来说，其实最好还是有一个全局的队列，这个中间层完全接管了mysql 和nosql 的写入读取。大工程啊，这里还是说一下简单的。 直接上配置吧： global log 127.0.0.1  local3 notice ulimit-n 40960 maxconn 10240 user haproxy group haproxy nbproc  4 daemon quiet defaults log     global mode    http option tcplog balance roundrobin stats uri /redis-proxy stats auth hello:123 contimeout 5000 clitimeout 30000 srvtimeout 30000 listen monitor mode [...]]]></description>
			<content:encoded><![CDATA[<p>转眼2012 的1 月要过去了。。。还是不要空着一个月吧，随便写点什么记录一下。</p>
<p>1 月实践了一下haproxy  作为redis 的代理，统一了所有的redis 入口，对于应用来说，其实最好还是有一个全局的队列，这个中间层完全接管了mysql 和nosql 的写入读取。大工程啊，这里还是说一下简单的。</p>
<p>直接上配置吧：</p>
<div id="_mcePaste">global</div>
<div id="_mcePaste">log 127.0.0.1  local3 notice</div>
<div id="_mcePaste">ulimit-n 40960</div>
<div id="_mcePaste">maxconn 10240</div>
<div id="_mcePaste">user haproxy</div>
<div id="_mcePaste">group haproxy</div>
<div id="_mcePaste">nbproc  4</div>
<div id="_mcePaste">daemon</div>
<div id="_mcePaste">quiet</div>
<div></div>
<div id="_mcePaste">defaults</div>
<div id="_mcePaste">log     global</div>
<div id="_mcePaste">mode    http</div>
<div id="_mcePaste">option tcplog</div>
<div id="_mcePaste">balance roundrobin</div>
<div id="_mcePaste">stats uri /redis-proxy</div>
<div id="_mcePaste">stats auth hello:123</div>
<div id="_mcePaste">contimeout 5000</div>
<div id="_mcePaste">clitimeout 30000</div>
<div id="_mcePaste">srvtimeout 30000</div>
<div></div>
<div>listen monitor</div>
<div id="_mcePaste">mode http</div>
<div id="_mcePaste">bind 0.0.0.0:2000</div>
<div></div>
<div>listen redis</div>
<div id="_mcePaste">bind 0.0.0.0:6379</div>
<div id="_mcePaste">mode   tcp</div>
<div id="_mcePaste">option tcpka</div>
<div id="_mcePaste">server redis1 192.168.100.1:6379 check inter 5000 fall 3</div>
<div id="_mcePaste">server redis2 192.168.100.2:6379 check inter 5000 fall 3 backup</div>
<p>我这里两个redis ，一个是active 状态对外服务，另一个是热备。</p>
<p>用redis-benchmark 来随便打了一下压力，和redis-cli 直连性能上差不多。</p>
<p>timeout 一定要配置，之前就是忘了配置，其中一个down 了以后很久都不切。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.helosa.org/2012/01/31/haproxy-redis-proxy.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>velocity 2011</title>
		<link>http://blog.helosa.org/2011/12/11/velocity-2011.html</link>
		<comments>http://blog.helosa.org/2011/12/11/velocity-2011.html#comments</comments>
		<pubDate>Sat, 10 Dec 2011 18:08:22 +0000</pubDate>
		<dc:creator>Chan Cham Chung</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[velocity]]></category>

		<guid isPermaLink="false">http://blog.helosa.org/?p=484</guid>
		<description><![CDATA[总的来说，有点失望，含金量不高。 老外的好几个都是在卖广告。。。门票的大头就是他们吧。。。还有一些是说自己的产品如何好如何好，连技术原理都不说，就说你使用了我们的产品呢，能怎么样怎么样的。 简单理一下我的一些笔记吧。略去广告。 ====================== 第一天，含金量最高，而且都在下午。 Steve Souders 的《高性能移动互联网》。这个Steve 大有来历，简单用熟悉一点的东西去介绍，就是 Yslow 和 Firebug 的开创者。可惜。。。我迟到了。。。前面那部分没听到。后面大概就是说一些与移动互联网相关的参数，Yahoo! 的14 条铁律在移动互联网已经不再完全适用，更多的是依靠app 自身，例如cache 。 章文嵩的《低功耗服务器定制与绿色计算》。上一年SACC 上分享淘宝CDN 的时候就已经提及的话题，今年就展开来说一下。大概就是，在最外层的squid cache 层，cpu 完全不是瓶颈，磁盘IO 和网络IO 才是，在这些地方用低功耗服务器可以节省很大一笔钱呢。然后我惊奇地发现，他们在定制低功耗服务器中测试过的三款CPU ，其中两个intel E5620 和 Atom D525 都是我们正在用或者将会试用的cpu。到现在，他们已经优化到cpu 快成为瓶颈了，真可怕。除了低功耗服务器，淘宝CDN 他就简单带过了，无非就是上一年的内容。混合使用各类不同的磁盘再次提到，无非就是SAS , SATA , SSD 三种不同成本的硬盘用来存放大中小文件，及冷热数据。然后我发现。。。他每次的ppt 介绍的都是这些内容啊。。。是不是每次分享都是一两年前的东西。。。现在内部用的已经是很成熟的一套了？？ Percona 的季海东（http://www.haidongji.com/ ）的《Innodb/Xtradb 性能优化与诊断》。他喜欢配合着DEMO 来说ppt ，这个其实很好。。。但是当时间不足的时候。。。他连Xtradb 都完全没有提及就已经没有时间了。其中演示了一些MySQL 的操作，技巧等。。。重点的调优说得不多，尤其是，innodb 的最重要参数 buffer_pool_size ，竟然武断地说，一般设置为物理内存的80% 。。。没有考虑到NUMA 架构的机器？？ 米聊陈臻的《开源工具选型》。这个分享其实不错。米聊同样是一年左右的创业时间，但他们在开源软件的经验上，对比我们还是多了不少。由于他们也是创业公司，注重点还是在产品上面，所以一般都是用开源软件。他们的原则：用大公司正在用的工具，用大公司不用但自己能在代码层级搞掂的工具。他们对于一些软件的选型，其实也没有太多的道理，例如java 容器的选型，resin 和tomcat [...]]]></description>
			<content:encoded><![CDATA[<p>总的来说，有点失望，含金量不高。</p>
<p>老外的好几个都是在卖广告。。。门票的大头就是他们吧。。。还有一些是说自己的产品如何好如何好，连技术原理都不说，就说你使用了我们的产品呢，能怎么样怎么样的。</p>
<p>简单理一下我的一些笔记吧。略去广告。</p>
<p>======================</p>
<p>第一天，含金量最高，而且都在下午。</p>
<p>Steve Souders 的《高性能移动互联网》。这个Steve 大有来历，简单用熟悉一点的东西去介绍，就是 Yslow 和 Firebug 的开创者。可惜。。。我迟到了。。。前面那部分没听到。后面大概就是说一些与移动互联网相关的参数，Yahoo! 的14 条铁律在移动互联网已经不再完全适用，更多的是依靠app 自身，例如cache 。</p>
<p>章文嵩的《低功耗服务器定制与绿色计算》。上一年SACC 上分享淘宝CDN 的时候就已经提及的话题，今年就展开来说一下。大概就是，在最外层的squid cache 层，cpu 完全不是瓶颈，磁盘IO 和网络IO 才是，在这些地方用低功耗服务器可以节省很大一笔钱呢。然后我惊奇地发现，他们在定制低功耗服务器中测试过的三款CPU ，其中两个intel E5620 和 Atom D525 都是我们正在用或者将会试用的cpu。到现在，他们已经优化到cpu 快成为瓶颈了，真可怕。除了低功耗服务器，淘宝CDN 他就简单带过了，无非就是上一年的内容。混合使用各类不同的磁盘再次提到，无非就是SAS , SATA , SSD 三种不同成本的硬盘用来存放大中小文件，及冷热数据。然后我发现。。。他每次的ppt 介绍的都是这些内容啊。。。是不是每次分享都是一两年前的东西。。。现在内部用的已经是很成熟的一套了？？</p>
<p>Percona 的季海东（http://www.haidongji.com/ ）的《Innodb/Xtradb 性能优化与诊断》。他喜欢配合着DEMO 来说ppt ，这个其实很好。。。但是当时间不足的时候。。。他连Xtradb 都完全没有提及就已经没有时间了。其中演示了一些MySQL 的操作，技巧等。。。重点的调优说得不多，尤其是，innodb 的最重要参数 buffer_pool_size ，竟然武断地说，一般设置为物理内存的80% 。。。没有考虑到NUMA 架构的机器？？</p>
<p>米聊陈臻的《开源工具选型》。这个分享其实不错。米聊同样是一年左右的创业时间，但他们在开源软件的经验上，对比我们还是多了不少。由于他们也是创业公司，注重点还是在产品上面，所以一般都是用开源软件。他们的原则：用大公司正在用的工具，用大公司不用但自己能在代码层级搞掂的工具。他们对于一些软件的选型，其实也没有太多的道理，例如java 容器的选型，resin 和tomcat ，没什么原因，因为初始的那一批人就是用resin 的，而且也没什么毛病，就一直选用resin 了。</p>
<p>奇异李刚的《NoSQL 选型与实践》。也蛮不错的，虽然Sean 一直不推荐去听这个分享@@ 奇异用mongodb 相对于redis 多一点，他们甚至用mongodb 来存放图片。。。这个我实在不能理解。。。不过既然他们用了，而且用得挺欢，那也就参考一下吧。或者是有点数量级了吧，他们对细节的优化很到位，没办法，mongodb 对内存是很贪婪的，他们不优化不行。他们在使用中发现了一些bug ，还主动hack 了。</p>
<p>淘宝的tengine 。其实这个也是不错的。包括两部分，第一部分是朱照远说说淘宝正在如何使用nginx 和tengine 的一些特性吧。第二部分是chaoslawful 的分享，其实就是这个ppt ：https://docs.google.com/present/view?id=dddqrph4_23gmctkmcg&amp;pli=1 。tengine 的很多特性还是挺不错的，但是不知道为啥。。。就是不想用。。。唉。。。难道是洁癖作怪？？我之前一直徘徊于nginx module 和 nginx_lua 之间挣扎，听完chaoslawful 的分享，不矛盾了，luajit 完胜啊！</p>
<p>第二天，早上第一场据说已经很少人去听了。。。我前一天晚上工作到3 点多，也没能起来。。。也就算了。。。迟到吧</p>
<p>整个早上。。。也是要工作的。。。结果错过了几个分享，只听到半个分享，就是 来自OmniTI 的 Theo Schlossnagle 的运维生涯。分享了一些有趣的故事吧，由于我进场的时候已经说到一半了，就不用同声传译了，直接英语听力吧，所以一些地方可能没有catch 到他的本意。facebook 的infrastructure team 与业务没有关系，专门从事架构类的一些工作，而且还是允许错误发生的，不过不能在同一个错误上犯错两次而已。也说到了所谓的 DevOps ，不过我认为，如果不懂开发的运维，就会沦为操作者，使用着一些别人开发好的工具，严格依照着操作文档去操作而已，在腾讯，叫做一线运维，地位是比较低下的。所以一个合格的运维必须一定懂编程。</p>
<p>百度的《大规模集群控制系统与自动运维》。意义不大，其实就是自己开发的一套运维系统嘛。与sohu 的sagent 差不多，各自都根据自己的业务自己完全开发了一套。其实原理就那些，实现细节虽然可能会麻烦，但也就那些，重点还是有没有人力去做这回事。在我当前无法做到的情况下，我只能用用开源的puppet 了。所以这个分享我听了一半就去听 Yahoo! 的《大型网站性能监控、测量和故障排除》</p>
<p>Yahoo! 的是一个可爱的mm 分享的，主要介绍了yslow 这个command line tool . http://developer.yahoo.com/yslow/commandline/ ，貌似是最近才开源的。反正就是根据Yahoo! 的14 条铁律写出来的一个命令行工具，还可以生成漂亮的web 报表之类的。和 http://www.showslow.com/ 配合就能很好的分析网站的瓶颈了。虽然这个工具对web1.0 网站似乎用途会大一点，但如果能加入 cookie 的话，那也可以适用我们的网站了。据说是支持的。。。空了试用下。</p>
<p>去哪儿分享的《机票实时搜索引擎的优化》。这个是完全偏题的分享！！。。。但内容还ok 。。。根本没有实时搜索引擎相关的什么优化。。。只是说了去哪儿在前端和后端的优化。他们的前端开始的时候使用了 trimpath 这个框架，后来实在有性能问题了，就自己写了一套，我的前端很烂，就不说了。后端的优化说了几个实例。有一个trick ， 就是xml 的解析，如果只是需要一个xml 的某些标签的content ，可以不用xml 解析器去把整个xml 解析出来，而是直接用正则把需要的字段抽出来即可，效率相差数量级啊！！还有一个就是memcache 的使用经验，我也曾经犯过这个错，就是分配给memcache 的内存，并不是都可以用于存储的，例如100k data block 会分配一定数目的桶，200k 300k 亦然，当大量小object 占满了100k 的桶子时，memcache 就会根据算法置换一些旧object 出去，也就会出现，分配的512M 内存都没有用完，但就经常miss cache 的情况了。他们说了一点：优化重视细节，但切忌过早过度优化，一开始设计很大，但其实最先出现问题的往往没有考虑过的地方。我也曾经一度陷入这个怪圈，但其实真的没有必要一开始考虑得太多，有时候船到桥头自然直。我现在多数关注的是瓶颈的方面了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.helosa.org/2011/12/11/velocity-2011.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>《失恋33 天》</title>
		<link>http://blog.helosa.org/2011/11/12/love-is-not-blind.html</link>
		<comments>http://blog.helosa.org/2011/11/12/love-is-not-blind.html#comments</comments>
		<pubDate>Sat, 12 Nov 2011 06:11:26 +0000</pubDate>
		<dc:creator>Chan Cham Chung</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[movie]]></category>

		<guid isPermaLink="false">http://blog.helosa.org/?p=481</guid>
		<description><![CDATA[2011 年11 月11 日，这个也变成一个节日了，而且是一个所谓的百年一遇的光棍节。 本来想买1 + 1 张 2011 年11 月11 日晚上11 点11 分的《失恋33 天》，谁知道早就爆满了，真可怕。 之前我就很喜欢《万有引力》里第一个小故事，就是文章和白百何的那个机场邂逅，这回又见到他们俩。 没文化，之前还没看过这本书，直接看的电影。 总的感觉下来，有点碎，都是零散的小事件加起来去承载主线。失恋并不可怕，可以让双方都更认识了解自己，从某一方面来说，也是一件好事，勉强真的没幸福。失恋没什么大不了的，不用要生要死。失恋，为了下一段更好的幸福。 其中有笑点有泪点，挺小清新的，我喜欢。尤其喜欢最后采访路人甲乙丙丁那part ，感动。]]></description>
			<content:encoded><![CDATA[<p>2011 年11 月11 日，这个也变成一个节日了，而且是一个所谓的百年一遇的光棍节。</p>
<p>本来想买1 + 1 张 2011 年11 月11 日晚上11 点11 分的《失恋33 天》，谁知道早就爆满了，真可怕。</p>
<p>之前我就很喜欢《万有引力》里第一个小故事，就是文章和白百何的那个机场邂逅，这回又见到他们俩。</p>
<p>没文化，之前还没看过这本书，直接看的电影。</p>
<p>总的感觉下来，有点碎，都是零散的小事件加起来去承载主线。失恋并不可怕，可以让双方都更认识了解自己，从某一方面来说，也是一件好事，勉强真的没幸福。失恋没什么大不了的，不用要生要死。失恋，为了下一段更好的幸福。</p>
<p>其中有笑点有泪点，挺小清新的，我喜欢。尤其喜欢最后采访路人甲乙丙丁那part ，感动。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.helosa.org/2011/11/12/love-is-not-blind.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configure FreeRadius with MySQL on Gentoo</title>
		<link>http://blog.helosa.org/2011/10/22/configure-freeradius-mysql-gentoo.html</link>
		<comments>http://blog.helosa.org/2011/10/22/configure-freeradius-mysql-gentoo.html#comments</comments>
		<pubDate>Sat, 22 Oct 2011 04:07:34 +0000</pubDate>
		<dc:creator>Chan Cham Chung</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[gentoo]]></category>

		<guid isPermaLink="false">http://blog.helosa.org/?p=478</guid>
		<description><![CDATA[安装支持MySQL 的FreeRadius ，默认是不支持的： USE=&#8221;mysql&#8221; emerge freeradius 或者 echo &#8220;=net-dialup/freeradius-2.0.5 mysql&#8221; &#62;&#62; /etc/portage/package.use emerge freeradius radius 的配置都在 /etc/raddb/ 里，我们需要修改的有 radiusd.conf , clients.conf , users , sql.conf , /site-enabled/default，分别对应服务器端，客户端，用户，数据库的配置，验证方式。其实由于这里使用了MySQL 记录用户的密码，所以其实不用修改users 也行。 我尽量在默认配置的基础上修改配置，可以不修改就不修改默认的配置。 radiusd.conf : 这里可以不修改，但最好修改一下，listen 的ipaddr 修改为内网吧。log 方面也可以适当开启一下。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; clients.conf : 客户机的配置，我这里其实是Airport Extreme。 client 192.168.1.10 { secret = testing shortname = AP nastype = other } &#8212;&#8212;&#8212;&#8212;- [...]]]></description>
			<content:encoded><![CDATA[<p>安装支持MySQL 的FreeRadius ，默认是不支持的：</p>
<p>USE=&#8221;mysql&#8221; emerge freeradius</p>
<p>或者</p>
<p>echo &#8220;=net-dialup/freeradius-2.0.5 mysql&#8221; &gt;&gt; /etc/portage/package.use</p>
<p>emerge freeradius</p>
<p>radius 的配置都在 /etc/raddb/ 里，我们需要修改的有 radiusd.conf , clients.conf , users , sql.conf , /site-enabled/default，分别对应服务器端，客户端，用户，数据库的配置，验证方式。其实由于这里使用了MySQL 记录用户的密码，所以其实不用修改users 也行。</p>
<p>我尽量在默认配置的基础上修改配置，可以不修改就不修改默认的配置。</p>
<p>radiusd.conf :</p>
<p>这里可以不修改，但最好修改一下，listen 的ipaddr 修改为内网吧。log 方面也可以适当开启一下。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>clients.conf :</p>
<p>客户机的配置，我这里其实是Airport Extreme。</p>
<div id="_mcePaste">client 192.168.1.10 {</div>
<div id="_mcePaste">secret = testing</div>
<div id="_mcePaste">shortname = AP</div>
<div id="_mcePaste">nastype = other</div>
<div id="_mcePaste">}</div>
<div>&#8212;&#8212;&#8212;&#8212;-</div>
<div>sql.conf:</div>
<div>先准备好MySQL 环境。</div>
<div>mysql&gt; create database radius ;</div>
<div>mysql&gt; grant all on radius.* to radius@localhost identfied by &#8216;testing&#8217; ;</div>
<div>$ mysql -uradius -ptesting radius &lt; /etc/raddb/sql/mysql/schema.sql</div>
<p>添加一个用户：</p>
<p>INSERT INTO radcheck (UserName, Attribute, Value) VALUES (&#8216;test&#8217;, &#8216;Password&#8217;, &#8217;123456&#8242;);</p>
<p>修改一下sql.conf 相应的配置：</p>
<p>login=&#8221;radius&#8221;</p>
<p>passsword=&#8221;testing&#8221;</p>
<p>radius_db=&#8221;radius&#8221;</p>
<p>&#8212;&#8212;&#8212;&#8211;</p>
<p>/etc/raddb/sites-enabled/default:</p>
<p>把 authorize 里的sql uncomment 了，这样才能启用sql 验证。</p>
<p>当然，有洁癖的话可以把其它没用的comment 了。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>测试下：</p>
<p>进入debug 模式：radiusd -X</p>
<p>测试命令：</p>
<p>语法：Usage: radtest user passwd radius-server[:port] nas-port-number secret</p>
<p>radtest test 123456 192.168.1.1 0 testing</p>
<p>如果是Access-Reject 就是失败了，Access-Accept 就是成功了。</p>
<p>===============</p>
<p>配置到此完毕，算是可用了，但还不完善。不过我在想，用MySQL 还不如用LDAP 吧。。。下回再弄弄。</p>
<p>Reference:</p>
<p>http://en.gentoo-wiki.com/wiki/Chillispot_with_FreeRadius_and_MySQL</p>
<p>http://www.gentoo-wiki.info/HOWTO_WPA_Enterprise_with_MySQL</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.helosa.org/2011/10/22/configure-freeradius-mysql-gentoo.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

