<?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>某人的栖息地 &#187; common</title>
	<atom:link href="http://www.ooso.net/category/common/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ooso.net</link>
	<description>Linux + Apache + Mysql + Php + Flash</description>
	<lastBuildDate>Thu, 19 Jan 2012 01:21:44 +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>git flow使用经验小记</title>
		<link>http://www.ooso.net/archives/588</link>
		<comments>http://www.ooso.net/archives/588#comments</comments>
		<pubDate>Thu, 23 Jun 2011 02:25:43 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git-flow]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=588</guid>
		<description><![CDATA[我在半年前开始在公司内推广使用git flow，控制版本发布流程，到目前为止效果令人满意。
但是实际使用过程中有一些小小的意外流程，完全照搬git flow的模型不太容易处理好。好在git本身就很灵活，碰到问题基本上都有办法绕过去。下面是我总结的一些特例情况下的处理办法。

测试/共享单独一个feature

				<span class="readmore"><a href="http://www.ooso.net/archives/588" title="git flow使用经验小记">阅读全文（838字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>我在半年前开始在公司内推广使用<a href="http://nvie.com/posts/a-successful-git-branching-model/">git flow</a>，控制版本发布流程，到目前为止效果令人满意。</p>
<p>但是实际使用过程中有一些小小的意外流程，完全照搬git flow的模型不太容易处理好。好在git本身就很灵活，碰到问题基本上都有办法绕过去。下面是我总结的一些特例情况下的处理办法。</p>
<p><img src="http://www.ooso.net/wp-content/uploads/2011/06/gitflow.png" alt="git-flow" /></p>
<h2>测试/共享单独一个feature</h2>
<p>有时候我们需要将一个feature独立测试，或者share给多人一块开发，那么可以将这个feature推到远程git库上，这可以利用git flow的publish功能搞定:</p>
<pre><code>git flow feature publish my_cool_feature</code></pre>
<p>这会将 feature/my_cool_feature 分支push到远程git库，多人开发或者单独测试毫无压力。</p>
<h2>feature在development分支测试完成，准备release的时候有另外一个未经测试的feature合并进来</h2>
<p>已经完成测试的development被未经测试的提交污染了，这时候可以先本地回滚development分支，然后再进行git flow的release流程，例如:</p>
<pre><code>git checkout development
git reset --hard 5cbadfe885d1eb514b3f07b3f269ca1a7f261e21   #假设测试通过的git rev是这个
git flow release start v1.0.1
git flow release finish v1.0.1</code></pre>
<h2>development上有个feature需要测试比较长时间，影响了一些耗时较短的feature发布 </h2>
<p>development分支上有个feature测试时间比较长一直释放不了，怎么办？—— 果断采用hotfix功能</p>
<pre><code>git br -m feature/another_cool_feature hotfix/another_cool_feature</code></pre>
<p>把耗时短的feature直接转换为hotfix，然后采用git flow的hotfix流程可以直接合并到master分支发布。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/588/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>设置自动重连的ssh代理通道</title>
		<link>http://www.ooso.net/archives/586</link>
		<comments>http://www.ooso.net/archives/586#comments</comments>
		<pubDate>Wed, 09 Feb 2011 08:21:55 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=586</guid>
		<description><![CDATA[我目前常用的翻墙办法就是拿ssh搭个代理通道，然后chrome + switch!插件一起配合，这就算翻墙了。这法子只要拿个机器跑一小脚本，比如：
ssh -D 7070 -qnN [username]@[server]
但是ssh通道如果闲置了一段时间，就会自动断连，等我需要用到代理的时候往往又得蛋疼的重新跑一遍，非常麻烦。所以我刻苦学习前辈的经验，找到一个解决办法，在mac或linux下都可使用，分享如下:


				<span class="readmore"><a href="http://www.ooso.net/archives/586" title="设置自动重连的ssh代理通道">阅读全文（494字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>我目前常用的翻墙办法就是拿<a href="/tag/ssh">ssh</a>搭个代理通道，然后chrome + switch!插件一起配合，这就算翻墙了。这法子只要拿个机器跑一小脚本，比如：</p>
<pre><code>ssh -D 7070 -qnN [username]@[server]</code></pre>
<p>但是ssh通道如果闲置了一段时间，就会自动断连，等我需要用到代理的时候往往又得蛋疼的重新跑一遍，非常麻烦。所以我刻苦学习前辈的经验，找到一个解决办法，在mac或linux下都可使用，分享如下:</p>
<ul>
<li>把ssh配置为免密码登录，这个一搜一大把，略过不提</li>
<li>在/etc/inittab的最后一行加上:
<pre><code>tunl:345:respawn:/usr/bin/ssh -D 7070 -qnN [username]@[server] &gt; /dev/null 2&gt;&#038;1</code></pre>
</li>
<li>让修改的inittab马上生效
<pre><code>sudo init q</code></pre>
</li>
<li>在/root/.ssh/config里加上几行
<pre><code>Host *
  ServerAliveInterval 60</code></pre>
</li>
</ul>
<p>然后这个ssh通道就会自动重连了。</p>
<h2>Update</h2>
<ul>
<li>增加了一个ssh配置，要不然这个进程虽然在，但是通道已经连不上了</li>
<li>.ssh/config的配置是关键，/etc/inittab的配置只是让服务器开机即启动ssh通道</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/586/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>mac下的tree命令</title>
		<link>http://www.ooso.net/archives/564</link>
		<comments>http://www.ooso.net/archives/564#comments</comments>
		<pubDate>Mon, 22 Nov 2010 12:34:50 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tree]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=564</guid>
		<description><![CDATA[在默认安装安装的mac下没有找到tree命令，找了一下原来有个比较流氓的解决办法：
find . -print &#124; sed -e 's;[^/]*/;&#124;____;g;s;____&#124;; &#124;;g'
这个命令行跑起来类似平常tree的效果，比如：
.

				<span class="readmore"><a href="http://www.ooso.net/archives/564" title="mac下的tree命令">阅读全文（881字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>在默认安装安装的mac下没有找到tree命令，找了一下原来有个比较流氓的解决办法：</p>
<pre><code>find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'</code></pre>
<p>这个命令行跑起来类似平常tree的效果，比如：</p>
<pre><code>.
|____extra
| |____httpd-autoindex.conf
| |____httpd-dav.conf
| |____httpd-default.conf
| |____httpd-info.conf
| |____httpd-languages.conf
| |____httpd-manual.conf
| |____httpd-mpm.conf
| |____httpd-multilang-errordoc.conf
| |____httpd-ssl.conf
| |____httpd-userdir.conf
| |____httpd-vhosts.conf
|____httpd.conf
|____magic
|____mime.types
|____original
| |____extra
| | |____httpd-autoindex.conf
| | |____httpd-dav.conf
| | |____httpd-default.conf
| | |____httpd-info.conf
| | |____httpd-languages.conf
| | |____httpd-manual.conf
| | |____httpd-mpm.conf
| | |____httpd-multilang-errordoc.conf
| | |____httpd-ssl.conf
| | |____httpd-userdir.conf
| | |____httpd-vhosts.conf
| |____httpd.conf
|____other
| |____bonjour.conf
| |____php5.conf
|____users</code></pre>
<p>写一个alias到~/.bash_profile里，就更方便了:</p>
<pre><code>alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/564/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LightCloud的设计原理</title>
		<link>http://www.ooso.net/archives/549</link>
		<comments>http://www.ooso.net/archives/549#comments</comments>
		<pubDate>Thu, 11 Mar 2010 17:37:16 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tokyocabinet]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=549</guid>
		<description><![CDATA[LightCloud是最近看到的一个比较轻巧的分布式key-value数据库，尽管这类软件已经让人觉得审美疲劳，但我仍然觉得它的设计思路值得一提。
特色
除开其项目主页上列出来的特点不提，我觉得还能数得上的特色有：


				<span class="readmore"><a href="http://www.ooso.net/archives/549" title="LightCloud的设计原理">阅读全文（1470字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>LightCloud是最近看到的一个比较轻巧的分布式key-value数据库，尽管这类软件已经让人觉得审美疲劳，但我仍然觉得它的设计思路值得一提。</p>
<h2>特色</h2>
<p>除开其项目主页上列出来的特点不提，我觉得还能数得上的特色有：</p>
<ul>
<ol>
<li>理论上可以用任意key-value数据库做为底层存储，现在支持以<a href="http://1978th.net/tokyotyrant/">tokyo tyrant</a>或者<a href="http://code.google.com/p/redis/">redis</a>作为底层的存储，如果使用redis可以获得更好的性能（大概提升30%~50%）</li>
<li>没有定制服务器端，基本上靠客户端语言来实现键值查找。优点是部署起来比较简单，缺点也是显而易见的，效率会有损失。</li>
<li>可以很方便的移植到其它语言上，我已经在github上找到一个ruby版本，甚至还有个php版本的实现。</li>
<li>可以方便的增加节点。</li>
<li>结构简单，方便hack</li>
</ol>
</ul>
<h2>LightCloud的设计原理</h2>
<h3>Hash ring</h3>
<p>LightCloud不能免俗的使用了一致性hash算法（Consistent Hashing），这是为了避免新增数据节点时发生集体拆迁事件。Consistent Hashing算法的原理请参考<a href="http://www.yeeach.com/2009/10/02/consistent-hashing%E7%AE%97%E6"%B3%95/>这里</a>。</p>
<p>last.fm的工作人员写的ketama算法算是比较常见的一致性算法，在libmemcached里大量使用。而LightCloud的作者当时还没发现合适的ketama python版，所以干脆自己捋起袖子写了个python版本的hash_ring，不到50行。这个是量身定制的，所以效率也还过得去，但是兼容ketama就别想了。</p>
<p>献上hash圈圈一个以明志：<br />
<img alt="" src="http://static1.139js.com/system/picture/10528302/600x600/memcached000404-thumb.jpg" title="一致性hash算法原理示意图" class="alignnone" width="600" height="472" /></p>
<h3>LightCloud的hash环有什么与众不同？</h3>
<p>其它分布式key-value数据库采用的办法是复制数据到多个节点上，例如<a href="http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf">Amazon Dynamo</a>的复制策略图：<br />
<a href="http://www.ooso.net/wp-content/uploads/2010/03/dynamo_replication.png"><img src="http://www.ooso.net/wp-content/uploads/2010/03/dynamo_replication.png" alt="" title="dynamo_replication" class="alignnone" /></a></p>
<p>Dynamo用了许多办法解决consistent问题，系统相当复杂。而LightCloud直接使用tokyo tyrant的master-master复制功能，大幅简化了这部分的逻辑。所以在它的hash环上，单个节点其实是一对master-master的tokyo tyrant，焦不离孟不离焦。</p>
<p><a href="http://www.ooso.net/wp-content/uploads/2010/03/lc_replc.png"><img src="http://www.ooso.net/wp-content/uploads/2010/03/lc_replc.png" alt="" title="lc_replc" class="alignnone" /></a></p>
<p>在新增数据节点时，如果没有路由服务找到正确的服务器，可能会损失数据。那么LightCloud继续采用流氓手段解决这个问题，他又给上了个环，保证不会发生意外。这两个hash环里的节点仍然是之前提到的tokyo tyrant双人组，一个环叫<strong>lookup</strong>，记录了每一个key保存在哪个storage节点上；另外一个环叫<strong>storage</strong>，这是真正存放数据的地方。于是它的结构图变成了下面这个样子：</p>
<p><a href="http://www.ooso.net/wp-content/uploads/2010/03/storage_lookup.png"><img src="http://www.ooso.net/wp-content/uploads/2010/03/storage_lookup.png" alt="" title="storage_lookup" class="alignnone" /></a></p>
<p>这部分比较难以理解，试着就上图阐述一下：</p>
<ul>
<ol>
<li>一个名叫A的家伙，住在storage_SB地区(storage ring)。同时，我们还告诉记性好的lookup_B(lookup ring)，A君的地址为storage_SB。</li>
<li>很不幸或很幸运，咱们的数据膨胀到需要扩容了，于是新增了一个违章建筑storge_X，这个该死的建筑正好影响了我们找到A君。这时候，我们还可以问起记性好的lookup_B，A君住在哪个角落里啊？ —— lookup_B日道：他就住在sotrage_SB一带~</li>
<li>lookup这群家伙记性虽然好，但是也架不住人多，再也记不住这么多人的住址，所以又新来了几个记性好的lookup。这个会影响咱们找到storage住哪吗？答案是不会，因为没有新增别的违章storage建筑，咱们不需要问路也能找着人。</li>
</ol>
</ul>
<p>按照以上推论，一定要避免同时增加lookup和storage节点，这很可能会损失数据。</p>
<h2>参考网页</h2>
<ul>
<li><a href="http://opensource.plurk.com/LightCloud/">http://opensource.plurk.com/LightCloud/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/549/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>git的代码review工具</title>
		<link>http://www.ooso.net/archives/539</link>
		<comments>http://www.ooso.net/archives/539#comments</comments>
		<pubDate>Thu, 11 Feb 2010 15:34:19 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=539</guid>
		<description><![CDATA[facebook在GitHub上托管了大量的开源项目，足足有26个。其中hiphop-php以及xhp在这阵子炒的比较热，的确是让人印象深刻的东西。顺手把别的项目翻出来看，也有很实用的工具，比如git-review。
git-review为git新增了一个很方便的代码review途径，利用这个命令，可以调用别的工具比如vimdiff来review代码的改动。下面简单记录一下使用的过程：
下载并安装
首先确认已经装好了git，剩下的事情比较简单。

				<span class="readmore"><a href="http://www.ooso.net/archives/539" title="git的代码review工具">阅读全文（711字）</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.com/facebook">facebook在GitHub上</a>托管了大量的开源项目，足足有26个。其中hiphop-php以及xhp在这阵子炒的比较热，的确是让人印象深刻的东西。顺手把别的项目翻出来看，也有很实用的工具，比如<a href="http://github.com/facebook/git-review">git-review</a>。</p>
<p>git-review为git新增了一个很方便的代码review途径，利用这个命令，可以调用别的工具比如vimdiff来review代码的改动。下面简单记录一下使用的过程：</p>
<h2>下载并安装</h2>
<p>首先确认已经装好了<a href="/?tag=git">git</a>，剩下的事情比较简单。</p>
<pre><code>git clone git://github.com/facebook/git-review.git
cd git-review
python setup.py install</code></pre>
<p>这几步为git新增了一个review命令。</p>
<h2>git-review的使用</h2>
<h3>查看指定版本的改动</h3>
<pre><code>git review 58e2fb834793f5c6c1fdd900a1c0224a44735962</code></pre>
<p>出现提示</p>
<blockquote><p>
Now processing modified file foo.php<br />
foo.php [diff]&gt;
</p></blockquote>
<p>由于我配置了diff工具为vimdiff，所以接下来就可以用vimdiff查看foo.php在58e2fb834793f5c6c1fdd900a1c0224a44735962这个版本与最新版本之间有什么不同。</p>
<h3>查看两个版本之间的改动</h3>
<pre><code>git review 5b744bdc5f5bcbcfd6bb65f815aebe6bdce8c427 58e2fb834793f5c6c1fdd900a1c0224a44735962</code></pre>
<p>在review每个代码之前，都可以使用help查看git review命令的帮助，如果放弃review，那么直接敲退出就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/539/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用git从svn里clone最后几个版本</title>
		<link>http://www.ooso.net/archives/523</link>
		<comments>http://www.ooso.net/archives/523#comments</comments>
		<pubDate>Sun, 13 Dec 2009 02:44:03 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git-svn]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=523</guid>
		<description><![CDATA[一般情况下git svn clone这个操作会从第一个版本开始同步，如果版本号已经到了好几万（或更高？），这个操作会相当的费时。
当时还想着能不能hack一下git-svn脚本，其实后来看看文档，clone操作可以使用参数-r$REVNUMBER:HEAD检出指定版本后的代码，因此，更好的步骤应该是这样：



				<span class="readmore"><a href="http://www.ooso.net/archives/523" title="用git从svn里clone最后几个版本">阅读全文（302字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>一般情况下<a href="http://www.ooso.net/archives/520#comment-29022">git svn clone这个操作</a>会从第一个版本开始同步，如果版本号已经到了好几万（或更高？），这个操作会相当的费时。</p>
<p>当时还想着能不能hack一下git-svn脚本，其实后来看看文档，clone操作可以使用参数-r$REVNUMBER:HEAD检出指定版本后的代码，因此，更好的步骤应该是这样：</p>
<ol>
<ul>
<li>svn info http://your-svn, 并记录最后的版本号，假设是260</li>
<li>假设要检出最后10个版本，做个简单的减法： 260 &#8211; 10 = 250</li>
<li>开始clone操作了
<pre><code>git svn clone -r250:HEAD --prefix=svn/ http://your-svn</code></pre>
</li>
</ul>
</ol>
<p>按这个办法，clone的时间的确是减少了许多。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/523/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>subcon使用笔记</title>
		<link>http://www.ooso.net/archives/530</link>
		<comments>http://www.ooso.net/archives/530#comments</comments>
		<pubDate>Thu, 10 Dec 2009 00:24:25 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=530</guid>
		<description><![CDATA[在温习flickr的ppt时，看到里面提到了一个叫subcon的工具。由于这个工具已经在google code上开源，所以我毫不客气的下载回来细细端详：


这工具用python写的

				<span class="readmore"><a href="http://www.ooso.net/archives/530" title="subcon使用笔记">阅读全文（732字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>在温习flickr的ppt时，看到里面提到了一个叫<a href="http://code.google.com/p/subcon/">subcon</a>的工具。由于这个工具已经在google code上开源，所以我毫不客气的下载回来细细端详：</p>
<ol>
<ul>
<li>这工具用python写的</li>
<li>用svn保存配置文件，用subcon比较容易的部署到多台服务器上</li>
<li>既然是用svn保存，那么回滚到指定版本也是支持的</li>
<li>SystemImager工具的集成是做为添头附送的，理论上你可以利用这个工具做到一步安装服务器</li>
</ul>
</ol>
<p>初印象就是如此，实际的使用时，你首先要在svn上创建两个目录</p>
<ol>
<ul>
<li>base</li>
<li>roles</li>
</ul>
</ol>
<p>然后可以试着提交一些服务器配置文件例如/etc/hosts到base下,再通过简单命令把配置同步到服务器上 </p>
<pre><code>subcon -n</code></pre>
<p>也可以指定别的类型的配置文件例如www或者memcache，以服务器apache配置文件/etc/httpd为例：</p>
<ol>
<ul>
<li>创建目录roles/www</li>
<li>提交/etc/httpd目录到roles/www目录下</li>
<li>十来个字符就可以部署这些文件到服务器上
<pre><code>subcon -n -owww</code></pre>
</li>
</ul>
</ol>
<p>同样的道理，只要在roles路径下新增各种类型的配置文件，就能比较快捷的部署到服务器上。还有些小功能，需要使用中自己挖掘了:</p>
<ol>
<ul>
<li>更改某个配置文件之后，自动执行指定的命令行，参看/etc/subcon.conf</li>
<li>回滚配置文件到指定版本的功能，这功能一般是在悲剧发生时才会使用吧？所以这个功能也很悲剧的有bug，手工hack一下才能使用。提示：在代码中找到revision字样，用int转换一下类型，命令行参数到了python里面估计都算string了。</li>
<li>如果有多个服务器共用部分配置文件，可以利用svn:externals属性创建一个链接</li>
<li>subcon实际上是python的svn客户端 + rsync</li>
</ul>
</ol>
<p>工具很简单，也有些bug,但是足够用了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/530/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git-svn on cygwin</title>
		<link>http://www.ooso.net/archives/520</link>
		<comments>http://www.ooso.net/archives/520#comments</comments>
		<pubDate>Thu, 09 Apr 2009 22:55:21 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[cygwin]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git-svn]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=520</guid>
		<description><![CDATA[开始试用最近比较红的git，我看中的是它的本地版本库功能，即便网络比较烂的时候，也可以在本地提交，等到了合适的时候一并传上去。由于以前的代码版本控制使用的是svn，所以我用git-svn过渡一下。
目前在windows下，最好的git客户端恐怕就是装一个cygwin。鼓捣了一个时辰，整理好一些可用的配置文件，陈列一下以备下次使用：
~/.bash_profile
偶尔还会使用svn验证一下check in的情况，刚转过来不放心啊，下面的配置是为了防止svn命令行乱码。命令行git-svn在/usr/sbin/git-core/路径下，是一个perl脚本，为了方便，我把这个路径加入了PATH环境变量。

				<span class="readmore"><a href="http://www.ooso.net/archives/520" title="Git-svn on cygwin">阅读全文（828字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>开始试用最近比较红的<a href="/?tag=git">git</a>，我看中的是它的本地版本库功能，即便网络比较烂的时候，也可以在本地提交，等到了合适的时候一并传上去。由于以前的代码版本控制使用的是svn，所以我用git-svn过渡一下。</p>
<p>目前在windows下，最好的git客户端恐怕就是装一个cygwin。鼓捣了一个时辰，整理好一些可用的配置文件，陈列一下以备下次使用：</p>
<h2>~/.bash_profile</h2>
<p>偶尔还会使用svn验证一下check in的情况，刚转过来不放心啊，下面的配置是为了防止svn命令行乱码。命令行git-svn在/usr/sbin/git-core/路径下，是一个perl脚本，为了方便，我把这个路径加入了PATH环境变量。</p>
<pre><code>export PATH=$PATH:/usr/sbin/git-core/
export SVN_EDITOR=vim
export LC_ALL=en_US.UTF-16
export LC_CTYPE=en_US.UTF-16
export LANG=en_US.UTF-16
export XMODIFIERS=@im=Chinput3
stty cs8 -istrip
stty pass8
export LESSCHARSET=latin1</code></pre>
<h2>~/.inputrc</h2>
<p>去掉注释即可</p>
<pre><code>set meta-flag on
set convert-meta off
set input-meta on
set output-meta on</code></pre>
<h2>~/.gitconfig</h2>
<pre><code>[user]
name = muhaha
email = aa@bb.cc

[color]
diff = auto
status = auto
branch = auto

[alias]
st = status
rb = svn rebase
ci = commit -a
co = checkout</code></pre>
<h2>常用操作</h2>
<table border="1">
<tr>
<td>clone一个svn</td>
<td>git svn clone -s svn://xxx.xxx.com</td>
</tr>
<tr>
<td>类svn up操作？</td>
<td>git svn rebase</td>
</tr>
<tr>
<td>添加文件</td>
<td>git add xfile</td>
</tr>
<tr>
<td>check in</td>
<td>git ci</td>
</tr>
<tr>
<td>往svn库提交</td>
<td>git svn dcommit</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/520/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>trac使用经验两则</title>
		<link>http://www.ooso.net/archives/443</link>
		<comments>http://www.ooso.net/archives/443#comments</comments>
		<pubDate>Fri, 28 Nov 2008 10:01:36 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=443</guid>
		<description><![CDATA[最近开始使用trac进行项目管理，和svn同步。使用过程中解决了两个并不常见的问题，贴出来和大家分享。

如何修改trac的assign to下拉列表
让trac的ticket和bugzilla有同样的状态

				<span class="readmore"><a href="http://www.ooso.net/archives/443" title="trac使用经验两则">阅读全文（1527字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>最近开始使用<a href="http://www.edgewall.org">trac</a>进行项目管理，和svn同步。使用过程中解决了两个并不常见的问题，贴出来和大家分享。</p>
<ul>
<li><a href="#droplist">如何修改trac的assign to下拉列表</a></li>
<li><a href="#bugzilla">让trac的ticket和bugzilla有同样的状态</a></li>
</ul>
<h2 id="droplist">如何修改trac的assign to下拉列表</h2>
<p>trac ticket的assign to下拉列表中的名单，没有保存在配置文件里头。读一下TracFaq有下面发现：</p>
<blockquote><p>This will change the Assign To ticket filed into a select box that only contains existing users. However as it says on the TracTickets page, the user must have logged, in at least once, and set their email address.</p>
<p>If you run multiple Trac sites, and have a set of common users across all Trac sites, it gets annoying to have to log into each one and set the email.</p>
<p>So, what is one to do? Well, there are two things that need to be entered into the database: a session record, and an email record.
</p></blockquote>
<p>所以我们只需要对trac的session表做操作就可以修改assign to的下拉菜单列表。session的表结构如下:</p>
<pre>
Table \"session\"
Column         | Type    | Modifiers
---------------+---------+-----------
sid            | text    | not null
authenticated  | integer | not null
last_visit     | integer |
</pre>
<h2 id=\"bugzilla\">让trac的ticket和bugzilla有同样的状态</h2>
<p>缺省配置下，trac ticket的状态和bugzilla的bug状态不一样，只有new,fixed,invalid,wontfix,duplicate,worksforme这几种。在trac 0.11之后，可以自己定义workflow，只需要将trac.ini的[ticket-workflow]章节修改一下，就可以支持verify状态：</p>
<pre><code>accept = new -&gt; assigned
accept.operations = set_owner_to_self
accept.permissions = TICKET_MODIFY
leave = * -&gt; *
leave.default = 1
leave.operations = leave_status
reassign = new,assigned,reopened -&gt; new
reassign.operations = set_owner
reassign.permissions = TICKET_MODIFY
reopen = resolved,verified,closed -&gt; reopened
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE
resolve = new,assigned,reopened -&gt; resolved
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY
verify = resolved -&gt; verified
verify.permissions = TICKET_MODIFY
close = verified -&gt; closed
close.permissions = TICKET_MODIFY</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/443/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>memcached Binary协议的ppt</title>
		<link>http://www.ooso.net/archives/471</link>
		<comments>http://www.ooso.net/archives/471#comments</comments>
		<pubDate>Tue, 23 Sep 2008 12:35:09 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[memcache]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/471</guid>
		<description><![CDATA[memcached 1.3将开始支持Binary Protocol，下面是一篇介绍的ppt。

大概看了一遍，可以认为memcache的binary协议相对原来基于文本的协议，略快一些。key的长度可以到65536(2 bytes)。而memcache 1.3将仍然保持向后兼容，同时支持文本协议和binary协议。
]]></description>
			<content:encoded><![CDATA[<p>memcached 1.3将开始支持Binary Protocol，下面是一篇介绍的ppt。</p>
<p><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=memcachednighttokyo-1221916987381523-9&#038;stripped_title=memcached-binary-protocol-in-a-nutshell-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=memcachednighttokyo-1221916987381523-9&#038;stripped_title=memcached-binary-protocol-in-a-nutshell-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>
<p>大概看了一遍，可以认为<a href="/?tag=memcache">memcache</a>的binary协议相对原来基于文本的协议，略快一些。key的长度可以到65536(2 bytes)。而memcache 1.3将仍然保持向后兼容，同时支持文本协议和binary协议。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/471/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wget的亲戚 &#8211; wput</title>
		<link>http://www.ooso.net/archives/468</link>
		<comments>http://www.ooso.net/archives/468#comments</comments>
		<pubDate>Sat, 20 Sep 2008 11:22:50 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[免费软件]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/468</guid>
		<description><![CDATA[世界上最远的距离，是网通到电信 —— 这简直是赤果果的真理！
俺这个狗窝host在南方某个电信机房里，从北京访问页面，速度也还凑合着能过。但是要想通过ftp上传几个文件，几乎是不可能，只有三种情况会发生：

timeout!

				<span class="readmore"><a href="http://www.ooso.net/archives/468" title="wget的亲戚 &#8211; wput">阅读全文（418字）</a></span>]]></description>
			<content:encoded><![CDATA[<p><b>世界上最远的距离，是网通到电信</b> —— 这简直是赤果果的真理！</p>
<p>俺这个狗窝host在南方某个电信机房里，从北京访问页面，速度也还凑合着能过。但是要想通过ftp上传几个文件，几乎是不可能，只有三种情况会发生：</p>
<ol>
<li>timeout!</li>
<li>timeout!</li>
<li>timeout!</li>
</ol>
<p>这天我打算把wordpress升级到最新版本，更新文件就成了个大难题。那么只好找了个server做跳板，用wget的亲戚 &#8211; wput来解决文件批量上传的问题：</p>
<pre><code>wput -B wordpress/* ftp://xxxxxx.net/xxxx/</code></pre>
<p>这样一行命令就能把整个wordpress上传到ftp指定目录下。</p>
<h2>wput的参数</h2>
<blockquote><p>
Usage: wput [options] [file]… [url]…<br />
url ftp://[username[:password]@]hostname[:port][/[path/][file]]
</p></blockquote>
<p>注：如果username和password有:, @之类的字符，可以用urlencode编码</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/468/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>sphinx新建索引的一般流程</title>
		<link>http://www.ooso.net/archives/466</link>
		<comments>http://www.ooso.net/archives/466#comments</comments>
		<pubDate>Sat, 20 Sep 2008 09:19:37 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[sphinx]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/466</guid>
		<description><![CDATA[在sphinx中新建索引(不是新增数据)的一般流程：

在sphinx.conf中增加index配置项
手工重建索引，不要使用&#8211;rotate参数，例如

				<span class="readmore"><a href="http://www.ooso.net/archives/466" title="sphinx新建索引的一般流程">阅读全文（183字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>在sphinx中新建索引(不是新增数据)的一般流程：</p>
<ul>
<li>在sphinx.conf中增加index配置项</li>
<li>手工重建索引，不要使用&#8211;rotate参数，例如
<pre><code>/usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --all</code></pre>
</li>
<li>重启searchd</li>
</ul>
<p>这样才不会产生<a href="/?tag=shpinx">sphinx</a>索引的临时.new.*文件</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/466/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>从memcache中dump所有key的patch</title>
		<link>http://www.ooso.net/archives/465</link>
		<comments>http://www.ooso.net/archives/465#comments</comments>
		<pubDate>Sat, 23 Aug 2008 04:27:41 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[memcache]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=465</guid>
		<description><![CDATA[在邮件组里看到这个补丁，能够将memcache中所有的key dump出来。
I have just finished a patch to dump all keys from memcached.
And I am glad to share this patch to anyone who wants to use it.
In the attachment, there are two python scripts which are used for dump all keys from a memcached server,

				<span class="readmore"><a href="http://www.ooso.net/archives/465" title="从memcache中dump所有key的patch">阅读全文（343字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>在邮件组里看到这个补丁，能够将<a href="/?tag=memcache">memcache</a>中所有的key dump出来。</p>
<blockquote><p>I have just finished a patch to dump all keys from memcached.<br />
And I am glad to share this patch to anyone who wants to use it.</p>
<p>In the attachment, there are two python scripts which are used for dump all keys from a memcached server,<br />
you can find the usage in the example.py script.</p>
<p>Any  questions or advice can mail  to  we_2002 at 163.com </p></blockquote>
<p>用法见example.py</p>
<p>下载:  <a href="http://customcode.googlecode.com/files/memcached-hack.zip">memcached-hack.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/465/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>改用Paint.net</title>
		<link>http://www.ooso.net/archives/427</link>
		<comments>http://www.ooso.net/archives/427#comments</comments>
		<pubDate>Mon, 30 Jun 2008 00:58:38 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[免费软件]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=427</guid>
		<description><![CDATA[曾经我是一个firework用户（firework是当年号称的网页三剑客之一），然而在两年前，脑门子进水开始全部使用免费软件。
当时给firework物色的替代者是gimp，因为gimp也是一款听起来不错的作图软件。两年过去了，我没有成功利用gimp画出一张图片，这个软件功能应该是很强劲的，只是使用习惯上始终无法适应，我可能用windows自带画板的次数还要多一点。
从此改用paint.net，彻底抛弃gimp。


				<span class="readmore"><a href="http://www.ooso.net/archives/427" title="改用Paint.net">阅读全文（374字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>曾经我是一个firework用户（firework是当年号称的网页三剑客之一），然而在两年前，脑门子进水<a href="http://www.ooso.net/index.php/archives/178">开始全部使用免费软件</a>。</p>
<p>当时给firework物色的替代者是gimp，因为gimp也是一款听起来不错的作图软件。两年过去了，我没有成功利用gimp画出一张图片，这个软件功能应该是很强劲的，只是使用习惯上始终无法适应，我可能用windows自带画板的次数还要多一点。</p>
<p>从此改用<a href="http://www.getpaint.net">paint.net</a>，彻底抛弃gimp。</p>
<p><img src="http://www.getpaint.net/screenshots/pdn310_car_thumb.jpg" alt="paint.net" /></p>
<blockquote><p>Paint.NET是一个图像和照片处理软件，它由华盛顿州立大学的学生开发和维护并由微软公司提供项目指导，早期定位于MS Paint的免费替代软件，现在逐渐发展为一个功能强大且易用的的图像和照片处理软件，支持图层，无限制的历史记录，特效，和许多实用工具，并且开放源代码和完全免费，界面看起来有点像Photoshop。该软件的开发语言是C#。 </p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/427/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>diablo3终于是露脸了</title>
		<link>http://www.ooso.net/archives/434</link>
		<comments>http://www.ooso.net/archives/434#comments</comments>
		<pubDate>Sat, 28 Jun 2008 11:05:08 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[diablo]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=434</guid>
		<description><![CDATA[blizzard终于不再遮掩，即将发布的游戏的确是暗黑破坏神3.进入暴雪首页之后，就是这样一张大大的flash。
试玩视频中可以看到熟悉的野蛮人(但是已是满头白发)，还是让人看着舒心的第三人称视角，这实在是太好了，babarian面对大群怪物，照旧是咆哮几下以壮士气，打击方式，仍然是傻傻的挥砍，还有跳跃攻击:)
目前可以确认一共有五种角色，公布了两种角色野蛮人以及巫医
barbarian

				<span class="readmore"><a href="http://www.ooso.net/archives/434" title="diablo3终于是露脸了">阅读全文（593字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>blizzard终于不再遮掩，即将发布的游戏的确是暗黑破坏神3.进入<a href="http://www.blizzard.com">暴雪首页</a>之后，就是这样一张大大的flash。</p>
<p>试玩视频中可以看到熟悉的野蛮人(但是已是满头白发)，还是让人看着舒心的第三人称视角，这实在是太好了，babarian面对大群怪物，照旧是咆哮几下以壮士气，打击方式，仍然是傻傻的挥砍，还有跳跃攻击:)</p>
<p>目前可以确认一共有五种角色，公布了两种角色野蛮人以及巫医</p>
<h3>barbarian</h3>
<p>野蛮人barbarian仍然是强力的坦克兼近战输出角色，有部分技能沿袭了diablo2，比如跳跃攻击，现在的跳跃攻击看上去有群攻的效果，可惜攻击频率较低，还有野蛮人的终极技能旋风斩也没落下。在20分钟的试玩视频中，可以看到野蛮人新的远程攻击技能，以及类似魔兽世界中战士的冲撞技能。</p>
<h3>Warlock doctor</h3>
<p>巫医类似于前作的死灵法师，可以召唤傀儡攻击，但是攻击方式又不尽相同，傀儡似乎不仅仅是肉盾，还能被击破作为肉弹使用。另外一个没啥特色攻击技能就是抛火蛋，这个技能是不是法师丢出来更靠谱一些？</p>
<h3>从暴雪官方的FAQ来看</h3>
<ol>
<li>所有的角色都可以选择男，女性别</li>
<li>前作中的部分角色会被延续</li>
<li>diablo3的最低配置以及价格尚未确认，要到发布前夕才会透露</li>
<li>将会尽可能的同时出各个语言的版本</li>
<li>除了可以上Battle.net联机游戏以外，也可以在局域网内和朋友一起游戏</li>
</ol>
<p><img src="http://www.ooso.net/wp-content/uploads/2008/06/diablo3.jpg" alt="" title="diablo3" width="500" height="442" class="alignnone size-full wp-image-435" /></p>
<p><a href="http://bbs.viewc.com/forum.php?id=8">diablo3讨论区</a></p>
<p>刚开始玩暗黑2的时候，我大概是20岁的愣头青。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/434/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>使用yahoo pipes烧制RSS集合</title>
		<link>http://www.ooso.net/archives/420</link>
		<comments>http://www.ooso.net/archives/420#comments</comments>
		<pubDate>Wed, 11 Jun 2008 23:13:37 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=420</guid>
		<description><![CDATA[看着Google Reader里日益庞大的rss清单，大量的内容一个个浮上来，却没得时间一一细看，这里头实在是有很多我不希望看到的内容存在。若是取消订阅，又显得可惜。
因此我是迫切希望有一个RSS过滤网，滤掉部分内容再仔细阅读。前阵子也花了点时间写了个小小的rss过滤程序，写了一半因为时间关系暂时搁置。这时候想起pipes.yahoo.com似乎能实现类似功能，下边就用pipes烧了几个平常看的rss，然后用Google Reader重新订阅，效果倒也不错。
pipes
http://pipes.yahoo.com/fronend/devel

				<span class="readmore"><a href="http://www.ooso.net/archives/420" title="使用yahoo pipes烧制RSS集合">阅读全文（453字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>看着Google Reader里日益庞大的rss清单，大量的内容一个个浮上来，却没得时间一一细看，这里头实在是有很多我不希望看到的内容存在。若是取消订阅，又显得可惜。</p>
<p>因此我是迫切希望有一个RSS过滤网，滤掉部分内容再仔细阅读。前阵子也花了点时间写了个小小的<a href="/?tag=rss">rss</a>过滤程序，写了一半因为时间关系暂时搁置。这时候想起<a href="http://pipes.yahoo.com">pipes.yahoo.com</a>似乎能实现类似功能，下边就用pipes烧了几个平常看的rss，然后用Google Reader重新订阅，效果倒也不错。</p>
<h3>pipes</h3>
<p><a href="http://pipes.yahoo.com/fronend/devel">http://pipes.yahoo.com/fronend/devel</a></p>
<p>pipes现在可以支持自定义url了，所以你才可以看到这么短的一个pipes url。根据我的观察，发现要输出较短的rss url也不是难事，如下：</p>
<p><a href="http://pipes.yahoo.com/fronend/devel?_render=rss">http://pipes.yahoo.com/fronend/devel?_render=rss</a></p>
<p>BTW:在烧制rss的过程中，有部分utf-8的内容显示为乱码，只要用feedsky先处理一遍，然后加到pipes里头就正常了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/420/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>facebook平台真的开源了</title>
		<link>http://www.ooso.net/archives/413</link>
		<comments>http://www.ooso.net/archives/413#comments</comments>
		<pubDate>Tue, 03 Jun 2008 01:04:13 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/413</guid>
		<description><![CDATA[facebook平台开源了，这次开源的部分是API infrastructure, FQL parser, FBML parser以及FBJS。facebook真是超级彪悍，不需要解释。开放的很彻底，绝对步兵——无码。比某些公司口里喊着开放，实际上还遮遮掩掩要好上百倍。
正在下载中，呆会好好端详一下。
This release includes the API infrastructure, the FQL parser, the FBML parser, and FBJS, as well as implementations of many common methods and tags. We&#8217;ve included samples and some dummy data to help you get started fast.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://developers.facebook.com/fbopen/">facebook平台开源</a>了，这次开源的部分是API infrastructure, FQL parser, FBML parser以及FBJS。facebook真是超级彪悍，不需要解释。开放的很彻底，绝对步兵——无码。比某些公司口里喊着开放，实际上还遮遮掩掩要好上百倍。</p>
<p>正在下载中，呆会好好端详一下。</p>
<blockquote><p>This release includes the API infrastructure, the FQL parser, the FBML parser, and FBJS, as well as implementations of many common methods and tags. We&#8217;ve included samples and some dummy data to help you get started fast.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/413/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>测试feedsky的ping功能</title>
		<link>http://www.ooso.net/archives/412</link>
		<comments>http://www.ooso.net/archives/412#comments</comments>
		<pubDate>Mon, 02 Jun 2008 06:38:22 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[ping]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/412</guid>
		<description><![CDATA[自从开始使用feedsky的来烧制feed之后，更新就成了一个问题。我很早就添加了feedsky的ping服务，但是好像一直没有生效，往往在发布了1小时之后，还没有看到feedsky上的feed更新，最后还得去手工更新一把。
小小的调整了一下，这篇blog算是对ping功能的再次测试，希望能够奏效。
今天开始rss改成全文输出。
update

				<span class="readmore"><a href="http://www.ooso.net/archives/412" title="测试feedsky的ping功能">阅读全文（510字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>自从开始使用feedsky的来烧制feed之后，更新就成了一个问题。我很早就添加了feedsky的ping服务，但是好像一直没有生效，往往在发布了1小时之后，还没有看到feedsky上的feed更新，最后还得去手工更新一把。</p>
<p>小小的调整了一下，这篇blog算是对<a href="/?tag=ping">ping</a>功能的再次测试，希望能够奏效。</p>
<p>今天开始rss改成全文输出。</p>
<h2>update</h2>
<ul>
<li>feedsky抽风了，根本不更新 6.4</li>
<li>也许是发牢骚有被人知道了，抓取频率貌似提高了很多，看来不爽就要喊出来啊
<pre>
正常 :      2008-06-03 05:46:56     [200] : 已更新
正常 :      2008-06-03 05:13:49     [304] : 客户端通知未更新
正常 :      2008-06-03 04:46:59     [304] : 客户端通知未更新
正常 :      2008-06-03 04:31:51     [304] : 客户端通知未更新
正常 :      2008-06-03 03:46:58     [304] : 客户端通知未更新
正常 :      2008-06-03 03:13:50     [304] : 客户端通知未更新
正常 :      2008-06-03 03:09:13     [304] : 客户端通知未更新
正常 :      2008-06-03 02:56:14     [304] : 客户端通知未更新
</pre>
</li>
<li>ping失败了 17:00</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/412/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>如何去除雅虎通9.0 beta自带的广告</title>
		<link>http://www.ooso.net/archives/388</link>
		<comments>http://www.ooso.net/archives/388#comments</comments>
		<pubDate>Sun, 06 Apr 2008 00:55:48 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[ntfs]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=388</guid>
		<description><![CDATA[不请自来的广告总是不招人待见的，在安装了雅虎通9.0 beta之后，越发对这东东最下方的广告感到厌恶，所以我想方设法找一些能去掉广告的办法。虽然说总是能搜到一些去除广告的patch，但是莫名其妙的来自某个山寨的patch可能比不请自来的广告更加危险，所以我还是希望能手动解决这个问题。
For Windows XP用户

确定你的雅虎通安装目录所在的磁盘是ntfs格式

				<span class="readmore"><a href="http://www.ooso.net/archives/388" title="如何去除雅虎通9.0 beta自带的广告">阅读全文（597字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>不请自来的广告总是不招人待见的，在安装了雅虎通9.0 beta之后，越发对这东东最下方的广告感到厌恶，所以我想方设法找一些能去掉广告的办法。虽然说总是能搜到一些去除广告的patch，但是莫名其妙的来自某个山寨的patch可能比不请自来的广告更加危险，所以我还是希望能手动解决这个问题。</p>
<h3>For Windows XP用户</h3>
<ul>
<li>确定你的雅虎通安装目录所在的磁盘是<a href="/index.php?tag=ntfs">ntfs</a>格式</li>
<li>确保雅虎通不在运行状态</li>
<li>
编辑<strong>C:\Program Files\Yahoo!\Messenger\Cache\</strong>下的<strong>urls.xml</strong>，删除其中的广告行（Messenger Ad和Idle Messenger Ad），保存并关闭。</li>
<li>右键点击urls.xml，查看属性，设置为只读</li>
<li>选择安全->高级(若文件夹属性窗口中没有发现“安全”选项卡时，你只要在资源管理器窗口中，选择“工具→文件夹选项”命令，在弹出的窗口中选择“查看”选项卡，然后将“高级设置”列表中的“使用简单文件共享”复选框的勾选标记去掉即可。)</li>
<li>去除所有用户的全部权限，保证urls.xml是只读的</li>
<li>启动雅虎通，这个时候应该没有广告了</li>
</ul>
<h3>For Windows Vista x32用户</h3>
<p>未经测试，但是觉得很有趣，围死它用户可以试试。</p>
<p>删除<strong>C:\Program Files\Yahoo!\Messenger\Cache</strong>目录下的<strong>urls.xml</strong>文件，然后创建一个名为<strong>urls.xml</strong>的空目录，重新启动<a href="http://www.ooso.net/?tag=yahoo">雅虎</a>通就没有广告了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/388/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>如何把磁盘fat32转ntfs格式</title>
		<link>http://www.ooso.net/archives/387</link>
		<comments>http://www.ooso.net/archives/387#comments</comments>
		<pubDate>Sat, 05 Apr 2008 09:25:29 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[ntfs]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=387</guid>
		<description><![CDATA[首先我认为磁盘fat32转ntfs格式这不是一个需要什么高深技术的问题，因为解决方案很早就存在，随便搜索一下都能找到一大把无比正确的解决办法，例如：
在命令提示符下键入convert [driver] /fs:ntfs即可
其中driver是想转换的盘符convert [driver] /fs:ntfs之间有空格
Win 2000/XP 自带了将FAT或FAT32分区转换成NTFS分区的一个小程序—Convert.exe，它不但转换速度快、简单易用，而且原来该分区上的数据还可以继续保存下来

				<span class="readmore"><a href="http://www.ooso.net/archives/387" title="如何把磁盘fat32转ntfs格式">阅读全文（588字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>首先我认为磁盘fat32转ntfs格式这不是一个需要什么高深技术的问题，因为解决方案很早就存在，随便搜索一下都能找到一大把无比正确的解决办法，例如：</p>
<blockquote><p>在命令提示符下键入convert [driver] /fs:ntfs即可<br />
其中driver是想转换的盘符convert [driver] /fs:ntfs之间有空格</p>
<p>Win 2000/XP 自带了将FAT或FAT32分区转换成NTFS分区的一个小程序—Convert.exe，它不但转换速度快、简单易用，而且原来该分区上的数据还可以继续保存下来<br />
在win运行窗口，输入“Convert C: /fs:ntfs”；如果要转换D盘，只要将“C:”改成相应的“D:”即可。转换完成后，它会向你报告你所转换的磁盘分区情况。<br />
注意事项:<br />
1、建议先执行磁盘扫描、磁盘碎片整理程序。<br />
2、如果你要转换的FAT或FAT32分区上面有文件正被系统使用，那么在转换时，转换程序将会询问你是否卸下要转换的卷（即分区），这时最好选择“否”，最后它就会询问你是否在下一次计算机启动时转换分区，选择“是”并重新启动机器即可完成转换。</p></blockquote>
<p>但是今天在家里的老本本(Evo N610c)上，遇到了史无前例的挫折。俺企图把c盘的fat32转成<a href="/index.php?tag=ntfs">ntfs</a>，相当的失败，每次都是转换了一半自动关机，重新开机又会自动进入转换状态，如此循环，直至俺崩溃为止。也许我该换个更人性化的工具来实现这一阶段性目标。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/387/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>推荐一个16进制编辑器</title>
		<link>http://www.ooso.net/archives/385</link>
		<comments>http://www.ooso.net/archives/385#comments</comments>
		<pubDate>Thu, 03 Apr 2008 10:47:24 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[免费软件]]></category>

		<guid isPermaLink="false">http://www.ooso.net/?p=385</guid>
		<description><![CDATA[因为机器上的非免费软件已经被清理出局了，所以我在寻找一个ultraedit的替代品，这个编辑器能直接编辑16进制文件(比如xxx.exe)。
搜索的结果是： HxD &#8211; Freeware Hex Editor and Disk Editor，大小只有747k，免安装，很小巧的绿色软件。 
HxD is a carefully designed and fast hex editor including raw disk editing, modifying foreign RAM and handling files of any size. Its clear interface offers searching/replacing, exporting, checksums/digests, insertion of byte patterns, a file shredder, concatenation or splitting of files, statistics and more.

				<span class="readmore"><a href="http://www.ooso.net/archives/385" title="推荐一个16进制编辑器">阅读全文（941字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>因为<a href="http://www.ooso.net/index.php/archives/178">机器上的非免费软件已经被清理出局了</a>，所以我在寻找一个ultraedit的替代品，这个编辑器能直接编辑16进制文件(比如xxx.exe)。</p>
<p>搜索的结果是： <a href="http://mh-nexus.de/hxd/">HxD &#8211; Freeware Hex Editor and Disk Editor</a>，大小只有747k，免安装，很小巧的绿色软件。 </p>
<blockquote><p>HxD is a carefully designed and fast hex editor including raw disk editing, modifying foreign RAM and handling files of any size. Its clear interface offers searching/replacing, exporting, checksums/digests, insertion of byte patterns, a file shredder, concatenation or splitting of files, statistics and more.</p></blockquote>
<p>再贴一点feature list</p>
<blockquote><p>    *  RAM-Editing with data-folding<br />
    * Disk-Editing (Hard disk, Zip-disk, CD, &#8230;)<br />
      (Win9x, WinNT and higher)<br />
    * flexible and fast searching and replacing of strings (including Unicode), hex-values, integers and floats<br />
    * File compare (simple)<br />
    * view data in Ansi, DOS, EBCDIC, Macintosh charsets<br />
    * Checksum-Generator: Checksum, CRCs, Custom CRC, SHA-1, SHA-512, MD5, &#8230;<br />
    * exporting of data to source code (Pascal, C, Java) or as formatted output (plain text, HTML, Richtext, TeX)<br />
    * basic data analysis (statistics)<br />
    * no file size limit<br />
    * byte grouping<br />
    * hex only or text only modes<br />
    * highlighting of modified data<br />
    * unlimited Undo</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/385/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>话说“yahoo低价域名”的续费</title>
		<link>http://www.ooso.net/archives/369</link>
		<comments>http://www.ooso.net/archives/369#comments</comments>
		<pubDate>Thu, 09 Aug 2007 00:49:31 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/369</guid>
		<description><![CDATA[去年在Yahoo的small business以低价购入一个域名，当时的打折价是1.9$，觉得非常超值。
一转眼，一年的时间过去了。早在一个月以前，我就开始琢磨过续费的事情怎么处理。有三条出路：



				<span class="readmore"><a href="http://www.ooso.net/archives/369" title="话说“yahoo低价域名”的续费">阅读全文（376字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>去年在<a href="http://www.ooso.net/index.php/archives/216">Yahoo的small business以低价购入一个域名</a>，当时的打折价是1.9$，觉得非常超值。</p>
<p>一转眼，一年的时间过去了。早在一个月以前，我就开始琢磨过续费的事情怎么处理。有三条出路：</p>
<ul>
<ol>
<li>放弃域名，不要了</li>
<li>转到国内的某些域名机构，享受中国国情的域名待遇</li>
<li>直接在yahoo续费</li>
</ol>
</ul>
<p>第一个法子那是开玩笑，当不得真。如果选第二条，大概续费的费用会少一些，一年的费用是60￥，但是随之而来的问题就是备案啊，如果有论坛程序，就得被和谐啦，这也是很让我抓头的一件事情。第三个，最简单，Yahoo会直接从信用卡里扣除续费的费用，大概是10$左右，是要贵上那么一点，但是考虑到最近的人民币升值，这个压力似乎也不是太大，而且关键是很省心，无限二级域名，备案嘛，这个事情以后再说。</p>
<p>小九九算了老半天，最后还是选择了第三个方案。今天上网上银行看了看，10$被自动扣除，一点也不心疼。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/369/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>BT是什么意思</title>
		<link>http://www.ooso.net/archives/349</link>
		<comments>http://www.ooso.net/archives/349#comments</comments>
		<pubDate>Thu, 05 Jul 2007 22:48:41 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[bt]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/349</guid>
		<description><![CDATA[我想，小日本可能很难理解BT这一词的具体含义。这个网络词汇本身就具有BT精神，大家就是乐见这样一种情形 —— 当我嘴里吐出一个新名词，而对方却茫然不知所谓，只能陪着傻笑。
上面的感叹是因为无意中看到一个反向链接：［シナ］日本人が才能の無駄づかいをしている件について，大概是上次的“小日本果然BT”引发的讨论。
“搞” == “fuck”
文中使用机器翻译了俺的部分文字以及评论

				<span class="readmore"><a href="http://www.ooso.net/archives/349" title="BT是什么意思">阅读全文（382字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>我想，小日本可能很难理解<strong>BT</strong>这一词的具体含义。这个网络词汇本身就具有BT精神，大家就是乐见这样一种情形 —— 当我嘴里吐出一个新名词，而对方却茫然不知所谓，只能陪着傻笑。</p>
<p>上面的感叹是因为无意中看到一个反向链接：<a href="http://ikketushugi.info/blog/2007/06/post_87.html">［シナ］日本人が才能の無駄づかいをしている件について</a>，大概是上次的“<a href="http://www.ooso.net/index.php/archives/340">小日本果然BT</a>”引发的讨论。</p>
<h2>“搞” == “fuck”</h2>
<p>文中使用机器翻译了俺的部分文字以及评论</p>
<blockquote><p>
“God, 搞不好哪天BTs用HTML标记code个即时渲染web anime.”</p></blockquote>
<p>这段话居然被翻译为：</p>
<blockquote><p>“神ktkr!　FuckなHentaiがhtmlタグcodeを使ってすごい勢いで web anime を描く.”</p></blockquote>
<p>很让人啼笑皆非的一件事情。</p>
<h2>BT != BitTorrent</h2>
<h3>补充</h3>
<p><b>BT的解释一</b><br />
BitTorrent的缩写，一种p2p下载的简称，特点是下载的人越多，下载速度越快。</p>
<p><b>BT的解释二</b><br />
“变态”的拼音缩写，最早见于猫扑</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/349/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>小日本果然BT</title>
		<link>http://www.ooso.net/archives/340</link>
		<comments>http://www.ooso.net/archives/340#comments</comments>
		<pubDate>Wed, 27 Jun 2007 01:42:43 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[bt]]></category>
		<category><![CDATA[html]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/340</guid>
		<description><![CDATA[你可能不知道，table还能这样用&#8230;
]]></description>
			<content:encoded><![CDATA[<p>你可能不知道，table还能这样用&#8230;</p>
<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/NqFOB77jLaE"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/NqFOB77jLaE" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/340/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>优化AWSTATS性能的7个建议</title>
		<link>http://www.ooso.net/archives/331</link>
		<comments>http://www.ooso.net/archives/331#comments</comments>
		<pubDate>Fri, 22 Jun 2007 23:15:19 +0000</pubDate>
		<dc:creator>Volcano</dc:creator>
				<category><![CDATA[common]]></category>
		<category><![CDATA[awstats]]></category>
		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.ooso.net/index.php/archives/331</guid>
		<description><![CDATA[对于一个访问量巨大的网站来说，使用awstats来分析其日志是一件很痛苦的事情，这往往需要耗费很多时间才能得到一个结果，偶尔还会让机器内存耗尽。在awstats的文档中，找到几个关于性能优化的建议，如下：

关掉DNSLookup(DNSLookup不能设置为1). 虽然这样你会丢失一些关于访问者的国家信息，但是我觉得这无关紧要，大部分网站的访问者集中在国内。这样能给awstats性能带来小小提升。
小心使用这三个参数： URLWithQuery, URLReferrerWithQuery ,URLWithAnchor (如果你不知道它们有什么作用最好设置为0) 

				<span class="readmore"><a href="http://www.ooso.net/archives/331" title="优化AWSTATS性能的7个建议">阅读全文（623字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>对于一个访问量巨大的网站来说，使用<a href="http://awstats.sf.net">awstats</a>来分析其日志是一件很痛苦的事情，这往往需要耗费很多时间才能得到一个结果，偶尔还会让机器内存耗尽。在awstats的文档中，找到几个关于性能优化的建议，如下：</p>
<ul>
<li>关掉DNSLookup(DNSLookup不能设置为1). 虽然这样你会丢失一些关于访问者的国家信息，但是我觉得这无关紧要，大部分网站的访问者集中在国内。这样能给awstats性能带来小小提升。</li>
<li>小心使用这三个参数： URLWithQuery, URLReferrerWithQuery ,URLWithAnchor (如果你不知道它们有什么作用最好设置为0) </li>
<li>使用最新版本的perl (例如Perl 5.8比5.6要快上5%) 。另外比较重要的一点，用标准版本的perl代替ActiveState版本的perl，因为ActiveState 5.006有内存泄漏方面的问题，它在解析日志的时候会越来越慢最终一行日志也跑不动。</li>
<li>回卷日志。尽可能的把日志分成更小的一份，这样awstats能处理的快一些，可以适当提高awstats解析频率.</li>
<li>确认HostAliases参数是完整的</li>
<li>使用最新版本的AWStats (例如AWStats 6.0比5.9快15%).</li>
<li>某些geeks,你可以考虑采用不同的参数来重新编译perl，例如使用&#8221;use64bitint=define usemymalloc=y&#8221;编译perl,这样perl的速度能提升10%. </li>
</ul>
<p>原文见<a href="http://awstats.sourceforge.net/docs/awstats_benchmark.html#ADVICES">awstats benchmark</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ooso.net/archives/331/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

