Fx3 b3
いれてみたけど、アドレスバーに入力したあと RET で移動できなかったのでやめた。あといくつか必須アオドンがうごかないしなぁ。
RET がだめなのはもれのプロファイルがダメらしい……再構築するのめんどいお……
SKK λ
xl でλを入力できるようにした。
ブロックのブロック引数 (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 がきえたらびびるよね
chokan, citrus, 必須プラグイン
基本的につかうプラグインは決まっているので、必須プラグインはさっさと実装してあとはオンデマンドで移植する。
- URIInformation
- URI をあつかうのではなく、スキームごとに別のプラグインに
- HTTP
- HTTP 内で mixi をアカウントログインするとかはまた後でかんがえる
- PlusPlusbot
- 移植は簡単だけどデータを移行し忘れないように
- Eval
- JSEval
ぐらいかな。あとあんまつかってない。PHP でフィリピンペソはちゃんと出したいけど
古いほうの chokan とめた。今プラギンはうえのしか有効になってない
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")
sleepreceived_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 をおくらないといけなくて、みたいな感じでめんどい。