IRCフレームワークCinchで人間でもできるIRCBot
GitHub - cinchrb/cinch: The IRC Bot Building Framework
IRCBotを作ってみたいなぁと思って調べたら、CinchというIRCBotフレームワークがとても簡単でよさげだったので使ってみました。
インストールはgemを使うだけ。
gem install cinch
使い方はとっても簡単で、例えばGithubにあるコードをあげると、あいさつを返すbotを作りたいと思ったらこうする。
require 'cinch' bot = Cinch::Bot.new do configure do |c| c.server = "irc.freenode.org" c.channels = ["#cinch-bots"] end on :message, "hello" do |m| m.reply "Hello, #{m.user.nick}" end end bot.start
ね、簡単でしょ?
configureの部分に接続するサーバーやチャンネルなどの設定を書く。例えば下のような感じ。
この他にもできる設定はlib/cinch/bot_configuration.rbに書いてある。
bot = Cinch::Bot.new do configure do |c| c.server = "irc.hoge.net" c.port = 42 c.password = 'foobar' c.channels = ["#foobarbaz"] c.nick = 'uiureo' c.realname = 'uiureo' c.user = 'uiureo' end end
あるメッセージに返答するon :messageには正規表現も使える。helloが含まれるメッセージにHello!と返答するbotであればこんな風に書ける。
bot = Cinch::Bot.new do configure do |c| c.server = "irc.freenode.org" c.channels = ["#cinch-bots"] end end bot.on :message, /hello/ do |m| m.reply "Hello!" end
日本語を扱うときは注意が必要で、自分の環境とIRCチャットの文字コードを考慮して適切に文字コードを変換しなければならない。
IRC_ENCODING='iso-2022-jp' bot.on :message, /hello/ do |m| m.reply "こんにちは!".encode(IRC_ENCODING).force_encoding('external') end
Githubのページには例が多くのってるので、作りたいBotに合わせてコードを読むとよいです。
https://github.com/cinchrb/cinch/tree/master/examples
neocomplcacheでHaskell補完 : neco-ghc
neco-ghc - A neocomplcache plugin for Haskell, using ghc extensions : vim online
Haskellを始めたんだけど入力するのが面倒くさいから、Vimでバシバシと補完がきいたらいいなと思って調べたらneco-ghcというのが出てきた。なんかneocomplcache上で補完がきくようにしてくれるプラグインみたい。
インストールに際して、割と詰まった点が多かったからメモっておく。
まずneocomplcacheを入れてない人はそれをインストールする。それと、cabalコマンドが使えない人はhaskell-platformかなんかをインストールする。やり方はググろう
ghc-modをインストールするコマンドを実行
% cabal install ghc-mod
vimprocをインストール
neco-ghcにはvimprocが必要なのでそれをインストールする
GitHub - Shougo/vimproc.vim: Interactive command execution in Vim.
ここから適当にソースコードを落としてきて、doc/vimproc.txtを見てインストールする。Macの場合だと落としてきたフォルダの中でmakeコマンドを実行する
% make -f make_mac.mak
こうするとautoload/にproc.soができるので、proc.soとvimproc.vimとvimproc/を自分の.vim/autoload/にコピー。
これでvimprocのインストールは終わり
neco-ghcのインストール
neco-ghc - A neocomplcache plugin for Haskell, using ghc extensions : vim online
ここからパッケージをダウンロードしてきて、中にあるghc.vimをパッケージの中の階層構造と同じように.vim/に入れる。
ghc-modが見つからないと出る場合
ghc-modにパスが通ってない場合は.cabal/bin/に適当にパスを通す
自分の場合は.zshrcで$PATHに追加した
作者のgithubによると.vimrcにこのように追記すればいいらしい
let $PATH=$PATH."/Users/<username>/.cabal/bin"
おわり
これでHaskellでも補完がきくようになって、しあわせに開発ができるようになりました。めでたしめでたし
Array#forty_two
Active Supportがあればこういうことができるというのはよく知られている。
[*(1..100)].second #=> 2 [*(1..100)].third #=> 3
Array#fifthまでしか定義されていないためseventhとかは使えない。
だけど、もうひとつArray#forty_twoという素晴らしいメソッドが定義されていてこういうことができる。
[*(1..100)].forty_two #=> 42
これが奇妙だと思われる方はこちらをどうぞ
人生、宇宙、すべての答え - Google 検索
TextMateの補完(esc)が遠いからリマップしよう
補完するのにescキーはあまりにも遠すぎる。
環境設定 > キーボード > キーボードショートカット > アプリケーション
ここで+を押して追加する。アプリケーションにTextMateを選んで、名前をNext Completeとして、好きなキーを割り当てましょう。
TextMateの補完(esc)に別のショートカットを割り当てる方法
このエントリと同じようにすればできるのだけど、現在TextMateでは補完は"Next Complete"でなくて"Next Completion"なのでそこを置き換えて設定する。
同じようにして"Previous Completion"にもキーを割り当てることができる。
好きな空いてるキーに割り当てればOK
Rake 0.9でWARNINGが出るときの対処法
rake 0.9をインストールした状態で、Railsで何気なくrakeコマンドを打つと次のようなメッセージが出てくる。
% rake db:migrate WARNING: Global access to Rake DSL methods is deprecated. Please Include ... Rake::DSL into classes and modules which use the Rake DSL methods. WARNING: DSL method Hoge::Application#task called at /Users/uiureo/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/application.rb:215:in `initialize_tasks'
rakeするたびにWARNINGが表示されるのは気分がよくない。
Railsの作者のDHHはTwitterでこう発言している。
rake 0.8.7をRailsで使うようにするには次のようにすればいい。
対処法
まず、rake 0.9.1をアンインストールするコマンドを実行する。
gem uninstall rake -v=0.9.1
RailsのGemfileに次のように書き加える。
gem 'rake', '0.8.7'
最後に、rakeのバージョンを更新するコマンドを実行。
bundle update rake
これでWARNINGが出なくなりました。めでたしめでたし。