<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>深柳堂</title>
	<atom:link href="http://zhasm.com/feed" rel="self" type="application/rss+xml" />
	<link>http://zhasm.com</link>
	<description></description>
	<lastBuildDate>Sat, 10 Mar 2012 13:20:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>ubuntu 下运行 daemontools</title>
		<link>http://zhasm.com/2012/03/10/config-daemontools-under-ubuntu.html</link>
		<comments>http://zhasm.com/2012/03/10/config-daemontools-under-ubuntu.html#comments</comments>
		<pubDate>Sat, 10 Mar 2012 13:20:13 +0000</pubDate>
		<dc:creator>rex</dc:creator>
				<category><![CDATA[随笔]]></category>
		<category><![CDATA[daemontools]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://zhasm.com/?p=59</guid>
		<description><![CDATA[需要新建文件：/etc/init/svscan.conf 1234start on runlevel [12345] stop on runlevel [^12345] respawn exec /usr/bin/svscanboot 然后 mkdir /etc/service/ ，重启即可。以后新建的监控项目，ln -s 到该目录即可。]]></description>
			<content:encoded><![CDATA[<p>需要新建文件：/etc/init/svscan.conf</p>
<div class="codecolorer-container text mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">start on runlevel [12345]<br />
stop on runlevel [^12345]<br />
respawn<br />
exec /usr/bin/svscanboot</div></td></tr></tbody></table></div>
<p>然后 <code class="codecolorer text default"><span class="text">mkdir /etc/service/</span></code> ，重启即可。以后新建的监控项目，<code class="codecolorer text default"><span class="text">ln -s</span></code> 到该目录即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://zhasm.com/2012/03/10/config-daemontools-under-ubuntu.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用命令行＋xauth方式更新饭否消息的脚本</title>
		<link>http://zhasm.com/2011/11/23/updating-fanfou-msg-via-bash-cml.html</link>
		<comments>http://zhasm.com/2011/11/23/updating-fanfou-msg-via-bash-cml.html#comments</comments>
		<pubDate>Tue, 22 Nov 2011 17:34:05 +0000</pubDate>
		<dc:creator>rex</dc:creator>
				<category><![CDATA[随笔]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[fanfou]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[xauth]]></category>

		<guid isPermaLink="false">http://zhasm.com/?p=43</guid>
		<description><![CDATA[饭否API将于2012.01.01起，不再支持Basic认证方式了。对于习惯了命令行方式更新饭否消息的人来说，是个坏消息⋯⋯不过，XAuth方式也不错。下面是我整理的方法，供感兴趣者参考。下面的程序在Ubuntu11.10下正常运行。 Basic 认证 v.s. OAuth 认证 简言之，Basic认证是使用Base64算法加密用户名、密码，该算法是可逆的；Oauth认证是使用不可逆的算法（例如HMAC-SHA1）计算签名，用来认证、确定请求者身份。可以参考如下链接： OAuth基本流程简介 在线调试OAuth的工具 OAuth Test Client 脚本工具 使用脚本每次生成HMAC-SHA1签名太复杂，何况是使用Bash脚本方式。不过有高人已经写好了代码，我们Fork来用就可以了。我基于decklin/curlicue，Fork 之以便发送饭否消息。修改的地方包括： 摒弃全局的Oauth方式，明确指定为只处理饭否Xauth认证； -d&#124;--data&#124;-F模式为POST请求，其它为GET。 添加对含中文、空格、多个空格的消息的支持。 饭否版curlcue在这里：zhasm/curlicue。 如果你是开发者，而且已经申请了自己的consumer token/secret，可以使用方法如下： 将curlicue 代码clone到本地：git clone git://github.com/zhasm/curlicue.git 将curlicue和curlicue-setup加入$PATH中。 调用curlicue-setup，生成token。默认放置在$HOME/.fftoken/$fanfouid.token文件中。按提示输入各个选项值即可。例如图示： 此时已经做好了身份验证，以下就是如何调用API了。 1234567#post message curlicue -f $HOME/.fftoken/test.token -- -d &#34;status=hello world&#34; http://api.fanfou.com/statuses/update.xml #or curlicue &#8230;<p class="read-more"><a href="http://zhasm.com/2011/11/23/updating-fanfou-msg-via-bash-cml.html">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>饭否API将于2012.01.01起，不再支持Basic认证方式了。对于习惯了命令行方式更新饭否消息的人来说，是个坏消息⋯⋯不过，XAuth方式也不错。下面是我整理的方法，供感兴趣者参考。下面的程序在Ubuntu11.10下正常运行。</p>
<p> <span id="more-43"></span></p>
<h3 style="color: #127ADB; font-size:14px; padding-bottom:3px; padding-top:3px; margin:1.5em 0 1em;">Basic 认证 v.s. OAuth 认证 </h3>
<blockquote style="border-left:2px solid #DDDDDD; margin:15px 30px 0 10px; padding-left:20px;">
<p>简言之，Basic认证是使用Base64算法加密用户名、密码，该算法是可逆的；Oauth认证是使用不可逆的算法（例如HMAC-SHA1）计算签名，用来认证、确定请求者身份。可以参考如下链接：</p>
<blockquote style="border-left:2px solid #DDDDDD; margin:15px 30px 0 10px; padding-left:20px;">
<ul>
<li><a href="http://open.weibo.com/wiki/OAuth" title="深柳堂" target="_blank">OAuth基本流程简介</a></li>
<li>在线调试OAuth的工具 <a href="http://term.ie/oauth/example/client.php" title="深柳堂" target="_blank">OAuth Test Client</a>
            </li>
</ul>
</blockquote>
</blockquote>
<h3 style="color: #127ADB; font-size:14px; padding-bottom:3px; padding-top:3px; margin:1.5em 0 1em;">脚本工具</h3>
<blockquote style="border-left:2px solid #DDDDDD; margin:15px 30px 0 10px; padding-left:20px;">
<p>使用脚本每次生成HMAC-SHA1签名太复杂，何况是使用Bash脚本方式。不过有高人已经写好了代码，我们Fork来用就可以了。我基于<a href="https://github.com/decklin/curlicue" title="深柳堂" target="_blank">decklin/curlicue</a>，Fork 之以便发送饭否消息。修改的地方包括：</p>
<blockquote style="border-left:2px solid #DDDDDD; margin:15px 30px 0 10px; padding-left:20px;">
<ul>
<li>摒弃全局的Oauth方式，明确指定为只处理饭否Xauth认证；</li>
<li><code class="codecolorer bash default"><span class="bash"><span style="color: #660033;">-d</span><span style="color: #000000; font-weight: bold;">|</span>--data<span style="color: #000000; font-weight: bold;">|</span>-F</span></code>模式为<code class="codecolorer bash default"><span class="bash">POST</span></code>请求，其它为<code class="codecolorer bash default"><span class="bash">GET</span></code>。</li>
<li>添加对含中文、空格、多个空格的消息的支持。</li>
</ul>
</blockquote>
<p>饭否版curlcue在这里：<a href="https://github.com/zhasm/curlicue" title="深柳堂" target="_blank">zhasm/curlicue</a>。
</p>
<p>如果你是开发者，而且已经申请了自己的consumer token/secret，可以使用方法如下：</p>
<blockquote style="border-left:2px solid #DDDDDD; margin:15px 30px 0 10px; padding-left:20px;">
<ul>
<li>将curlicue 代码clone到本地：<code class="codecolorer bash default"><span class="bash"><span style="color: #c20cb9; font-weight: bold;">git clone</span> git:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>zhasm<span style="color: #000000; font-weight: bold;">/</span>curlicue.git</span></code></li>
<li>将<code class="codecolorer bash default"><span class="bash">curlicue</span></code>和<code class="codecolorer bash default"><span class="bash">curlicue-setup</span></code>加入<code class="codecolorer bash default"><span class="bash"><span style="color: #666666;">$</span>PATH</span></code>中。</li>
<li>调用<code class="codecolorer bash default"><span class="bash">curlicue-setup</span></code>，生成token。默认放置在<code class="codecolorer bash default"><span class="bash"><span style="color: #666666;">$</span>HOME<span style="color: #000000; font-weight: bold;">/</span>.fftoken<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$fanfouid</span>.token</span></code>文件中。按提示输入各个选项值即可。例如图示：<a target="_blank" href="http://min.us/lrDZLfo5WF6UF"><img src="http://i.minus.com/jrDZLfo5WF6UF.png" border="0"/></a></li>
<li>此时已经做好了身份验证，以下就是如何调用API了。</li>
<li>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">#post message</span><br />
curlicue <span style="color: #660033;">-f</span> <span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>.fftoken<span style="color: #000000; font-weight: bold;">/</span>test.token <span style="color: #660033;">--</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot;status=hello world&quot;</span> http:<span style="color: #000000; font-weight: bold;">//</span>api.fanfou.com<span style="color: #000000; font-weight: bold;">/</span>statuses<span style="color: #000000; font-weight: bold;">/</span>update.xml<br />
<span style="color: #666666; font-style: italic;">#or</span><br />
curlicue <span style="color: #660033;">-f</span> <span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>.fftoken<span style="color: #000000; font-weight: bold;">/</span>test.token http:<span style="color: #000000; font-weight: bold;">//</span>api.fanfou.com<span style="color: #000000; font-weight: bold;">/</span>statuses<span style="color: #000000; font-weight: bold;">/</span>update.xml <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot;status=helloworld&quot;</span><br />
<br />
<span style="color: #666666; font-style: italic;">#post image</span><br />
curlicue <span style="color: #660033;">-f</span> ~<span style="color: #000000; font-weight: bold;">/</span>.fftoken<span style="color: #000000; font-weight: bold;">/</span>test.token http:<span style="color: #000000; font-weight: bold;">//</span>api.fanfou.com<span style="color: #000000; font-weight: bold;">/</span>photos<span style="color: #000000; font-weight: bold;">/</span>upload.xml <span style="color: #660033;">-F</span> <span style="color: #ff0000;">'photo=@Selection_023.png'</span> <span style="color: #660033;">-F</span> <span style="color: #007800;">status</span>=<span style="color: #ff0000;">'st'</span></div></td></tr></tbody></table></div>
</li>
<li>以上两例已经能够说明用法，你可以举一反三。</li>
</ul>
</blockquote>
</blockquote>
<h3 style="color: #127ADB; font-size:14px; padding-bottom:3px; padding-top:3px; margin:1.5em 0 1em;">其它事项</h3>
<blockquote style="border-left:2px solid #DDDDDD; margin:15px 30px 0 10px; padding-left:20px;">
<blockquote style="border-left:2px solid #DDDDDD; margin:15px 30px 0 10px; padding-left:20px;">
<ul>
<li>在调试Oauth/Xauth时，如果出错，请时时留意<code class="codecolorer bash default"><span class="bash">Expected Basestring</span></code>的输出，并使用<code class="codecolorer bash default"><span class="bash"><span style="color: #660033;">-v</span></span></code>模式来观测自己程序的输出。我就是使用这种方法，一点一点调试中文、空格消息的。</li>
<li>虽然饭否无差异地支持JSON/XML输出模式，但在Bash下最好使用XML格式的API。原因是格式清晰。</li>
<li>上面的发消息、发图的例子很直白，但不简洁。其实可以使用Bash的Alias/Function封装一下，以便更好记。 例如封装成<code class="codecolorer bash default"><span class="bash">ff</span></code>发饭否消息，<code class="codecolorer bash default"><span class="bash">fimg</span></code>发图，等等，你懂的。</li>
<li>Bash命令行里，<code class="codecolorer bash default"><span class="bash"><span style="color: #660033;">--</span></span></code>表示清空参数设置。因此命令
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">curlicue <span style="color: #660033;">-f</span> <span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>.fftoken<span style="color: #000000; font-weight: bold;">/</span>test.token <span style="color: #660033;">--</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot;status=hello world&quot;</span> http:<span style="color: #000000; font-weight: bold;">//</span>api.fanfou.com<span style="color: #000000; font-weight: bold;">/</span>statuses<span style="color: #000000; font-weight: bold;">/</span>update.xm</div></td></tr></tbody></table></div>
<p>以该符号为界，前半部分的参数由<code class="codecolorer bash default"><span class="bash">curlicue</span></code>响应；后半部分的参数则由<code class="codecolorer bash default"><span class="bash">curl</span></code>响应。详细可见源码。
</li>
<li>Bash真是一门很方便、很强大的语言。</li>
</ul>
</blockquote>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://zhasm.com/2011/11/23/updating-fanfou-msg-via-bash-cml.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>简单的数据库备份脚本</title>
		<link>http://zhasm.com/2011/10/30/mysql-backup.html</link>
		<comments>http://zhasm.com/2011/10/30/mysql-backup.html#comments</comments>
		<pubDate>Sun, 30 Oct 2011 02:21:08 +0000</pubDate>
		<dc:creator>rex</dc:creator>
				<category><![CDATA[随笔]]></category>

		<guid isPermaLink="false">http://zhasm.com/?p=40</guid>
		<description><![CDATA[如果MySQL的数据已经达到几个G或更多，可以使用xtrabackup之类的企业级开源软件，进行热备份；对于wordpress或discuz!，也分别有相应的数据库备份插件。其余的备份，可以参考下面的脚本。 12345678910111213141516171819202122232425#!/bin/bash #localhost by default dbhost=DBHOST dbuser=DBUSER dbpass=DBPASSWD #dbnames, seperated by space dbs=&#34;DB1 DB2&#34; dir=~/bkup mailer=~/bin/eml for db in $dbs do &#160; &#160; fname=$dir/${db}_`date +%Y-%m-%d`.sql &#160; &#160; fname1=$dir/${db}_`date +%Y-%m-%d -d &#34;5 days ago&#34;`.sql.bz2 &#160; &#160; mysqldump -h $dbhost -u $dbuser &#8230;<p class="read-more"><a href="http://zhasm.com/2011/10/30/mysql-backup.html">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>如果MySQL的数据已经达到几个G或更多，可以使用<a href="http://www.percona.com/doc/percona-xtrabackup/" title="深柳堂" target="_blank">xtrabackup</a>之类的企业级开源软件，进行热备份；对于wordpress或discuz!，也分别有相应的数据库备份插件。其余的备份，可以参考下面的脚本。<span id="more-40"></span> </p>
<p><div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">#!/bin/bash</span><br />
<span style="color: #666666; font-style: italic;">#localhost by default</span><br />
<span style="color: #007800;">dbhost</span>=DBHOST<br />
<span style="color: #007800;">dbuser</span>=DBUSER<br />
<span style="color: #007800;">dbpass</span>=DBPASSWD<br />
<span style="color: #666666; font-style: italic;">#dbnames, seperated by space</span><br />
<span style="color: #007800;">dbs</span>=<span style="color: #ff0000;">&quot;DB1 DB2&quot;</span><br />
<span style="color: #007800;">dir</span>=~<span style="color: #000000; font-weight: bold;">/</span>bkup<br />
<span style="color: #007800;">mailer</span>=~<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>eml<br />
<br />
<span style="color: #000000; font-weight: bold;">for</span> db <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #007800;">$dbs</span><br />
<span style="color: #000000; font-weight: bold;">do</span><br />
&nbsp; &nbsp; <span style="color: #007800;">fname</span>=<span style="color: #007800;">$dir</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${db}</span>_<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y-<span style="color: #000000; font-weight: bold;">%</span>m-<span style="color: #000000; font-weight: bold;">%</span>d<span style="color: #000000; font-weight: bold;">`</span>.sql<br />
&nbsp; &nbsp; <span style="color: #007800;">fname1</span>=<span style="color: #007800;">$dir</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${db}</span>_<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y-<span style="color: #000000; font-weight: bold;">%</span>m-<span style="color: #000000; font-weight: bold;">%</span>d <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot;5 days ago&quot;</span><span style="color: #000000; font-weight: bold;">`</span>.sql.bz2<br />
&nbsp; &nbsp; mysqldump <span style="color: #660033;">-h</span> <span style="color: #007800;">$dbhost</span> <span style="color: #660033;">-u</span> <span style="color: #007800;">$dbuser</span> -p<span style="color: #007800;">$dbpass</span> <span style="color: #660033;">--databases</span> <span style="color: #007800;">$db</span><span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$fname</span><br />
&nbsp; &nbsp; <span style="color: #c20cb9; font-weight: bold;">bzip2</span> <span style="color: #007800;">$fname</span><br />
&nbsp; &nbsp; <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #007800;">$fname1</span><br />
&nbsp; &nbsp; <span style="color: #007800;">recepient</span>=rex<span style="color: #000000; font-weight: bold;">@</span>zhasm.com<br />
&nbsp; &nbsp; <span style="color: #007800;">day</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>A<span style="color: #000000; font-weight: bold;">`</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">#only send email on every Monday</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$day</span> == <span style="color: #ff0000;">&quot;Monday&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$fname</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #007800;">$mailer</span> <span style="color: #660033;">-a</span> <span style="color: #007800;">$fname</span>.bz2 <span style="color: #660033;">-t</span> <span style="color: #007800;">$recepient</span> <span style="color: #660033;">-s</span> <span style="color: #ff0000;">&quot;[DB][<span style="color: #007800;">$db</span>][<span style="color: #780078;">`date +%Y-%m-%d`</span>] Database Backup&quot;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">fi</span><br />
<span style="color: #000000; font-weight: bold;">done</span></div></td></tr></tbody></table></div>
</p>
<blockquote style="border-left:2px solid #DDDDDD; margin:15px 30px 0 10px; padding-left:20px;">
<ul>
<li>上面程序中用到的mailer脚本，是一个用python实现的附件发送脚本，源码在这里 <a href="https://gist.github.com/1324035" title="python mailer|深柳堂" target="_blank">mailer</a> 。</li>
<li>对于多个数据库，分别备份至单独的文件。如果每个库都不大，也可以偷懒放到一个文件中。只需在<code class="codecolorer bash default"><span class="bash">mysqldump</span></code><code class="codecolorer bash default"><span class="bash"><span style="color: #660033;">--databases</span></span></code>添加所有需备份的数据库名称即可，使用空格隔开。</li>
</ul>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://zhasm.com/2011/10/30/mysql-backup.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ubuntu下安装fcitx</title>
		<link>http://zhasm.com/2011/10/17/fcitx-4-ubuntu.html</link>
		<comments>http://zhasm.com/2011/10/17/fcitx-4-ubuntu.html#comments</comments>
		<pubDate>Mon, 17 Oct 2011 13:41:51 +0000</pubDate>
		<dc:creator>rex</dc:creator>
				<category><![CDATA[随笔]]></category>

		<guid isPermaLink="false">http://zhasm.com/?p=28</guid>
		<description><![CDATA[Ubuntu11.10默认的输入法是ibus。不过，回归之后的fcitx更好更强大，新版本还自动支持google-pinyin模式，虽然该模式还不能云同步词库。以下是我的安装笔记。 我的安装步骤如下： 123456789101112131415161718192021222324252627#卸载ibus: sudo apt-get remove ibus #使用root权限追加下面两行内容到 /etc/apt/sources.list 文件：（#添加以下内容，请将oneiric替换为自己的版本名称。 #如果不这样做，所安装的 fcitx 版本只能是 4.0.1，不是较新的 4.1.1 ，也无法使用google-pinyin, 无法设置候选词条竖 #排模式。) deb http://ppa.launchpad.net/fcitx-team/nightly/ubuntu oneiric &#160;main deb-src http://ppa.launchpad.net/fcitx-team/nightly/ubuntu oneiric main #更新源： sudo apt-get update #安装 fcitx，im-config sudo apt-get install fcitx im-config fcitx-config-gtk #设置开X时启动fcitx cat &#8230;<p class="read-more"><a href="http://zhasm.com/2011/10/17/fcitx-4-ubuntu.html">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Ubuntu11.10默认的输入法是ibus。不过，回归之后的fcitx更好更强大，新版本还自动支持google-pinyin模式，虽然该模式还不能云同步词库。以下是我的安装笔记。<span id="more-28"></span></p>
<p>我的安装步骤如下：</p>
<div class="codecolorer-container html4strict mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">#卸载ibus:<br />
sudo apt-get remove ibus<br />
<br />
#使用root权限追加下面两行内容到 /etc/apt/sources.list 文件：（#添加以下内容，请将oneiric替换为自己的版本名称。<br />
#如果不这样做，所安装的 fcitx 版本只能是 4.0.1，不是较新的 4.1.1 ，也无法使用google-pinyin, 无法设置候选词条竖<br />
#排模式。)<br />
<br />
deb http://ppa.launchpad.net/fcitx-team/nightly/ubuntu oneiric &nbsp;main <br />
deb-src http://ppa.launchpad.net/fcitx-team/nightly/ubuntu oneiric main <br />
<br />
#更新源：<br />
sudo apt-get update<br />
<br />
#安装 fcitx，im-config<br />
sudo apt-get install fcitx im-config fcitx-config-gtk<br />
<br />
#设置开X时启动fcitx<br />
cat &gt;&gt; ~/.xprofile <span style="color: #009900;">&lt;&lt;EOF</span><br />
<span style="color: #009900;">#ime</span><br />
<span style="color: #009900;">export XMODIFIERS<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;@im=fcitx&quot;</span></span><br />
<span style="color: #009900;">export XIM<span style="color: #66cc66;">=</span>fcitx</span><br />
<span style="color: #009900;">export XIM_PROGRAM<span style="color: #66cc66;">=</span>fcitx</span><br />
<span style="color: #009900;">export LC_CTYPE<span style="color: #66cc66;">=</span>zh_CN.UTF-<span style="color: #cc66cc;">8</span></span><br />
<span style="color: #009900;">EOF</span><br />
<br />
<span style="color: #009900;">#启动GUI程序，强行设置fcitx为默认输入法（选择fcitx即可）</span><br />
<span style="color: #009900;">im-config</span></div></td></tr></tbody></table></div>
<p>然后重启X，搞定。</p>
<p>附图：</p>
<ul>
<li>设置im-config： <br /><img src="http://i.minus.com/jD6ZJOSPpyN5D.png" border="0"/>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://zhasm.com/2011/10/17/fcitx-4-ubuntu.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>白雪公主</title>
		<link>http://zhasm.com/2011/10/07/snow-white.html</link>
		<comments>http://zhasm.com/2011/10/07/snow-white.html#comments</comments>
		<pubDate>Fri, 07 Oct 2011 13:36:43 +0000</pubDate>
		<dc:creator>rex</dc:creator>
				<category><![CDATA[随笔]]></category>

		<guid isPermaLink="false">http://zhasm.com/?p=23</guid>
		<description><![CDATA[白雪公主在小矮人床上睡了一宿。床小被子短，感觉脚底板飕飕冒凉风。半夜就有些鼻塞，咳嗽到五更天。矮人叔叔想请天假陪她，小白说，这点病没关系，别耽误你工作，攒着假春节用呗。矮叔一再嘱咐小白，要喝开水，吃水果，多休息。吃了药刚躺下，可巧门口有人在叫卖苹果。“每日一苹果，医生远离我”，小白心想，于是买来，洗净削皮，刚吃一口，满身湿疹，口吐白沫，眼看不行了。矮叔接到电话赶紧送到医院，挂了急诊。血常规显示嗜酸性粒细胞偏高，医生诊断：过敏性体质，可能对苹果过敏，建议做过敏源检测；另外吃水果千万注意削皮，平时注意食品卫生，以防止肠道寄生虫。医生问，自费还是公费？矮叔代答：有医保卡，不过请大夫开管事的药，自费也没问题，关键是赶紧治好。又抽一管血做了过敏源。矮叔陪小白到点滴区挂了盐水，说先去单位了，下班时过来接她。小白目送矮叔离开，有一点头晕，心想抽这点血不至于啊。一侧身发现一个老太太。老太太搭讪，小妹妹你的头发乱了，我这里有越南产的人工打磨镶嵌贝壳牛角梳，要不要来一把？]]></description>
			<content:encoded><![CDATA[<p>白雪公主在小矮人床上睡了一宿。<span id="more-23"></span>床小被子短，感觉脚底板飕飕冒凉风。半夜就有些鼻塞，咳嗽到五更天。矮人叔叔想请天假陪她，小白说，这点病没关系，别耽误你工作，攒着假春节用呗。矮叔一再嘱咐小白，要喝开水，吃水果，多休息。吃了药刚躺下，可巧门口有人在叫卖苹果。“每日一苹果，医生远离我”，小白心想，于是买来，洗净削皮，刚吃一口，满身湿疹，口吐白沫，眼看不行了。矮叔接到电话赶紧送到医院，挂了急诊。血常规显示嗜酸性粒细胞偏高，医生诊断：过敏性体质，可能对苹果过敏，建议做过敏源检测；另外吃水果千万注意削皮，平时注意食品卫生，以防止肠道寄生虫。医生问，自费还是公费？矮叔代答：有医保卡，不过请大夫开管事的药，自费也没问题，关键是赶紧治好。又抽一管血做了过敏源。矮叔陪小白到点滴区挂了盐水，说先去单位了，下班时过来接她。小白目送矮叔离开，有一点头晕，心想抽这点血不至于啊。一侧身发现一个老太太。老太太搭讪，小妹妹你的头发乱了，我这里有越南产的人工打磨镶嵌贝壳牛角梳，要不要来一把？</p>
]]></content:encoded>
			<wfw:commentRss>http://zhasm.com/2011/10/07/snow-white.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tactile pro 初体验</title>
		<link>http://zhasm.com/2011/09/30/tactile-pro.html</link>
		<comments>http://zhasm.com/2011/09/30/tactile-pro.html#comments</comments>
		<pubDate>Fri, 30 Sep 2011 12:50:07 +0000</pubDate>
		<dc:creator>rex</dc:creator>
				<category><![CDATA[随笔]]></category>

		<guid isPermaLink="false">http://zhasm.com/?p=20</guid>
		<description><![CDATA[使用GG搜索best mac keyboard，搜索的结果是tactile pro. 可是该键盘包装上，写的却是a better keyboard for mac，还是挺谦虚的。 键盘纯白色，非常漂亮。想象不出黑色的该是什么模样。打开使用时，有种把桌子抹净、然后净手焚香的冲动。不过，键盘就是拿来用的，没有必要这样。最好是疯狂打代码才对得起它。 我之前用茶轴多一些，说不出tactile pro 的键轴更偏向于哪种。个人感觉，它力道比茶轴稍大些，但也没有黑轴那样太重；段落感极为明显，简直就是一个轻量级的打字机；脆生劲儿，就像是青轴。 这端时间本来已经适应并依赖上了Poker的极简模式的键盘布局，现在使用全尺寸键盘，反而有些受宠若惊的感觉；左手小指头一探就完成了ESC，有些不可思议；方向键其实右手按控制，左手按WASD其实更顺手些。 声音稍大些，在家里好吵，必须单处一室才好。 最后的感想：好好工作，多产出；享受数码产品的便利，改善工作环境，让工作变成享受；物欲适可而止，年内不准备再入任何键盘，即使是Poker 75%，我也要hold 住。]]></description>
			<content:encoded><![CDATA[<p>使用GG搜索best mac keyboard，搜索的结果是tactile pro. 可是该键盘包装上，写的却是a better keyboard for mac，还是挺谦虚的。<span id="more-20"></span></p>
<p>键盘纯白色，非常漂亮。想象不出黑色的该是什么模样。打开使用时，有种把桌子抹净、然后净手焚香的冲动。不过，键盘就是拿来用的，没有必要这样。最好是疯狂打代码才对得起它。</p>
<p>我之前用茶轴多一些，说不出tactile pro 的键轴更偏向于哪种。个人感觉，它力道比茶轴稍大些，但也没有黑轴那样太重；段落感极为明显，简直就是一个轻量级的打字机；脆生劲儿，就像是青轴。</p>
<p>这端时间本来已经适应并依赖上了Poker的极简模式的键盘布局，现在使用全尺寸键盘，反而有些受宠若惊的感觉；左手小指头一探就完成了ESC，有些不可思议；方向键其实右手按控制，左手按WASD其实更顺手些。</p>
<p>声音稍大些，在家里好吵，必须单处一室才好。</p>
<p>最后的感想：好好工作，多产出；享受数码产品的便利，改善工作环境，让工作变成享受；物欲适可而止，年内不准备再入任何键盘，即使是Poker 75%，我也要hold 住。</p>
]]></content:encoded>
			<wfw:commentRss>http://zhasm.com/2011/09/30/tactile-pro.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>键入佳境</title>
		<link>http://zhasm.com/2011/07/17/keyboards.html</link>
		<comments>http://zhasm.com/2011/07/17/keyboards.html#comments</comments>
		<pubDate>Sun, 17 Jul 2011 04:42:22 +0000</pubDate>
		<dc:creator>rex</dc:creator>
				<category><![CDATA[随笔]]></category>
		<category><![CDATA[hhkb]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[pbt]]></category>

		<guid isPermaLink="false">http://www.zhasm.com/?p=1</guid>
		<description><![CDATA[好久没写过 blog 了，不知道怎样写。不过可以这样尝试一下，写成N小段，每段140字以内。本文晒一下我所体验过的键盘。 DELL 8115。一共买过两把8115，一把自用，一把送人。特点：经典，简约，还不贵。（淘宝大约35元左右。人民币。下同）。 DELL 8135。是8115的加强版，增加了多媒体键，以及键盘托。还不错。大约85元。这款键盘我用的时间最长（三年），以致于不少键已经磨光了，按键也渐渐失去了弹性。 苹果键盘。笔记本MBP的键盘用得较多，一般般吧，当然没有特别难用的感觉，但是也不是令人精神振奋的爽手感觉。iMac的键盘只浅尝辄止地试过，跟笔记本的区别不大。 HHKB Lite。体验过几天，手感强于一般的薄膜键盘。但是，它的布局实在是太酷了。体验的时间较短，以致于还没有适应它右置的 `~ 键。我几乎要买一款HHKB Lite for Mac了，但是最终因为它只有薄膜版而未入手。参考价格600。 没有体验过HHKB Pro，但是心向往之。这款应该是静电电容键盘里当仁不让的代表作。大名鼎鼎的里查德斯托曼用的就是99刀的笔记本，外接299刀的HHKB Pro。如果我不差钱的话，怎么着也得体验一下吧。参考价格：2000。 厌倦了薄膜时代，终于进入机械时代了。体验过的第一款机械键盘是PLU ML87茶轴。作为入门，选中规中矩的茶轴没错。等有了体验和比较，再慢慢选其它轴也不晚。对于PLU ML87感觉甚好。内置钢板，有效保护电路，分量十足。白璧微瑕是，如果把Caps Lock映射为Left Ctrl，则该键在mac下时有不灵。当然，如果你只使用默认的键盘布局，这款键盘还是相当不错的。参考价格：380。吐槽：该款键盘应该是山寨了日本的Flico 87圣手。 茶轴 KBC Pocker，目前一直在用，也是感觉最满意的一款，多说几句。特点：布局精简紧凑（40％键盘），不太常用的键全用组合键代替，例如使用Fuction+wsad来代替上下左右；定制性高，背面有4个开关可以自定义一些硬映射；重量轻，不像PLU那样沉重，可以放在包里随身携带。我其实就把它当成HHKB来用了。参考价格：400元。 青轴Noppoo Choc Mini84，简单体验了一下，手感很好，键位精简但是不过份，分量界于PLU与KBC。通过体验，我感觉到青轴是茶轴之外另一种不错的选择。不过就本款键盘而言，使用Mac的朋友就不必考虑了，好多键位不识别。 再来说一下键帽。一般键帽的材质是ABC，好处是成本低，易加工，坏处是易磨光，俗称“打油”。我的8135已经打油得不成样子了。ABS之外，有PBT，POM材质可选。PBT号称白色岩石，POM号称赛钢，可见其硬度。机械键盘一般可以拔下键帽自由替换。例如，我把用得最多的WASDFJ等键升级为PBT，同时将win/alt两键拔下来互换，同时交换映射，以便与Mac布置保持一致。注意，每排键盘的高度是不一样的，如果要自行购置，需注意是哪一排。另外，F与J是带盲点的，幸运的话，可以单独淘到。 印刻。机械键盘一般分为无刻，有刻，同刻，侧刻这几种模式。无刻自然是不带任何文字，适用于盲打高手，或者自定义狂人，例如采用德沃夏克(Dvorak)布局的Geek。有刻的不必细说。同刻的是指印刷颜色与键盘颜色相近。侧刻则是指印刷位置没在表面，而是在眼睛所能看到的键帽侧面。个人感觉，对于迷你键盘，组合键较多，一般不适合无刻；同刻倒是不错，既有效地避免眼睛对键帽文字的依赖，同时在需要的时候也可以参考。 值得入手一款机械键盘么? 我的结论是，对于天天在电脑前敲代码的程序员，值得拥有一款适合自己的机械键盘。一部mac要八千一万，一部iphone4要4k+。而一款机械键盘，三五百就可以搞定。笔记本外接机械键盘和显示器，是完美的组合。打字是享受，夏天不烫手。另外机械键盘的特点是非常耐用，据称每个键的寿命在2000万～5000万次左右。 值个入手一款过千的机械键盘么? 这个因人而异，我就不予置评了。以我之见，从80元的薄膜键盘，到400元的机械键盘，手感幸福指数可以提升5倍；但是从400元的机械键盘，再到2000元的机械（电容）键盘，手感幸福指数的提升，应该不到1/5吧。键盘只是工具，是程序员的剑柄，而非宝剑，顺手就得。 如何选择一款适合自己的机械键盘? 最好是身边的同事已经在用，这样的话拿来体验一周两周的，可以知道是否适合自己。至少也要就近到店里体验一下。与同事机友交流一下，相信机友们都十分乐意分享自己对所用键盘的经验。另外，可以使用“型号”＋“缺点”，作为关键词，搜索一下别人对某款机械键盘的抱怨，以便更加理性地选择。]]></description>
			<content:encoded><![CDATA[<p>好久没写过 blog 了，不知道怎样写。不过可以这样尝试一下，写成N小段，每段140字以内。本文晒一下我所体验过的键盘。<span id="more-1"></span></p>
<p>DELL 8115。一共买过两把8115，一把自用，一把送人。特点：经典，简约，还不贵。（淘宝大约35元左右。人民币。下同）。</p>
<p>DELL 8135。是8115的加强版，增加了多媒体键，以及键盘托。还不错。大约85元。这款键盘我用的时间最长（三年），以致于不少键已经磨光了，按键也渐渐失去了弹性。</p>
<p>苹果键盘。笔记本MBP的键盘用得较多，一般般吧，当然没有特别难用的感觉，但是也不是令人精神振奋的爽手感觉。iMac的键盘只浅尝辄止地试过，跟笔记本的区别不大。</p>
<p>HHKB Lite。体验过几天，手感强于一般的薄膜键盘。但是，它的布局实在是太酷了。体验的时间较短，以致于还没有适应它右置的 `~ 键。我几乎要买一款HHKB Lite for Mac了，但是最终因为它只有薄膜版而未入手。参考价格600。<br />
<a href="http://zhasm.com/2011/07/17/keyboards.html" target="_blank"><img  width="640" src="http://i293.photobucket.com/albums/mm60/zhasm/overview_standard_jpb_l.jpg" border="0" alt="深柳堂 键入佳境"></a><br />
<a href="http://zhasm.com/2011/07/17/keyboards.html" target="_blank"><img width="640"  src="http://i293.photobucket.com/albums/mm60/zhasm/overview_standard_jp.jpg" border="0" alt="深柳堂 键入佳境"></a></p>
<p>没有体验过HHKB Pro，但是心向往之。这款应该是静电电容键盘里当仁不让的代表作。大名鼎鼎的里查德斯托曼用的就是99刀的笔记本，外接299刀的HHKB Pro。如果我不差钱的话，怎么着也得体验一下吧。参考价格：2000。<br />
<a href="http://zhasm.com/2011/07/17/keyboards.html" target="_blank" title="里查德 斯托曼"><img  width="640" src="http://i293.photobucket.com/albums/mm60/zhasm/richardstallman2.jpg" border="0" alt="深柳堂 键入佳境"></a></p>
<p><a href="http://zhasm.com/2011/07/17/keyboards.html" target="_blank" title="里查德 斯托曼 的键盘"><img  width="640" src="http://i293.photobucket.com/albums/mm60/zhasm/richardstallman1.jpg" border="0" alt="深柳堂 键入佳境"></a><br />
厌倦了薄膜时代，终于进入机械时代了。体验过的第一款机械键盘是PLU ML87茶轴。作为入门，选中规中矩的茶轴没错。等有了体验和比较，再慢慢选其它轴也不晚。对于PLU ML87感觉甚好。内置钢板，有效保护电路，分量十足。白璧微瑕是，如果把Caps Lock映射为Left Ctrl，则该键在mac下时有不灵。当然，如果你只使用默认的键盘布局，这款键盘还是相当不错的。参考价格：380。吐槽：该款键盘应该是山寨了日本的Flico 87圣手。</p>
<p>茶轴 KBC Pocker，目前一直在用，也是感觉最满意的一款，多说几句。特点：布局精简紧凑（40％键盘），不太常用的键全用组合键代替，例如使用Fuction+wsad来代替上下左右；定制性高，背面有4个开关可以自定义一些硬映射；重量轻，不像PLU那样沉重，可以放在包里随身携带。我其实就把它当成HHKB来用了。参考价格：400元。</p>
<p>青轴Noppoo Choc Mini84，简单体验了一下，手感很好，键位精简但是不过份，分量界于PLU与KBC。通过体验，我感觉到青轴是茶轴之外另一种不错的选择。不过就本款键盘而言，使用Mac的朋友就不必考虑了，好多键位不识别。</p>
<p>再来说一下键帽。一般键帽的材质是ABC，好处是成本低，易加工，坏处是易磨光，俗称“打油”。我的8135已经打油得不成样子了。ABS之外，有PBT，POM材质可选。PBT号称白色岩石，POM号称赛钢，可见其硬度。机械键盘一般可以拔下键帽自由替换。例如，我把用得最多的WASDFJ等键升级为PBT，同时将win/alt两键拔下来互换，同时交换映射，以便与Mac布置保持一致。注意，每排键盘的高度是不一样的，如果要自行购置，需注意是哪一排。另外，F与J是带盲点的，幸运的话，可以单独淘到。</p>
<p>印刻。机械键盘一般分为无刻，有刻，同刻，侧刻这几种模式。无刻自然是不带任何文字，适用于盲打高手，或者自定义狂人，例如采用德沃夏克(Dvorak)布局的Geek。有刻的不必细说。同刻的是指印刷颜色与键盘颜色相近。侧刻则是指印刷位置没在表面，而是在眼睛所能看到的键帽侧面。个人感觉，对于迷你键盘，组合键较多，一般不适合无刻；同刻倒是不错，既有效地避免眼睛对键帽文字的依赖，同时在需要的时候也可以参考。<br />
<a href="http://zhasm.com/2011/07/17/keyboards.html" target="_blank" title="Dvorak 键盘"><img  width="640" src="http://i293.photobucket.com/albums/mm60/zhasm/The_Dvorak_Simplified_Keyboard_by_0178120181524.jpg" border="0" alt="深柳堂 键入佳境"></a></p>
<p>值得入手一款机械键盘么? 我的结论是，对于天天在电脑前敲代码的程序员，值得拥有一款适合自己的机械键盘。一部mac要八千一万，一部iphone4要4k+。而一款机械键盘，三五百就可以搞定。笔记本外接机械键盘和显示器，是完美的组合。打字是享受，夏天不烫手。另外机械键盘的特点是非常耐用，据称每个键的寿命在2000万～5000万次左右。</p>
<p>值个入手一款过千的机械键盘么? 这个因人而异，我就不予置评了。以我之见，从80元的薄膜键盘，到400元的机械键盘，手感幸福指数可以提升5倍；但是从400元的机械键盘，再到2000元的机械（电容）键盘，手感幸福指数的提升，应该不到1/5吧。键盘只是工具，是程序员的剑柄，而非宝剑，顺手就得。</p>
<p>如何选择一款适合自己的机械键盘? 最好是身边的同事已经在用，这样的话拿来体验一周两周的，可以知道是否适合自己。至少也要就近到店里体验一下。与同事机友交流一下，相信机友们都十分乐意分享自己对所用键盘的经验。另外，可以使用“型号”＋“缺点”，作为关键词，搜索一下别人对某款机械键盘的抱怨，以便更加理性地选择。<br />
<a href="http://zhasm.com/2011/07/17/keyboards.html" target="_blank" title="KBC Poker"><img  width="640" src="http://i293.photobucket.com/albums/mm60/zhasm/IMG_0208.jpg" border="0" alt="深柳堂 键入佳境"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://zhasm.com/2011/07/17/keyboards.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

