[僕] 2009年10月26日 アーカイブ

僕ト云フ事

たろマークはてなブックマーク

2009年10月26日

[lazy-people][] 告知: 11/07 表丹沢の鍋割山に登ります。

まさか、自分の blog でこんなにも山タグつけることになるとは思いませんでしたw
今なら「lazy-people は山に登る集団です」と答えますw
秋ということで紅葉を楽しみつつ表丹沢の鍋割山に登ります。
(自分はその余裕があるかどうか心配だ)

詳しくはここに書いてます

もし「自分も登りたい」という方がいたら、@lazy_san をフォローして教えてください。
もしくは irc.lazy-people.org:6667#project (utf-8) へ join now!

11月はこの登山に加えて、かるめ屋の芝居があったり、後輩の芝居があったり、古田工務店の芝居があったりで週末が一気に埋まったw
みんなまとまって芝居しすぎじゃないですかw

[irc][lazy-people][ruby][twitter] IRC と twitter の橋渡しをする lazy さんを作りました

lazy_san_iphone.png lazy people のマスコット、lazy さんの twitter ボットを作りました。今後はイベントごとがあるときはこっちにも通知していこうと思います。
また、twitter で連絡したい人は @lazy_san にもリプライすると良いと思いますよ。

@lazysan は関係ない人ですw)

@lazy_san に reply すると irc.lazy-people.org 上の #project にいる irc bot, lazy_san が IRC 内に通知してくれます。

また、IRC 上の lazy_san に話しかけると twitter 上の @lazy_san が発言します。

09:25 d**y: lazy_san: オーハーヨーーーウィ
09:25 lazy_san: d**y: lazy_san: オーハーヨーーーウィ

lazy_san.png

あとはフォローしてくれたら自動でフォロー返します。お気軽にフォローオ願いします。

ソースはここ。前回の thanksbot と同じディレクトリにいます。

前回書いた thanksbot にもフックするためにまた ruby で書きました。というか、ruby の練習台ですw
あー、thanksbot のプロセス殺して lazy_san 側で呼びかけられ方で振り分けても良いなぁ。でも nick 一覧にないと補完されなくて面倒か。

個人的には thread に触れたことがないので、こんなんで良いのかどうか気になります。

#!/usr/bin/env ruby
# encoding: utf-8
 
$LOAD_PATH << "lib"
 
require 'rubygems'
require 'net/irc'
require 'observer'
require 'lazysan'
require 'yaml'
 
class LazySan::IRC < Net::IRC::Client
 
  def initialize(config)
    @channel = config[:irc][:opts][:channel]
 
    @lazysan = LazySan::Twitter.new(config[:twitter][:user], config[:twitter][:pass])
 
    super(
      config[:irc][:host],
      config[:irc][:port],
      config[:irc][:opts]
    )
  end
 
  def on_rpl_welcome(m)
    post JOIN, @channel
    run_observe_twitter()
  end
 
  def run_observe_twitter()
    @message_thread = Thread.new do
      loop do
        begin
          @lazysan.auto_follow
          @lazysan.replies.each {|status|
            post NOTICE, @channel, "@#{status['user']['screen_name']}: #{status['text']}"
          }
        rescue
          # TODO: Net::IRC の log
        end
        sleep 300
      end
    end
  end
 
  def on_privmsg(m)
    if match = m[1].match(/^lazy_san:\s*(.*)/)
      begin
        @lazysan.update(match[1])
        post NOTICE, @channel, "#{m.prefix.nick}: #{match[0]}"
      rescue
        post NOTICE, @channel, "投稿ミスった >_<"
      end
    end
  end
 
end
 
config = YAML.load_file('lazysan.yaml')
 
lazy_san = LazySan::IRC.new(config)
 
lazy_san.start

クラス構成が LazySan::IRC と LazySan::Twitter とあって、LazySan::IRC が LazySan::Twitter に依存してるのも少し変な気がする。

プログラミング言語 Ruby
まつもと ゆきひろ David Flanagan
オライリージャパン
売り上げランキング: 33589
おすすめ度の平均: 4.0
5 最も信頼できるRubyの本
5 基本書にふさわしい本
5 rubyマスターになるために
3 鬱にされる鬱然たるRuby教科書
2 For Rubist