• [rcsslogplayer] TODO: メモリベースのログプレイヤに作り直す. (akiyama) 01:00:56

ディスクからのストリーム再生では圧縮ファイルの巻戻しがうまくいかないので,ログデータをメモリに読み込めるようにしてしまおう. 巨大なログが再生された場合への対処としては,保持するデータのサイズを制限しておけば良いでしょう. 巨大なログの巻戻しが必要な場合には,もう一度頭から読み直しさせることにしようかな.

  • [rcssbase] make dist 問題 解決. (akiyama) 03:11:18

3/27以来の悩みのタネだった,make dist できない問題がようやく解決した. libtoolのメーリングリストに同じ問題に遭遇した人の質問が投げられていて,そこで回答が得られていた.

http://www.mail-archive.com/libtool@gnu.org/msg09387.html

投稿日が2007/3/24.凄く最近の話なのか.ちょうど今が過渡期なのかもしれない.

MLのスレッドの内容を要約すると,make distが失敗する原因は,主パッケージで使用されるautomakeと,サブパッケージで使用されるautomakeのバージョンが異なる場合に起こる,互換性の不備によるものらしい. rcssbaseの場合,rcssbase自体で使われるautomakeと,libltdlディレクトリ内で使用されるautomakeのバージョンが異なるということになる. 強制的に同じバージョンを使うには,以下のように WANT_AUTOMAKE を指定してbootstrapすればよい.

$ WANT_AUTOMAKE=1.10 ./bootstrap

よーし,これでいつでもリリースできる準備が整った.

  • [librcsc][rcsslogplayer][rcsslogplayer] gzifstreamのバグ修正. (akiyama) 18:00:37

gzifstream::tellg()を使ったときに正しいstreamposが得られなかった問題を修正した. 原因は,gzfilebuf::seekoff() .

これまでは,

   ret = gzseek( M_impl->file_, off, SEEK_CUR );

だけだったが,これではバッファに読み込んだ全てのバイト数を返してしまう. よって,以下のようにバッファの残りバイト数(すなわちアプリケーション側ではまだ読んでいないバイト数)を引いてやらなければならない.

   ret = gzseek( M_impl->file_, off, SEEK_CUR );
   ret -= this->egptr() - this->gptr();

C++のstreamの実装は分かりにくい.

ともかく,これでストリームタイプのrcsslogplayerでも圧縮ファイルの巻戻しが出来るようになった. メモリベースのログプレイヤはまた時間があるときに考えるとしよう.


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-03-14 (月) 14:51:37 (2054d)
SourceForge.JP
Creative Commons License
RoboCup tools by Hidehisa Akiyama is licensed under a Creative Commons 表示-非営利 2.1 日本 License.