2008-12-01から1ヶ月間の記事一覧

Template再び

昨日の訂正をちょっと しておかなければならないことがあり、、、あるリンク元のコメントにてyieldに対するコメントがあったんですが、IEnumerator.Next()でしか使わないという、誤った認識の元にあのような脚注を書いてしまいました。 orz 上記のような場合…

TemplateとGeneric

C++のTemplateをいじってみて、思想と言うかコンセプトに結構差があると思ったのでメモ。 そもそも論でC++のTemplateってば 多分、defineマクロをその祖としてる気がする。classがstructを祖として、simula風の味付けを加えたモノであるように。だから、コン…

allocator<T>::rebind<U>::other ってなんなのさ?

STLのContainer解説で、allocatorの話が出てきたんだけど、いまいちよっくとわかんなかったのがこの表題。どーにか理解出来たような気がするので一応メモ*1 Allocator<T>としたとき 何が起きるかというと、T型のallo…

文字コードその迷路にまた迷い orz

性懲りもなくまたNormalization Formにはまりにはまり込んでる。もうね、同義異字が大杉 orz 前にも書いたとおり、突き詰めすぎると形態素解析+αになるので、どこで折り合いを付けるかになるわけで。一応以下の基準に落ち着かせてみようかと思う。 基本はNFC 部分…

ガーベジコレクタの憂鬱*1

C#

C++ばっかりいじってて、ちょいとストレスがたまり気味なので、自分のおうち*1で遊ぶついでに、ガベージコレクタの厄介な問題をまとめてみようかと思い。。。 簡単にいかないモノを簡単に 〜起〜 説明してみる。 実際、ガベージコレクタが内部で何をしているのかを説…

いあ混乱する類のモンじゃないんだけど

なんか、割と言語間の考え方の差というか思想の差が出ていておもしろいと思ったので一応メモ。 とりあえずリストなぞを... 言語 どっから考え方を借りてきたか 区間 アクセスした要素の変更の可否 リバースできるか ランダムアクセスできるか メンバアクセスの…

つーことで

ASCII版でとりあえず、割と使えそうなことわかったので、本命のUTF-8を喰えるTokenizerを作ってみようかと。 原料 ICU NFCと相互変換でお世話になるつもり。 SQLite トークナイズから先の処理をしてくれる。 C++ これで二つを混ぜ合わせる Boost もしかしたら、ポ…

 これは意外に行けるかも

昨日の話で出していた、ASCIIだけ相手にするbi-gramTokenizerを実際に稼働させてみた。コンソールに直接ファイルパスを喰わせるので、トンでもなく処理が遅いのと、アプリケーションのワーキングセットメモリを見てる限りどっかでリークしてる可能性があるのを除…

コメントのどこにも書いてねー orz

かなりかっこわるいけど*1ASCIIだけ相手にbi-gram tokenizeをするclassを作って、fts3に喰わせてみたら、最初全くうまくいかんかった orz。何が不味いのか皆目見当が付かないまま、組み込みのsimpleトークンナイザをDebuggerAttachして、printf仕込んで走らせてみ…

Propertyの有無

ご注意 当人の言語遍歴が、VBA(Excel)->VB6->VB.Net->C#1.0->C#1.1->C#2.0->C#3.5*1 と、Propertyがあって当然の世界にずっと生きてきたので、その辺割り引いてみて下さいませ。また、あくまで、以下はあたしの考えであって、スタイルは人それぞれだと思ってます。。。…

ASCIIオンリの

プロトタイプなTokenizerを作成中。てーか、この段階でもうおなかいっぱい orz 以下は仕様というかメモ書き 基本はbi-gram スペースでDelimitされる Delimitされた結果が1文字だったら、そこだけuni-gramにする。 終端は考慮しない。*1 lowerでRegularizeする。 AS…

少し目先を変えて他のことを

調べてみた。*1 資料が致命的に少ないFTS3にCustom tokenizerを外部拡張として喰わせる方法とかをぼちぼち。 まずは最初に、 言葉の定義を。。。 FTS3 SQLiteに実装されている全文検索モジュール。現在ドラフト。 Tokenizer 全文検索のIndexingを行う際、どのような規…

早々に破綻

したYo orz。NFKC使おうとした方法は。。。 なぜ駄目なのか? 理由は簡単、可逆性がない。例えば、U+2162は"III"を1文字で表す。当然のコトながら、NFKCに書けると結果は"III"となる。そりゃそれで良いのだけど、機種依存文字を嫌う人の場合*1はなっから、U+2162なんて使…

ということは、設計変更しなきゃ

駄目ってコトでして… http://d.hatena.ne.jp/NetSeed/20081202/1228143786:Title=ここで書いてたのは、あくまでエンコーディングの整合性を見ていただけ、ってことになり、不十分。 なので、やりたいことの要求を整理してみると、、、 UTF-8の整合性 表現揺らぎの排…

中間的なまとめ

迷路に迷い込んでます orz。今のところまで理解出来たことを、前エントリ・前々エントリと重複する部分を含めて一応書き留めてみる。 コードセット、エンコーディング周り UNICODE/UCS これは文字コードセット。一意のスカラ値として文字をマッピングしてる UTF-n …

スタックにプッシュされまくり orz

Tacknさんからもらったコメントを自分なりに掘り下げたら、そこにはいちめんの地雷原 orz*1と言うことで、考慮しなきゃ不味いことを以下に羅列。どーもチェックだけすればいいワケじゃなくてNormalizationもしせにゃ不味いっぽいな。。。 Composition,Decompositio…

スタックがポップされたので新しいお題

を書いてみませう。 UCS≒UNICODE≠UTF これ、最近まで気にもとめてなかったけど、このような関係。どーいうことかといいますと、、、 UCS Universal Multiple-Octet Coded Character Setの略で、ISO/IEC 10646として国際規格になってるキャラクタセット UNICODE The U…

まとめ(その5) 補足と、副次的に得たモノとそうまとめ

C++

と言うわけで、そうまとめ 当たり前のように当たり前の結果が出てきた 読んだ関数のreturnがどこに取られるのかという長年の疑問がある程度氷解した。*1 2.がどーなってるかという話で、えらく苦労したけど、得るモノが色々あったのでそれを箇条書き スタックフ…

まとめ(その3) じゃあ、代入無しで"h.process()"を呼んだらどーなるのか?

C++

と言うのも、当然気になるところで。。。 実際に実験してみた 呼び出し元の関数を以下のように改変 void main() { //変数hを宣言した上で初期化 Hoge h(100); //単に呼び出す。 h.Process(); std::cout<<"return."<

 まとめ(その4) &Hoge *Hogeを返すメソッドはどーなってるのか?

C++

いい加減逆アセンブル読むのが辛くなってきた orz*1今回のサンプルコードは、、、 void main() { Hoge h(100); Hoge &j=h.RefProcess();//これまでと違って、Hoge&を返す。(こんなコトやっちゃいけない典型例) std::cout<<"return."<

まとめ(その2)

C++

ここで書いた、呼び出し元の関数を次に以下のようにしてみる。 void main() { //変数hを宣言した上で初期化 Hoge h(100); //新しい変数iに代入する。 Hoge i=h.Process(); std::cout<<"return."<