2004-06-01から1ヶ月間の記事一覧

クマさんパジャマにちょっとだけ心ウキウキな23歳(男性・独身・彼女募集CHU!)というのは客観的に考えてみるとかなりヤヴァいと思うのですよ.

LAMEの各VBR qualityにおける平均BR

lame-3.93.1で自分のお気に入り34曲エンコ (設定): (平均) +- (標準偏差) V 6: 125.7 +- 10.0 preset medium: 151.4 +- 9.9

FLAC->mp3->ファイル名変換->ノーマライズ

む〜.メインマシンに貯蔵したFLACファイルから適当にチョイスして携プレ用mp3に一括変換するというルーチンに対して,複数のFreewareを下のように多段に利用しているんですが,もうちょっとなんとかならないんでしょうかね・・・. Winampで聞きながらプレ…

Lilith 0.991

久しぶりにProject9k覗いてみたら,いつの間にかLilithの新しいVer.が出ていたので早速ダウソ & インスコ.っていうか,念願のFLAC(参考:http://flac.sourceforge.net/)対応に感涙.(注:私はFLAC信者です.手持ちのCDことごとくFLACでエンコしてます.…

今日の収穫物

『朝霧の巫女 1巻』(ASIN:4785920602) 様子見その1.そこ「どうせ『巫女』って単語にスマッシュヒットしただけでしょ」とか言わないっ! 『瀬戸の花嫁 1巻』(asin:4757508808) 様子見その2. ここ2週間ほど無理に禁萌していたせいで禁断症状の「夜中の2…

名前空間に対して汎用関数の名前の導入を制限する

上とかなり重複するCRTPの効果になると思いますが,タイトルのような効果も期待できます.上に書いたsome_processの二つの宣言 template<class T> void some_process(base<T> &r); template<class T> void some_process(T &r); では,前者の方がsome_processという関数名の導入を</class></t></class>…

汎用関数においてコンセプトの不整合に対するFirewallを構成する

template<class T> void some_process(base<T> &r); template<class T> void some_process(T &r); 上の2つの最大の違いは,後者があらゆる型Tに対してsome_processが定義されているように見えるのに対して,前者はbase<T>(の派生型)に対してのみ定義されていることです. 後者の場</t></class></t></class>…

静的多相性を構成する?

私がCRTPを最初に知ったころは「CRTPを使って静的多相性が出来る!」と思っていたのですが,どうもこの「CRTPによって静的多相性が実現できる」という言い方はおかしいのではないか,と思い直してきました.以下に例を示します. #include <iostream> template<class T> class b</class></iostream>…

Template Methodパターンによる実装の半自動化を行う

加算を定義したクラスがあるとします. class C{ public: C operator+(C const &rhs) const { // 実装 } C &operator+=(C const &rhs) { // 実装 return *this; } }; 『Effective C++』でのScott Meyersの名言「intのように振舞え」,あるいは『Exceptional …

仮想関数を用いずにコードの再利用を行う

あるクラスの機能の一部を変えてコードの再利用を行う場合,変えたい機能を提供するメンバ関数を仮想関数にしてそれを派生クラスでオーバーライドするのが通常の方法ですが,CRTPを使えば仮想関数を用いずに行うことができます. 自分で何か良さそうな例を書…

CRTP(Curiously Reccursive Template Pattern)の使われ方

CRTPについてちまちま書いていたのをまとめてみました. CRTP(Curiously Reccursive/Reccuring Template Pattern)とは以下のように基底クラスのテンプレート引数として自分自身を代入するテクニックのことを指します. template class Base{/*.....*/}; cl…

Xiaoli Zhang Fern, Carla E. Brodley, "Random projection for high dimensional data clustering: a cluster ensemble approach", ICML2003.

高次元でのclusteringのために異なるrandom projectionを複数回行って,それでやりましょうという話.instance同士の近似度を測るためにいったんclusteringしているのが不思議というか,その必要性が見えてこなかった.

dummy

dummy

boost::enable_ifを特殊化する(後編)

上の問題はOtherTからTへの暗黙の変換がない場合でも,第2引数の型が存在することが原因でした.そこで,OtherTからTへの暗黙の変換が存在しない場合に存在しないような型を定義してやれば良いことになります. 方法は私が知っている範囲で2つあります. 第1…

boost::enable_ifを特殊化する(前編)

さて,上のSFINAEで用いたenable_ifですが若干長ったらしいのが気になります. typename boost::enable_if >::type これを以下のように書けたら良いと思いませんか? typename enable_if_convertible::type まぁ,この程度ならさほど(というかほとんど)必…

type_traits(メタ関数)とSFINAE

さて,以上でCからCへ暗黙に変換できるようになったわけですが,実は一つ問題が残っています.問題は以下のコードを実行すると分かります. std::cout , C >::value boost::is_convertibleはBoost.TypeTraitsライブラリにあるメタ関数で,型から型への暗黙の…

コンストラクタテンプレート

今日の話題はSFINAE(Substitution Failure Is Not An Error),およびSFINAEを活用する基礎ツールとなるboost::enable_ifについての話題です.以下ではSFINAEについての基本的な知識,およびboost::enable_ifについての知識を仮定します. SFINAEについてはK.…

ラグランジュ乗数法・双対問題

ラグランジュ乗数法 & 双対問題の講義.ラグランジュ乗数法はともかくも,双対問題については自分が全くの不勉強であったことを強く身にしみて感じる.説明を聴いていてもなんとなくな理解で終わってしまっている気がする.一度,ちゃんとした本を読んで確実…