<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Big Sky</title>
    <link>http://mattn.kaoriya.net/</link>
    <description>システム開発屋がひっそり語るぼやき</description>
    <language>ja</language>
    <generator>blosxom/2.1.2+dev</generator>
    <atom:link rel="self" href="http://mattn.kaoriya.net/index.rss" type="application/rss+xml" />
    <atom:link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
   <item>
     <title>Google Chrome を更新したら「最近閉じたタブ」が表示されなくなる問題の解決方法</title>
     <pubDate>Wed, 19 Jun 2013 22:43:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/chrome/20130619224230.htm</link>
     <category>chrome</category><category>google chrome</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/chrome/20130619224230.htm</guid>
     <description>
Google Chrome を使っていて「新しいタブ」を開き、右下にある「最近閉じたタブ」で閉じてしまったタブを復帰させる事が良くあります。

&lt;blockquote&gt;
	&lt;img src=&quot;http://go-gyazo.appspot.com/3850eb4313544920.png&quot; alt=&quot;recent closed tab&quot; /&gt;
&lt;/blockquote&gt;

Google Chrome Dev Channel を使っているのですが、どうやら Google Chrome をアップデートするとこのツールバー自身が消えてなくなる様なのです。この機能のヘビーユーザだったのでかなり困りました。&lt;br /&gt;
いろいろ調べたところ、どうやら以下の設定で直す事が出来る事が分かりました。

&lt;ol&gt;
	&lt;li&gt;&lt;a href=&quot;chrome://flags/#enable-instant-extended-api&quot; target=&quot;_blank&quot;&gt;chrome://flags/#enable-instant-extended-api&lt;/a&gt; を開く&lt;/li&gt;
	&lt;li&gt;設定を「規定」から「無効」に変更する。&lt;/li&gt;
	&lt;li&gt;ブラウザを再起動する。&lt;/li&gt;
&lt;/ol&gt;

この3手順で、以前と同じツールバーで「最近閉じたタブ」が表示される様になりました。&lt;br /&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>Vim で幅跳び</title>
     <pubDate>Tue, 11 Jun 2013 11:27:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/vim/20130611112650.htm</link>
     <category>vim</category><category>game</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/vim/20130611112650.htm</guid>
     <description>
先日、某所で何人かに遊んで貰ったので、ここにも書いて皆に遊んでもらおうと思います。&lt;br /&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;https://github.com/mattn/habatobi-vim&quot;&gt;mattn/habatobi-vim - GitHub&lt;/a&gt;
&lt;br&gt;
&lt;cite&gt;https://github.com/mattn/habatobi-vim&lt;/cite&gt;
&lt;/blockquote&gt;

&lt;blockquote class=&quot;code&quot;&gt;
:Habatobi
&lt;/blockquote&gt;

を実行すると起動します。j と k を交互にタイプすると走り出すので jkjkjkjkjkjkjkjk... とタイプして下さい。&lt;br /&gt;
赤い線の前でスペースキーをタイプするとジャンプします。&lt;br /&gt;
記録が出て、どうこうなる訳ではないですが息抜きのつもりでどうぞ。

&lt;blockquote&gt;
&lt;img src=&quot;http://mattn.kaoriya.net/images/habatobi.gif&quot; /&gt;
&lt;/blockquote&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>Vimを使ったGo言語開発手法</title>
     <pubDate>Fri, 31 May 2013 00:19:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/vim/20130531000559.htm</link>
     <category>vim</category><category>golang</category><category>go</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/vim/20130531000559.htm</guid>
     <description>
&lt;img src=&quot;http://go-gyazo.appspot.com/00f6b3afcdd6fbc9.png&quot; class=&quot;thumbnail-right&quot; title=&quot;golang&quot; /&gt;
先日、Go言語バージョン1.1がリリースされました。安定しているのは勿論、幾つか新機能が追加されましたが、何よりもパフォーマンスチューニングが施された一番嬉しいですね。&lt;br class=&quot;clearall&quot; /&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://dave.cheney.net/2013/05/21/go-11-performance-improvements&quot;&gt;Go 1.1 performance improvements | Dave Cheney&lt;/a&gt;
&lt;br /&gt;
&lt;p&gt;This is the first in a series of articles analysing the performance improvements in the Go 1.1 relea...&lt;/p&gt;
&lt;cite&gt;http://dave.cheney.net/2013/05/21/go-11-performance-improvements&lt;/cite&gt;
&lt;/blockquote&gt;

