These pages are written by only Japanese.
|
Namazu for hns による簡易全文検索です。 詳細は 詳細指定/ヘルプをご参照下さい。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||
yoya_awm-ffxxxxxxxxxxxx1d.20081205.log yoya_bot-yoya_awm-27xxxxxxxxxxxx05.20090506.log yoya_awm-yoya_bot-e1xxxxxxxxxxxx9d.20090506.log ※ 念の為、x は隠してます。ぱっと見、発言したユーザと一致していたので、 ユーザ毎に切り出しているのかと勘違いしたのですが、
- グループチャットで一人で作成した場合は => <user_id>-<id_something>..log - 特定の人にチャットしたり、そこに人を呼んで増やしたりした場合は、 => <user_id_1>-<user_id_2>-<id_something>..logこれを <chat_group_label>.<date>.log にすれば、 ピンと来るかなと以下のように改造してみました。
$files = array( 'yoya_awm-yoya_bot-c7xxxxxxxxxxxxd2' => 'yoya_bot', ); $bot->loadPlugin( "log", array( 'dir' => '/home/yoya/log/skype', 'files' => $files, 'chat_topic_filter' => null, 'chat_id_filter' => null, ));でもって、Skype/Bot/Plugin/Log.php は以下のように処理。 __construct でパラメータチェックしつつ受け取る。
$this->files = $parameter['files']; } else { $this->files = array(); } _append で $chat_id からファイル名を作る所に細工。 if (isset($this->files[$chat_id])) { $chat_id = $this->files[$chat_id]; }
% cat yoya_bot.20090805.log 2009/08/05 00:00:26 [SAID] よや(yoya_awm) うーうー</blockquote>\(^O^)/ どうでしょうね。> 誰と無く。 ↑一応、改変した Log.php を晒してみたり…
self[nth] nth 番目のバイトを整数(文字コード)で返します p 'bar'[2] # => 114なんだけど、実際に試すと。
#! /usr/bin/ruby $s = "foobaa" $c = $s[0] p $s p $c
"foobaa" "f"何故か、数値じゃなくて(1文字の)文字列が出てきます。
$s = String::new("foobaa");したけど変わらず。
"foobaa" 102となります。 自分使ってるの 1.9.1p129 なもので…
def each @data.each_byte { |byte| (0..7).each { |bit_offset| bit = (byte >> (7 - bit_offset)) & 1 yield(bit) } } endclass に↑こう書いておくだけで、
$io.each { |b| printf("%d", b) }こんな風に 1 bit ずつ each で回せる。うーむw
if RUBY_VERSION >= '1.9.0' # >_<; byte = @data[byte_offset].ord else byte = @data[byte_offset] end
def get_bits_signed!(bit_width) bits = get_bits!(bit_width) sig_b = 1 << (bit_width - 1) if (bits & sig_b) # negaive bit_mask = (sig_b << 1) - 1 bits = bits ^ bit_mask; # bit reverse bits = - (bits + 1) end bits end例えば、11bitなんだけど符号ありみたいな、 変態的なバイナリフォーマットを処理する時に必要。
require 'SWF.rb' data = IO.read("/home/yoya/flash/ffxi2.swf") swf = SWF.new(data.force_encoding("BINARY")); swf.dump()※ force_encoding しないと UTF-8列だと思われるので、 UTF-8 的にイリーガルなデータが処理できなくなるという。
Signature=FWS Version=4 FileLength=351150 RECT: (-1639, -1639)-(-1127, -1257) FrameRate=15 FrameCount=40ヘッダ解析成功。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5802 yoya 17 0 805m 610m 3648 R 0.3 61.0 242:53.69 skype自宅で Skype ボット実験用に動かしている Skype for Linux がやんちゃしてる模様。
Signature=FWS Version=4 FileLength=2704 RECT: (bits=14) (0, 0) - (240, 240) FrameRate=8.0 FrameCount=40 Type=9 Length=3 Type=1 Length=0 <略> Type=1 Length=0 Type=0 Length=0
a = 0 if (a) p true else p false end実行結果
trueうわーぃw
c = 1 + 1/2 p c実行結果
1うははーいw
| Header | Tag1 | Tag2 | ... | Tag(End) |Tag はコンテンツの種類(画像なのか音声なのか文字なのか。とか)毎に 中身(のデータ構造)が異なるので、Tag を継承させて Tag_DefineBitsJPEG とか Tag_DefineSound みたいに実装していきたい。
Signature=FWS Version=4 FileLength=2704 RECT: (bits=14) (0, 0) - (240, 240) FrameRate=8.0 FrameCount=40 Type=9(Unknown) Length=3 <略> Type=1(Unknown) Length=0 Type=0(End) Length=0それっぽく出来た。
class SWF_Tag end class SWF_Tag_End < SWF_Tag def initialize(bit_in, length) @Content = bit_in.get_string!(length) end endFoo_Baa < Foo という記法で OK
class Foo def initialize(foo) end end className = "Foo" foo = <コンストラクタに渡したい適当な値> klass = Object.instance_eval("#{className}.new(foo)")こんな感じ。
dev# yum upgrade Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * updates: ftp.yz.yamagata-u.ac.jp <略> File "/usr/lib/python2.4/site-packages/yum/sqlitesack.py", line 94, in _read_db_obj setattr(self, item, _share_data(db_obj[item])) TypeError: unsubscriptable ob前にも似た事があったような。。。
# yum clean metadata Loaded plugins: fastestmirror 21 metadata files removed 8 sqlite files removed 0 metadata files remove # yum upgrade <略> Total download size: ?? M Is this ok [y/N]:ふむ。Ok