These pages are written by only Japanese.

Welcom to My Diary.com
最新の日記タイトル一覧カテゴリ別タイトル一覧トップへ戻る〜

こんばんわ♪ 現在は3月28日(木)18時35分。 今日も残業なのでしょうか?


hns - 日記自動生成システム - Version 2.19.5 (色々 Fixed)

先月 2009年08月 来月
1
02 3 04 5 06 07 08
09 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Namazu for hns による簡易全文検索です。
詳細は 詳細指定/ヘルプをご参照下さい。
検索式:

2009年08月02日(日)

Flash SWF spec 和訳開始

土日風邪で倒れて何も出来ずに悔しかったので、 flash fileformat specification (SWF の仕様書)の和訳を始めてみました。 そもそも、 この手の開発をする人は普通に英語が読めるので需要はなさそうですが、 自分の理解を確認する為に…
自分の知りたい所が分かれば満足なので多分コンプリートしません。(ダメ宣言)

2009年08月04日(火)

Skype PHP Bot

↑これの続き
github で複数ファイルを一度に pull request する仕方が よく分からないので、とりあえずここで叫んでみるテスト。

Skype API wrapper class に付属する plug-in の log を使うと 以下のようなファイルが出来ますが、 このファイルが当初よく分かりませんでした。
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 にすれば、 ピンと来るかなと以下のように改造してみました。

改造内容:

まずは呼び出し側。 <user_id>-<id_something> => ファイル名の対応表を作って、 bot のインスタンスにパラメータとして渡す。
$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 を晒してみたり…

2009年08月06日(木)

Ruby お勉強開始 (文字列をchar配列のように使いたい)

今日から Ruby の勉強を開始しました。
早速手始めに、BitIO class を作ろうとして、 データ配列(とりあえず String を使ってみた。Array は冗長っぽいので) から特定の文字をアスキー値で抜き出す所ではまり中。
公式マニュアルの文字列の説明だと
    self[nth]
    nth 番目のバイトを整数(文字コード)で返します

    p 'bar'[2] # => 114
なんだけど、実際に試すと。
    #! /usr/bin/ruby

    $s = "foobaa"
    $c = $s[0]

    p $s
    p $c
    "foobaa"
    "f"
何故か、数値じゃなくて(1文字の)文字列が出てきます。
実際、$c >> 8 とかすると文字列でシフトするなって怒られる。

うーむ。謎。
文字列リテラルの罠かもと疑って
    $s = String::new("foobaa");
したけど変わらず。
そもそも、やり方が間違えている気もするので、 File::getc 辺りの実装を覗いてみますか…

version の問題でした:

ruby 1.8.5 だと、
"foobaa"
102
となります。 自分使ってるの 1.9.1p129 なもので…
てな訳で 1.9 で新設された .ord メソッドで解決です。 m師匠に感謝。

メモ。:

ちゃんと、こっちのマニュアル読もう。

2009年08月07日(金)

Ruby で each 実装

each ブロックの実装楽しい。
def each
  @data.each_byte {
    |byte|
    (0..7).each {
      |bit_offset|
      bit =  (byte >> (7 - bit_offset)) & 1
      yield(bit)
    }
  }
end
class に↑こう書いておくだけで、
$io.each {
  |b|
  printf("%d", b)
}
こんな風に 1 bit ずつ each で回せる。うーむw

ord の問題:

ついでに、ord の問題も、 Rubyのバージョンで分岐させて 1.8 でも動くようにしてみた。
if RUBY_VERSION >= '1.9.0' # >_<;
  byte = @data[byte_offset].ord
else
  byte = @data[byte_offset]
end

2の補数:

n bit 取るメソッドで負の値も扱えるようにしてみた。
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なんだけど符号ありみたいな、 変態的なバイナリフォーマットを処理する時に必要。

プログラム:


2009年08月08日(土)

勉強会@富士山頂 (1日目)

↑このイベントに参加してきました。

富士山へ移動:

新富士駅経由で行きました。
五合目行きバス停前にいたら、 外国人様御一行様&大きなテレビカメラに脚立もった日本人三人組が並んできました。

カメラの前で Mount Fuji No 1! とか叫んでました。
あのノリには敗北感を禁じ得ませんw

五合目 (富士宮コース):

集合時間より着くのが早すぎたので、ぶらぶらと時間潰し。

ジュースのペットボトルが300円とか、 ご飯が安いと思ったら量が少ないとか、なにもかも高いです。(;´・`)

登山開始:

登り始めた途端に汗が吹き出て、体が重たかったので、ペースを遅目にして貰いましたが *1 、これ、登山病の兆候だったらしく、ペースを落として正解だったようです。

(とはいえ休憩時間込みで5時間で九合目なので一般的には速いペース)

九合目:

九合目について山小屋で二時間ほど寝たら体調も回復しました。 体が慣れた感じ。

逆に回りの人達が朝つらそうで酸素缶で吸入してました。 自分も今度から常備しようと思います。
さて今から寝て、1時過ぎに出発予定
御来迎が見られますように。

*1: 単純に着いてくのが遅れて待ってもらう事が多かっただけですが。(´д`)

2009年08月09日(日)

勉強会@富士山頂 (2日目)

九合目で夜風にあたる:

深夜1時起き予定でしたが、23時に目が醒めてしまったので外で夜風にあたってます。 既に小屋の外には出発する人達でいっぱい。
満月で澄み切った空気。一杯やれると気持ちよさそうですねぇ
体が冷えたら山小屋にもどって暖炉であったまったり。

富士山頂 ご来光:

いっぱいひとがいて 陣地の取り合いになってます(´~`;)
曇っていてお日様が殆ど見えませんでしたが、 これはこれで、なかなかドラスティックでした。

1枚目は光の行列。 (ピンボケして分かりにくいですが、7,8号目辺りまで続いてました)
2枚目はお日様どこだー。と探しているとこ。
そして、3枚目の真ん中の雲からわずかにお日様が見えていた。 …と思います。(自身無し)

お鉢周り:

火口をぐるっと一回り。人が沢山いました。

標高の一番高いところで勉強会実施。ラムダがどうとかアジャイルがどうとか、その辺の話をしてました。
うーむ。今度はついていけるように勉強しよう。( ̄― ̄;)

くだり:

下りは膝を壊さないように、休憩を大目にとりつつ、 ゆっくり降りたので、膝の痛みもなし。よしよし。

UV 対策重要:

…全体的にうまく進んで、無事に下山できたのですが、
日焼け止めを塗り忘れたり黒い手袋で熱してたりの影響で顔と手が真っ赤になり、
ヤケドみたいな状態になってました。病院に行こう… ○| ̄|_

これで、6 日分だよ〜。

タイトル一覧
カテゴリ分類
Database
JXTA
Java
XML
awm
bookmark
keyword
memo
news
research
Powered by hns-2.19.5, HyperNikkiSystem Project