さて今日はVimを使ってGo言語を開発する方法を紹介したいと思います。&lt;br /&gt;
VimでGo言語を開発するには、Go言語のリポジトリに含まれる &lt;code&gt;misc/vim&lt;/code&gt; にランタイムパスを追加します。以下を vimrc に追加します。&lt;br /&gt;

&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Statement&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;PreProc&quot;&gt;rtp&lt;/span&gt;+=$GOROOT/misc/vim
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;h3&gt;入力補完を行う&lt;/h3&gt;
入力補完として gocode を入れます。正直、これは必須と言っていいです。&lt;br /&gt;

&lt;blockquote class=&quot;code&quot;&gt;
$ go get github.com/nsf/gocode&lt;br /&gt;
&lt;/blockquote&gt;

を実行します。&lt;code&gt;$GOPATH/bin&lt;/code&gt; にインストールされるのでパスを通しておきましょう。&lt;br /&gt;
&lt;code&gt;$GOROOT&lt;/code&gt; に入ってしまった人は一度削除して、&lt;code&gt;$GOPATH&lt;/code&gt; を設定後にもう一度、上記のコマンドを実行します。&lt;br /&gt;
&lt;code&gt;$GOPATH&lt;/code&gt; にインストールされているはずなので以下の様にvimrcに追加します。&lt;br /&gt;

&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Statement&quot;&gt;exe&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;String&quot;&gt;&amp;quot;set rtp+=&amp;quot;&lt;/span&gt;&lt;span class=&quot;Operator&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;globpath&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;PreProc&quot;&gt;$GOPATH&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;String&quot;&gt;&amp;quot;src/github.com/nsf/gocode/vim&amp;quot;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;

gocodeを入れると、パッケージ名の途中であったり変数の後の &quot;.&quot; をタイプした後&lt;code&gt;&amp;lt;c-x&amp;gt;&amp;lt;c-o&amp;gt;&lt;/code&gt; をタイプすると、あり得る関数名や、メソッド名がずらずらーっと補完出来ます。

&lt;blockquote&gt;
&lt;img src=&quot;http://go-gyazo.appspot.com/3f93f58f377af7ea.png&quot; alt=&quot;gocode&quot; /&gt;
&lt;/blockquote&gt;

その際、&lt;code&gt;completeopt&lt;/code&gt; というオプションに &lt;code&gt;preview&lt;/code&gt; を足しておくと、補完内容が詳細に表示されて分かりやすくなります。&lt;br /&gt;

&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Statement&quot;&gt;set&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;PreProc&quot;&gt;completeopt&lt;/span&gt;=menu&lt;span class=&quot;Statement&quot;&gt;,&lt;/span&gt;preview&lt;br /&gt;
&lt;/blockquote&gt;
&lt;br /&gt;

&lt;h3&gt;パッケージをインポートする&lt;/h3&gt;

Go言語でも、欲しい機能があればパッケージをインポートします。その際、いちいちファイルの先頭に移動して、&lt;code&gt;import&lt;/code&gt; を追加したりしてませんか？上記のオフィシャルが提供しているVimプラグインを使っているのであれば、以下の様に実行しましょう。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
:Import&amp;nbsp;fmt&lt;br /&gt;
&lt;/blockquote&gt;

&lt;b&gt;before&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Statement&quot;&gt;package&lt;/span&gt;&amp;nbsp;main&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Statement&quot;&gt;func&lt;/span&gt;&amp;nbsp;main() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fmt.Println(&lt;span class=&quot;String&quot;&gt;&amp;quot;hello world&amp;quot;&lt;/span&gt;)&lt;br /&gt;
}&lt;br /&gt;
&lt;/blockquote&gt;

