Sat, 21 Dec 2002 20:12:46 JST / hina.di
powered by tds-1.3.0
<issei@issei.org>
近日中に www.issei.org を引越します。 来週あたり一時的に unreachable になるかもしれませんが、 そういうことで。
Visual C++ 6.0 と組み合わせて使う場合でも、void 型の関数に対して boost::mem_fn() を適用して関数オブジェクトが作れるようになってる。 やるなぁ。
ANSI C++ の規格では
void g();
void f() { return g(); }
というコードは合法だが Visual C++ 6.0 ではコンパイルが通らない。 boost 1.25 以前の mem_fn や Visual C++ 6.0 添付の std::mem_fun は 上記のコードが通ることを前提とした記述になっていたので、void 型の 関数に対しては関数オブジェクトが作れなかった。
参考 : STLport 4.51 の mem_fun_t
template <class _Ret, class _Tp>
class mem_fun_t : public unary_function<_Tp*,_Ret> {
typedef _Ret (_Tp::*_fun_type)(void);
public:
explicit mem_fun_t(_fun_type __pf) : _M_f(__pf) {}
// *********************************************************
// _Ret が void だと、このメソッドでエラーになる
_Ret operator()(_Tp* __p) const { return (__p->*_M_f)(); }
// *********************************************************
private:
_fun_type _M_f;
};
makefile のエクスポートをせずとも、
MSDEV.EXE DxApp.dsp /MAKE "DxApp - Win32 Debug UNICODE"
なんて感じでビルドできるのね。
先日の予告どおり www.issei.org を引越しました。移転先は inetd です。
STLport や Boost に関して Tips が溜まってきてるから、忘れないうちに HTML にして残しておきたい。 メモ書きを掘り起し中。
昨年末からエディタとして vim を使い始めました。最初は設定方法が分からず Emacs を捨てきれなかったのですが、 ようやく vim6 も手に馴染んできてメインで使用するエディタを切り替えられそうな 気配。
vim6 関連の情報は 香り屋 と、そこからたどれるサイトに集まってます。 下の設定ファイルも、雛型はそのあたりから。
Ctrl-P, Ctrl-N で文字列補完。長い識別子を使ってプログラミングしているときには、使うと 作業効率が上がる。
ファイル一覧とバッファ一覧を表示し、対話的に編集できるようにする plugin。 スクリーンショット を見てもらった方が話が早い。
これは 香り屋 版だけかな。 ローマ字のまま日本語をインクリメンタル検索するモジュール。 日本語検索の際に IME の ON/OFF が不要になる上、英単語のつづりでカタカナ文字を検索できる (task でタスクを 検索できる) ので便利。
これも 香り屋 版だけかな。 set transparency=# で透明度を指定できる。 set transparency=255 で完全不透明、set transparency=0 で完全透明。 裏で UML モデリングツールで書いた図を表示しつつ、表で vim でコーディングする なんて場合に便利。
私は半透明/不透明状態を簡単に切り替えられるように、簡単な map を定義して使っています。
function! ToggleTransparent() if &transparency == 255 set transparency=224 else set transparency=255 endif endfunction map <c-w><c-p> :call ToggleTransparent()<cr>
敵キャラやショットが動くようになったところで、次は
あたりを考え中。汎用的なタスク間通信のフレームワークを決めて、CTaskManager あたりに追加する のが良さそうか。
それはそれとして、後で正味の作業時間と進捗具合を見たいので 作業経過をまとめたページ を用意 *1 。
先日 boost.org の 開発者用メーリングリスト を subscribe したけど、かなり盛り上がってる。
C++ にラムダ抽象を実装するライブラリやら、格納したポインタの寿命管理をやってく れるコンテナなど、面白そう/実用性が高そうな話がいろいろと。
つーか、randamデータの圧縮って可能なん?
無理です。
これは理論的に詰められていて「無記憶情報源については、一意復号可能な どのような符号もその平均符号長はエントロピーよりも短くできない」ことが証明され ています *1。したがって完全にランダムなデータでは、どのような符号化方式を持ってきても圧縮 できません。
ただ ZDNet の元記事では
ほぼすべてのデジタルファイルを100分の1以下に圧縮し,欠損なしに元の大きさに復元できる方法を発見したと発表
と書いてあるので、完全な random データを持ってきても反論にはならないかと。
信じるに足る話とは到底思えませんけどね。
プログラムを書こうと思ったものの、どうも気合いが入らない。 今日は諦めて、メールを片付けたり Boost の Generic Programming Techniques を 訳して 過ごす。
上のドキュメントは、汎用プログラミングで使われる代表的なテクニック に関する解説ですが、より詳しく知りたい場合には、次の二冊を推薦して おきます。
Modern C++ Design は、私が洋書で買ったら、読み終わる前に邦訳が出たと いう…。
IBM の Web サイト でスプリング・オプション・キャンペーン実施中。
ClubIBM 会員用サイトで、バッテリチャージャーと ThinkPad X シリーズ 用 Li-ION バッテリ 2 本のセットを購入。32,200 円也 *1。
別件で Namazu を使うことになってるので、自分のサイトを実験台に。ということで 検索ページ を付けてみました。 なお、日記に書いてある内容は、上に表示されている検索用フォームからも 検索できます。
root として標準的なディレクトリにインストールするのではなく、個人のディ レクトリにインストールするので少々苦労するかと身構えたけど、何も苦労せず にインストール完了。Text::Kakasi のコンパイルに Makefile.PL を書き直す必 要があった程度で、他は configure や Makefile.PL に適切な引数を与えるだけ で OK。
よくできてるよ。
Perl モジュールを個人用のディレクトリにインストールする
% perl Makefile.PL \ LIB=~/cmd/lib/perl5/ \ INSTALLMAN1DIR=~/cmd/man/man1/ \ INSTALLMAN3DIR=~/cmd/man/man3/ % make % make test % make install
個人用ディレクトリにインストールした Perl モジュールを Namazu で使う
% ./configure \ --prefix=$HOME/cmd \ --with-perl5="/usr/local/bin/perl -I $HOME/cmd/lib/perl5" % make % make install