2008-01-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."<

[C#][C++] やっぱり道草

ガベッジコレクタが組み込みで付いていて、ポインタと言うものをあんまり意識させない言語を使ってるとまず引っかかる罠にはまったので自戒を込めて orz C#とC++で以下のようにクラスを定義したとして、、、 C# public class Hoge { public int Value { get; set…

で、そとのまとめ(その1)

3種類の表現方法があれば、戻り値も色々とかけるのは道理なワケで、上のように書き方が1種類に定まらない上に、戻りの型によって戻ってきたオブジェクトの意味も違って来るのが問題になる。以下にざくりとまとめてみる。*1このまとめに使うサンプルコード #includ…

文字コード

実際問題、えらい勢いでコイツに悩まされてる orz SQLite自体は、ADO.Net準拠のSystem.Data.SQLiteを利用してるので、わりかし簡単にC#から使うことが出来る。 ただ、SQLite自体、エンコーディングとして、UTF-8とUTF-16*1が利用可能なのだけど、基本的に入力した際…

だいぶ道草を食ったので

やりたいことをぼちぼち。C#メインでやっているおいらが、C++いじくるハメになったのは、SQLiteという、組み込み型のデータベースで全文検索*1をさせたかったからなわけで。ただし、この全文検索のTokenizeは英語圏というか、スペース区切りで文字がやってきたとき…

それじゃ、少しまとめてみますか

ということで、まとまるはずもないけど、無理矢理まとめてみる。 (もしかしたら、C#に対してひいき目で見てるかもしれない)C#について classキーワードや、structキーワードによって、その型の"作成者"が該当する型をどこに配置するのかを決めることが"できる"。 他…

じゃあ、C++のclassって、C#で言うと何なのさ?

多分、以下はほぼ無意味。異言語だし、たとえて言えばC++のclassって、Cの何なのさ?って意味くらい間違ってる。*1けど、自分の理解のために敢えて書く(w前振りはその辺にして、、、こんな風になるかなと思う。*2 言語 キーワード スタックに取れるか ヒープに取れるか …

と言うわけで、昨日の続き

昨日は時間切れで、ワケのわかんないところで終わったわけですが、、、その続きを多少。 サンプルコードのコメントである程度言いたかったことは言ってるので、書き損ねたみんなが大好きポインターを使った場合を(w ちなみに前提は昨日の通りで。 hoge *ptr=new hog…

C#とC++のクラス型の変数宣言の違い

多分、これが混乱させてる大元。*1 class変数を宣言するとき、、、 hoge h;みたいに書くわけですが、これが、C#とC++で90度くらい意味が違う。C#の場合 classの場合は、必ず自由領域*2にインスタンスが存在するわけで、じゃあ、"h"とは何か?と言えば、何のことはなく単な…

混乱の元

ここ数日、C++をいじってみて、えらく自分が混乱してるのがわかってたんですが、何があたしをそこまで混乱させていたのかちょこっと考えてみた。で、以下は考察。多分、混乱してる最大の原因は、"class"が意味論からして違ってると言うことと、変数宣言で例えば"hoge"…