2006年 11月 09日

無脳

algorithm-diff で常に直近の数行の文字ごとの diff をとりながら、共通する部分をキーワードDBに登録していく。
ログは全てn-gram 式の全文検索エンジンに突っ込んでいく。

直近の diff から得た共通部分からランダムにトピックワードを選択し、全文検索。出てきた結果の上位数件からランダムに行を抽出し、直近の行と再び diff をとる。その結果のキーワードをキーワードDBから取り出した(どうやって?)ランダムなものに置換する。

Rinda Reload

http://lab.lowreal.net/trac/browser/c/mendoi/autoring

ネットワークまたがった場合のいい方法が浮かばないなぁ。とりあえず chain できるようにしてみた。他に方法あるんだろうか

# 主要 RingServer を uri つきで起動
./ring.rb -u druby://host:4321

でもって違うネットワークでは普通に RingServer をたてて
uri 指定して reload メッセージを別の RingServer の tuplespace に投げるサービスを起動

./ring.rb&
./reload_chain.rb druby://host:4321&

美しくないな。

っていうか上流サーバのあるネットワークで cl.rb 起動されても下流に通知されないからこれじゃだめか。ネットワークが分かれているというより、NAT なのが悪いんだよなぁたぶん。NAT でなければ Finger.new("servername") でいけそうだ
解決法:ネットワーク分けない

mabinogi のギルド

所属ギルドが解散するらしい。残念だなぁ。

ここ最近ログインしてもコミュニケーションサーバーが重くてギルドチャットがまともに通らないことが多い。直後はしばらく繋がらないから発言できないし。キャラクターチェンジ多いとほぼずっとオフライン扱いになってしまう。直して欲しいな、と書こうと思っていたけどもうどうでもいいな。

大してログインもできないくせにこれから他のギルドに所属するのは面倒くさい。今更知らないギルドに入って相手の考えていることを量りながらチャットするなんてモチベーションは生まれてこないし、そんなに時間がとれない。

そろそろネトゲも卒業ですか。

Provider

Provider は RingServer を定期的に再検索するようにしたほうがいいっぽいなぁ。RingServer が落ちてもそれを検知できないから……

RingServer を定期的に再検索する Provider

provider = Rinda::RingProvider.new(:Reload, DRbObject.new(reload), 'Reload')
entry = nil
loop do
	begin
		if entry
			# 登録済みタプルを削除する
			entry.renew(0)
		end
		# RingServer を再検索する
		Rinda::RingFinger.finger.lookup_ring_any
		entry = provider.provide
	rescue DRb::DRbConnError, RuntimeError => e
		# RingServer が見つからないときのエラーをキャッチ
		entry = nil
		puts e.message
	end


	sleep 60
end

なんかいい方法ないかなぁ。これだと Renewer は意味がなくなる。(Renewer はサーバからのリクエストの答えるだけなので、サーバが動いてなければ意味をなさない。)

provide メソッドをオーバライドしてブロックするようにしてもいいかもしれない。