• [rcssserver] TODO? 圧縮ログファイルの生成 (akiyama) 03:33:10

11.0.3時点では,std::ofstream と rcss::gzofstream を同時に保持しておき,圧縮オプションが与えられるとgzofstreamを使用するようになっている. しかし,zlibを使っているとCPUを若干多く消費する上に,ふたつのストリームの参照を単純な条件分岐で使い分けているだけなので,若干無駄な処理をしてしまっている. シミュレーション実行中の書き込みはstd::ofstreamでやって,シミュレーションが終了してサーバの終了時にまとめて圧縮とリネームをすれば良いのでは無いだろうか? 実装は,↓な感じで簡単に書けそうだし.

 std::string new_name = M_game_log_name + ".gz";
 rcsc::gzofstream zout( new_name.c_str() );
 std::copy( std::istreambuf_iterator< char >( M_game_log ),
            std::istreambuf_iterator< char >(),
            std::ostreambuf_iterator< char >( zout ) );
 M_game_log.close();
 zout.close();
 boost::filesystem::remove( M_game_log_name );
  • [rcsslogplayer] ウインドウ無しモードを再実装. (akiyama) 17:21:04

rcsslogplayerには no window モードというものがあって,このモードで起動すると操作パネルが表示されず,標準入力からコマンドを打つかコマンドを列挙したファイルを読み込むことでログプレイヤを操作することができる. その実装がぐちゃぐちゃだったので整理した. 使用可能なコマンドのドキュメントが全く無かったので,helpコマンドも用意してみた.

手を入れてみて初めて分かったが,公式のログプレイヤにも色んな機能があったんだな. 任意の区間でログを保存する機能が付いていたとは全く知らなかったよ. 実は,保存する区間を操作パネルを使って任意に選択できる機能(通常再生と逆再生の混在,飛び飛びのサイクルデータの結合など)を実装したツールは他に存在していなかったりする.あ,SoccerScopeは出来たっけ? いつか,soccerwindow2にも実装しよう.


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