投稿者「怠居雲丹」のアーカイブ

Winny開発者金子氏 2審で無罪判決 とか

ウィニー:2審は逆転無罪 著作権侵害ほう助認めず

とりあえず文字数が一番多かった毎日jpにリンク。

「技術的価値は中立」ってことで、うちら技術者はとりあえず一安心。
元々、悪用するために開発したのでなければ罪には問われないものですし。

ただまぁ・・・、金子氏に著作権侵害の意図は明らかにあっただろうになぁ・・・。無しって判決なんだね。
検察が無能だったということらしい。

未だに「包丁論」を持ち出す人が居るみたいだけど、Winnyは包丁というより、この前違法になったダガーナイフに近い存在だよね。
個人的にはダガーナイフの違法化もどうかと思ったけど。

今回の無罪判決は歓迎してるんですよ。ちょっと釈然としない部分があるけどね。

幇助というならぶっこぬき系の書籍のほうが明らかに幇助。
ACCSはこっちを訴えるべきだろ。

そーいや、暴露ウィルスが蔓延して大騒ぎしてた頃(今も蔓延してるけど)、金子氏が「ウィルスの増殖やデータ流出を食い止めるようにできるけど、これ以上Winnyの開発しちゃダメって言われたから出来ない」って言ってたよね。
今回無罪になったことで新バージョンのWinny出そうと思えば出せそうだけど、出すかしら。出さないだろうなぁ。

名古屋にもグーグルストリートビュー来てた

Twitterからの情報。
早速確認してみたら、確かに来てたみたい。
いつから使えるようになってたのか解らないけど、撮影は結構前みたいだね。
先月オープンした近所のコンビニがまだ写ってないもの。

演算子オーバーロードの速度

ちょっと気になったので、演算子オーバーロードを実装したクラスでの演算と、普通の変数での演算速度にどれくらい違いがあるのか計ってみた。

予想では、演算子オーバーロードしたほうは、少なくとも関数呼び出しのオーバーヘッドで遅くなるだろうと思うけど・・・
続きを読む

半角限定高速MultiByteToWideChar作ってみた。

にわかに技術系blogっぽくなってきてる当blogですが。

DirectXとかSeleneとか、要求する文字コードがunicodeつーかwchar_tだったりする事が多々あるんだけど、同時に使ってる別のライブラリがSJISとかMultiByteつーかcharだったりして、でも実際には半角文字しか使わないってことが良くある。

で、char→wchar_tの変換は普通MultiByteToWideChar使うんだけど、半角しか使わないのにMultiByteToWideChar使うのはなんか無駄なんじゃね?
ってことで、試しに作ってみたら速かったので公開。

続きを読む

高速なatoiとatof作ってみた。

必ず数字が引数に渡されるという限定した状況に限り使用可能な、atoiとatof(数字文字列を数値に変換するC言語関数)を作ってみました。
作ってみたっていうか、こちらの丸パクリして、ほんのちょっとさらに高速にしてみただけですけど。

続きを読む

rdbuf->in_avail()でファイルサイズ取得は危険じゃね?

もしかしたらWindows環境だけのことで、他のOSでは問題ないのかもしれないけど(いや、そんなことはないと思うけど)

C++でファイル読込みするときに、fstreamだけを使ってファイルサイズを得る方法をググると、

//ファイルを開く
ifstream ifs("test.dat", std::ios_base::binary);

//ファイルサイズ取得?
streamsize size = ifs.rdbuf()->in_avail();

なんて感じのコードが結構でてくるんだけど、ちょっと待って欲しい。

in_avail()の戻り値はMSDNによると

バッファから読み取ることが準備完了している要素の数です。

ということで、ストリームバッファ内で現在利用可能なバイト数なんですよ。

なので、小さなファイルならいいけど、ストリームバッファのサイズを超えるファイルのサイズを得ようと思っても、バッファの上限までしか得られない。
環境によって違うかもしれないけど、さっき試したら4096以上は返ってこなかった。

じゃぁどうしたらいいかというと、

//ファイルを開く
ifstream ifs("test.dat", std::ios_base::binary);

//ファイルの最後の位置(=ファイルサイズ)を得る
size_t fileSize = (size_t)ifs.seekg(0, std::ios::end).tellg();

//ファイル読み取り位置を先頭に戻す
ifs.seekg(0, std::ios::beg);

コレで正確なファイルサイズが取れる。

速度はもしかしたらin_avail()の方が早いかもしれないから、扱うファイルのサイズが小さいことが解ってるならin_avail()を使った方が良いのかもしれないね。