2008年 02月 14日

gerry++

2008年 02月 13日

Fx3 b3

いれてみたけど、アドレスバーに入力したあと RET で移動できなかったのでやめた。あといくつか必須アオドンがうごかないしなぁ。

RET がだめなのはもれのプロファイルがダメらしい……再構築するのめんどいお……

SKK λ

xl でλを入力できるようにした。

http://subtech.g.hatena.ne.jp/cho45/20070311/1173607857

2008年 02月 09日

ブロックのブロック引数 (ruby1.8系)

def foo(&block)
    obj = Object.new
    (class <<obj; self; end).__send__(:define_method, :_) do
        Proc.new == block # true / expect false
    end
    obj
end
p foo {
    # A
}._ {
    # B
}

なんでブロックの中の Proc.new が外のブロック引数で生成されるんだ…… 1.8 ってブロックのブロック引数とれないのかなぁ…… 1.9 なら |&block| できるけど……

citrus

あたらしくプラグインをつくったときは引数なしで reload してから reload PluginName

citrus

もう名前は citrus でいいやという気分だけど、ディレクトリ構成をどうするかで悩む。ruby/citrus に今のブランチをうつしてしまって、chokan を削除するようにしたいけど、svn up していきなり chokan がきえたらびびるよね

2008年 02月 08日

chokan, citrus, 必須プラグイン

基本的につかうプラグインは決まっているので、必須プラグインはさっさと実装してあとはオンデマンドで移植する。

  • URIInformation
    • URI をあつかうのではなく、スキームごとに別のプラグインに
    • HTTP
      • HTTP 内で mixi をアカウントログインするとかはまた後でかんがえる
  • PlusPlusbot
    • 移植は簡単だけどデータを移行し忘れないように
  • Eval
  • JSEval

ぐらいかな。あとあんまつかってない。PHP でフィリピンペソはちゃんと出したいけど

古いほうの chokan とめた。今プラギンはうえのしか有効になってない

2008年 02月 06日

lt と gt

僕の覚えかたは、lt の l は left で < です。

あぁ、説明不足だったんですが、僕はだいなり・しょうなりってどっちがどっちだかわからないバカなので (同じように東と西もわからなかった)、gt/lt が何の略か知っていてもそれが記号に一致しないんです。でも l は left の l とバカでもわかるように覚えておけば、左手に近いほうの Shift+, をおせばいいというのが直感的に理解できるんです。バカのバカなりの考えかたです。

Ruby の Jabber(XMPP) ライブラリ

xmpp4r-simple がつかいやすいみたいかな。xmpp4r のラッパで、作者が twitter の中の人みたい

require "rubygems"
require "xmpp4r-simple"
require "pit"

config = Pit.get("jabber", :require => {
	"username" => "username of jabber account",
	"password" => "password of jabber account",
})

im = Jabber::Simple.new(config["username"], config["password"])

Thread.start do
	loop do
		im.received_messages do |msg|
			p msg
			p msg.from
			p msg.body
			p msg.type
		end
		sleep 1
	end
end
#im.deliver("to@example.com", "foobar")

sleep

received_messages は常に non-blocking なのでループさせる必要がある。xmpp4r のほうはコールバックになってるから、特に non-blocking にしたくないんだったら im.client.add_message_callback do |msg| end したほうがいいかも。

im.subscribed_to?(jid) とか便利なのもあるけど、接続直後だと、どんなアカウントでも false をかえしたりする。

特別いろいろやりたいんじゃなかったら xmpp4r-simple のほうがめんどくさくなくてよさげ (なにがめんどいって最初のコネクションだけど、あと接続きれたときの処理とかもめんどいし、そこらへんかってにやってくれるのは嬉しい)

require "rubygems"
require "xmpp4r"

config = ...

jid    = Jabber::JID.new(config["username"])
client = Jabber::Client.new(jid)
client.connect
client.auth(config["password"])
client.send Presence.new(nil, "") # 現在の状態をセット。しないと他の人にはオフラインのままにみえる
client.add_message_callback do |msg|
	p msg
end

エラー処理もいれないといけなくて、エラーがおきて re-connect したらまた Presence をおくらないといけなくて、みたいな感じでめんどい。

2008年 02月 05日

罠 -> JSON は文字列リテラルのクオートにシングルクオートは使えない