&lt;b&gt;after&lt;/b&gt;&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Statement&quot;&gt;package&lt;/span&gt;&amp;nbsp;main&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Statement&quot;&gt;import&lt;/span&gt;&amp;nbsp;(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;String&quot;&gt;&amp;quot;fmt&amp;quot;&lt;/span&gt;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Statement&quot;&gt;func&lt;/span&gt;&amp;nbsp;main() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fmt.Println(&lt;span class=&quot;String&quot;&gt;&amp;quot;hello world&amp;quot;&lt;/span&gt;)&lt;br /&gt;
}&lt;br /&gt;
&lt;/blockquote&gt;

カーソルの移動もありませんので、引き続きコーディングが再開出来ます。また、コマンドの引数でパッケージ名の補完が効きます。&lt;code&gt;net/ht&lt;/code&gt; までタイプして &lt;code&gt;&amp;lt;tab&amp;gt;&lt;/code&gt; をタイプすれば &lt;code&gt;net/http&lt;/code&gt; を補完してくれますし、ありえる候補も補完してくれます。&lt;br /&gt;
&lt;br /&gt;

&lt;h3&gt;ドキュメントを見る&lt;/h3&gt;
Go言語には &lt;code&gt;godoc&lt;/code&gt; というツールが付属しています。コマンドラインから使っても便利なのですが、Vimから使うともっと便利になります。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
:Godoc&amp;nbsp;net/http&lt;br /&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;img src=&quot;http://go-gyazo.appspot.com/67c04106e7d35003.png&quot; alt=&quot;godoc&quot; /&gt;
&lt;/blockquote&gt;
&lt;br /&gt;

&lt;code&gt;:Import&lt;/code&gt; と同様にパッケージ名が補完出来ます。&lt;br /&gt;
&lt;br /&gt;

&lt;h3&gt;整形する&lt;/h3&gt;

Go言語には &lt;code&gt;go fmt&lt;/code&gt; というコマンドが付属しており、相応しいソースに整形する事が出来ます。&lt;br /&gt;
インデントが崩れたりした場合でも

&lt;blockquote class=&quot;code&quot;&gt;
:Fmt&lt;br /&gt;
&lt;/blockquote&gt;

を実行するだけで、綺麗なソースコードに整形されます。&lt;br /&gt;
&lt;br /&gt;

&lt;h3&gt;テンプレートを使う&lt;/h3&gt;
手前味噌ですが、僕が作ってる &lt;a href=&quot;https://mattn.github.io/sonictemplate&quot;&gt;sonictemplate-vim&lt;/a&gt; を使うと、ソースの書き始めが一気に楽になります。&lt;br /&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;https://github.com/mattn/sonictemplate-vim&quot;&gt;mattn/sonictemplate-vim - GitHub&lt;/a&gt;
&lt;br /&gt;
&lt;cite&gt;https://github.com/mattn/sonictemplate-vim&lt;/cite&gt;
&lt;/blockquote&gt;

これを bundle ディレクトリ等に入れておき、goのファイルを新規で開きます。そこで&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
:Template web-app&lt;br /&gt;
&lt;/blockquote&gt;

を実行すれば以下のコードが展開されます。&lt;br /&gt;

&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Statement&quot;&gt;package&lt;/span&gt;&amp;nbsp;main&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Statement&quot;&gt;import&lt;/span&gt;&amp;nbsp;(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;String&quot;&gt;&amp;quot;fmt&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;String&quot;&gt;&amp;quot;net/http&amp;quot;&lt;/span&gt;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Statement&quot;&gt;func&lt;/span&gt;&amp;nbsp;main() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;http.HandleFunc(&lt;span class=&quot;String&quot;&gt;&amp;quot;/&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;func&lt;/span&gt;&amp;nbsp;(w http.ResponseWriter, r *http.Request) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fmt.Fprintf(w,&amp;nbsp;&lt;span class=&quot;String&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;})&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;http.ListenAndServe(&lt;span class=&quot;String&quot;&gt;&amp;quot;:8080&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;nil&lt;/span&gt;)&lt;br /&gt;
}&lt;br /&gt;
&lt;/blockquote&gt;

この後、&lt;code&gt;http.ListenAndServe(&quot;:8080&quot;, nil)&lt;/code&gt; の１行上で空行を開け、&lt;code&gt;:Template &amp;lt;tab&amp;gt;&lt;/code&gt; をタイプすると、web-app に特化した候補が優先的に表示されます。

&lt;blockquote&gt;
&lt;img src=&quot;http://go-gyazo.appspot.com/1b3fa01ff957e4d1.png&quot; alt=&quot;sonictemplate&quot; /&gt;
&lt;/blockquote&gt;

sonictemplate-vim はGo言語だけでなく、他の言語でも同様に便利なテンプレートが用意されています。よろしければ使ってみて下さい。また pull-req によるテンプレートの追加もお待ちしています。&lt;br /&gt;
&lt;br /&gt;
これだけあれば、この夏のビーチでモテモテ間違いなしですね！&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;awsxom&quot;&gt;
&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4863541171/ref=nosim/?tag=bigsky-22&quot;&gt;
&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51ZzoXpsmqL._SL160_.jpg&quot; alt=&quot;基礎からわかる Go言語&quot; class=&quot;awsxom-image&quot; /&gt;
&lt;strong&gt;基礎からわかる Go言語&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
古川 昇&lt;br /&gt;
シーアンドアール研究所 / ￥ 2,310 (2012-11-21)&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
発送可能時間：在庫あり。&lt;br /&gt;
&lt;br class=&quot;clearall&quot; /&gt;
&lt;/div&gt;

</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>cpp-netlib と picojson で lingr bot 書いた。</title>
     <pubDate>Tue, 14 May 2013 20:11:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/lang/c/20130514201025.htm</link>
     <category>boost</category><category>cpp</category><category>picojson</category><category>lingr</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/lang/c/20130514201025.htm</guid>
     <description>
おしょうさんのを盛大にパクった。罪悪感はない。

&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://d.hatena.ne.jp/osyo-manga/20130511/1368242653&quot;&gt;netlib で HTTP Server を書いてみた - C++でゲームプログラミング&lt;/a&gt;
&lt;br&gt;
&lt;p&gt;netlib で HTTP Server を書いてみた Boost . Asio だけだとしんどそうだったので netlib でちょっと書いてみました。 [環境] netlib 0...&lt;/p&gt;
&lt;cite&gt;http://d.hatena.ne.jp/osyo-manga/20130511/1368242653&lt;/cite&gt;
&lt;/blockquote&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;https://github.com/mattn/cpp-lingrbot&quot;&gt;mattn/cpp-lingrbot - GitHub&lt;/a&gt;
&lt;br&gt;
&lt;cite&gt;https://github.com/mattn/cpp-lingrbot&lt;/cite&gt;
&lt;/blockquote&gt;

&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;PreProc&quot;&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;lt;boost/network/include/http/server.hpp&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;PreProc&quot;&gt;#include&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;lt;picojson.h&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Type&quot;&gt;struct&lt;/span&gt;&amp;nbsp;cpp_bot {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;typedef&lt;/span&gt;&amp;nbsp;boost::network::http::server&amp;lt;cpp_bot&amp;gt; server;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;void&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;operator&lt;/span&gt;&amp;nbsp;()(server::request&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;const&lt;/span&gt;&amp;nbsp;&amp;amp;request, server::response &amp;amp;response) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;namespace&lt;/span&gt;&amp;nbsp;http = boost::network::http;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;typedef&lt;/span&gt;&amp;nbsp;server::string_type string;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string body = request.body;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;std::ostringstream data;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;std::cout &amp;lt;&amp;lt; body &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picojson::value v;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string err;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picojson::parse(v, body.begin(), body.end(), &amp;amp;err);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!err.empty()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response = server::response::stock_reply(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;server::response::bad_request,&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;invalid request&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;return&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!v.is&amp;lt;picojson::object&amp;gt;()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response = server::response::stock_reply(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;server::response::bad_request,&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;invalid request&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;return&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picojson::array arr;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picojson::object obj;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj = v.get&amp;lt;picojson::object&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;v = obj[&lt;span class=&quot;Constant&quot;&gt;&amp;quot;events&amp;quot;&lt;/span&gt;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!v.is&amp;lt;picojson::array&amp;gt;()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response = server::response::stock_reply(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;server::response::bad_request,&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;invalid request&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;return&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arr = v.get&amp;lt;picojson::array&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BOOST_FOREACH(&lt;span class=&quot;Type&quot;&gt;auto&lt;/span&gt;&amp;nbsp;x, arr) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!x.is&amp;lt;picojson::object&amp;gt;()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;continue&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picojson::value message = x.get&amp;lt;picojson::object&amp;gt;()[&lt;span class=&quot;Constant&quot;&gt;&amp;quot;message&amp;quot;&lt;/span&gt;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!message.is&amp;lt;picojson::object&amp;gt;()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;continue&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;picojson::value text = message.get&amp;lt;picojson::object&amp;gt;()[&lt;span class=&quot;Constant&quot;&gt;&amp;quot;text&amp;quot;&lt;/span&gt;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;if&lt;/span&gt;&amp;nbsp;(!text.is&amp;lt;string&amp;gt;()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;continue&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string str = text.get&amp;lt;string&amp;gt;();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;if&lt;/span&gt;&amp;nbsp;(str.find(&lt;span class=&quot;Constant&quot;&gt;&amp;quot;cpp&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;0&lt;/span&gt;) != string::npos) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data &amp;lt;&amp;lt;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;くぴぴ&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;std::string ret = data.str();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;size_t&lt;/span&gt;&amp;nbsp;e = ret.find_last_not_of(&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Special&quot;&gt;\t\r\n&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;if&lt;/span&gt;&amp;nbsp;(e != string::npos) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ret = string(ret,&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;0&lt;/span&gt;, e);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response = server::response::stock_reply(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;server::response::ok, ret&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;void&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;log(...){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Type&quot;&gt;int&lt;/span&gt;&lt;br /&gt;
main(){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;typedef&lt;/span&gt;&amp;nbsp;cpp_bot::server server;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;auto&lt;/span&gt;&amp;nbsp;address =&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;localhost&amp;quot;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;auto&lt;/span&gt;&amp;nbsp;port =&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;11614&amp;quot;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;try&lt;/span&gt;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cpp_bot handler;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;server server_(address, port, handler);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;server_.run();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;catch&lt;/span&gt;(std::exception&amp;amp; e){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;std::cout &amp;lt;&amp;lt; e.what() &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;1&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;0&lt;/span&gt;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/blockquote&gt;

cpp という単語が含まれた発言に反応して「くぴぴ」と80年代アニメ風に応答します。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;awsxom&quot;&gt;
&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/4894714515/ref=nosim/?tag=bigsky-22&quot;&gt;
&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51TFT3FMS1L._SL160_.jpg&quot; alt=&quot;Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)&quot; class=&quot;awsxom-image&quot; /&gt;
&lt;strong&gt;Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
スコット・メイヤーズ&lt;br /&gt;
ピアソン・エデュケーション / ￥ 3,990 (2006-04-29)&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
発送可能時間：在庫あり。&lt;br /&gt;
&lt;br class=&quot;clearall&quot; /&gt;
&lt;/div&gt;

</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>Go言語で動く mobirc、gomirc で携帯からIRCしよう。</title>
     <pubDate>Wed, 08 May 2013 16:26:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/lang/go/20130508162508.htm</link>
     <category>IRC</category><category>golang</category><category>mobirc</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/lang/go/20130508162508.htm</guid>
     <description>
以前から携帯から IRC する手段として &lt;a href=&quot;https://github.com/tokuhirom/mobirc&quot;&gt;mobirc&lt;/a&gt; を使ってきたのだけど、使ってるサーバのリソースが少なすぎてちょくちょく困ってました。&lt;br /&gt;
「これ、Go言語で書いたらパフォーマンスも出るし、使用リソースも減るし万々歳じゃね？」というアホの一つ覚えみたいな動機で作り始めました。&lt;br /&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;https://github.com/mattn/gomirc&quot;&gt;mattn/gomirc - GitHub&lt;/a&gt;
&lt;br&gt;
&lt;cite&gt;https://github.com/mattn/gomirc&lt;/cite&gt;
&lt;/blockquote&gt;

mobirc とほぼ同等の機能が動きます。

&lt;ul&gt;
	&lt;li&gt;複数ネットワーク&lt;/li&gt;
	&lt;li&gt;クリッカブルリンク&lt;/li&gt;
	&lt;li&gt;画像インライン表示&lt;/li&gt;
	&lt;li&gt;新着件数表示&lt;/li&gt;
	&lt;li&gt;ログイン機能&lt;/li&gt;
&lt;/ul&gt;

iPhoneビューも付いてます。

&lt;blockquote&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/images/gomirc.png&quot; class=&quot;lightbox&quot; title=&quot;gomirc&quot;&gt;&lt;img src=&quot;http://mattn.kaoriya.net/images/gomirc-thumb.png&quot; alt=&quot;gomirc&quot; /&gt;&lt;/a&gt;
&lt;/blockquote&gt;

あと、バックログ機能が付いてましてサーバを再起動したい場合は CTRL-C すると backlog.json というファイルに最新100件のバックログが保存されます。&lt;br /&gt;
config.json は以下の様に記述します。&lt;br /&gt;

&lt;blockquote class=&quot;code&quot;&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;irc&amp;quot;&lt;/span&gt;:&amp;nbsp;[&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;freende&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;host&amp;quot;&lt;/span&gt;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;irc.freenode.net:6668&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;user&amp;quot;&lt;/span&gt;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;my-username&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;password&amp;quot;&lt;/span&gt;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;my-password&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;channels&amp;quot;&lt;/span&gt;:&amp;nbsp;[&lt;span class=&quot;Constant&quot;&gt;&amp;quot;golang-nuts&amp;quot;&lt;/span&gt;]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;perl&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;host&amp;quot;&lt;/span&gt;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;irc.perl.org:6668&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;user&amp;quot;&lt;/span&gt;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;my-username&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;password&amp;quot;&lt;/span&gt;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;my-password&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;web&amp;quot;&lt;/span&gt;:&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;addr&amp;quot;&lt;/span&gt;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;:5004&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;password&amp;quot;&lt;/span&gt;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;dankogai&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;root&amp;quot;&lt;/span&gt;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;/mobirc/&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;backlog&amp;quot;&lt;/span&gt;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;./backlog.json&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;keywords&amp;quot;&lt;/span&gt;:&amp;nbsp;[&lt;span class=&quot;Constant&quot;&gt;&amp;quot;dan&amp;quot;&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;kogai&amp;quot;&lt;/span&gt;]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/blockquote&gt;

root が指定出来るので、サブディレクトリにインストールしたい人も安心設計。&lt;br /&gt;
ちゃんと計測していませんが、perl 版を使っていた頃に比べて top の RSS が 2/3 程度に減りました。&lt;br /&gt;
あと先日書いた lingr-ircd を使えばこの gomirc からも扱えますし

&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;https://github.com/mattn/go-lingr&quot;&gt;mattn/go-lingr - GitHub&lt;/a&gt;
&lt;br&gt;
&lt;cite&gt;https://github.com/mattn/go-lingr&lt;/cite&gt;
&lt;/blockquote&gt;


&lt;a href=&quot;http://wiki.znc.in/ZNC&quot;&gt;znc&lt;/a&gt; を使えば複数のネットワークを束ねる事も出来ます。&lt;br /&gt;

&lt;blockquote&gt;
&lt;img src=&quot;http://go-gyazo.appspot.com/a604e6c9eba86974.png&quot; alt=&quot;znc&quot; /&gt;
&lt;/blockquote&gt;

これで何時でも何処でも IRC 出来る様になりますね。よろしければどうぞ。&lt;br /&gt;
pull リクエストもお待ちしております。&lt;br /&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
  </channel>
</rss>
