Program

ちょっとした反抗期。オブジェクト指向のここが嫌いだ。(おちなんてないいい)

わたしはオブジェクト指向と呼ばれるものが比較的好きなほうじゃないかな。でも嫌いなものもいくつかある。まず第一に継承。これはきらい。覚えたてのころなんかは継承しまくって何度も痛い目を見たのでvirtualという単語を見ると胸がドキドキする。特にデス…

ConnectEx,AcceptEx

MSDNからの引用 When the ConnectEx function successfully completes, socket handle s can be passed to only the following functions: * ReadFile * WriteFile * send or WSASend * recv or WSARecv * TransmitFile * closesocket あれれ・・・?shutdow…

イベントハンドラを登録したスレッドでデリゲートしてねっていうクラス

せっかく下にお勧めしたので、ネタ的に作成してみた。ヘッダーにwindows.hを記述したくなかったのとテンプレート名のSignatureに依存したくなかったのでTypeErasureするためにbindしまくってみた。invoke_helperはpimplっぽく?してみたつもりで呼び出しの引…

More C++ Idiom

http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms http://ja.wikibooks.org/wiki/More_C%2B%2B_Idioms

スレッドプールからのイベント呼び出し

スレッドプールからのイベント呼び出しを行う場合、そのイベントによって呼び出される側のハンドラは当然スレッドセーフでじゃないといけない。でも、場合によってはスレッドプールのワーカースレッドではなくて、メインのスレッドで処理したいハンドラも出…

Read Time Stamp Counter

CPUクロックに基づく相対時刻の計測 http://www.02.246.ne.jp/~torutk/cxx/clock/cpucounter.htmlrdtsc(Read Time Stamp Counter)のクラス化 http://www.cycleof5th.com/tips/index.php?date=2007-06-07/2&lang=en

IO Completion Portで非同期のWriteFile

延々デバッグでしたまる /^o^\ WriteFileを呼び出し続けてERROR_IO_PENDINGがくるとGetOverlappedResultの最後の引数をTRUEにして書き込みを待機しないとちゃんと書き込めないという現象がおきていました。もちろんGetQueuedCompletionStatusから『完了し…

I/Oポートのライブラリ

途中までできた。バッファとファイル間が自由になったヽ(´ー`)ノ使い心地はこんな。 completion_port port; port.initialize(); parallel_pipeline pipeline(port); HANDLE file=CreateFile(_T("test.txt") ,GENERIC_READ,FILE_SHARE_READ ,0,OPEN_EXISTING…

ヽ(`Д´)ノウワァァァン!!

開発中のソースより抜粋 ... if(CreateIoCompletionPort(handle,handle_,completion_key,0)==0) //エラー処理 ... unsigned long buffer_size=(unsigned long)operation.buffer_->capacity()-operation.buffer_->offset(); if(ReadFileEx(handle_,(void*)ope…

全enumが泣いた

どうもC++のenumは使いにくいときがあって困る。たとえばseek関数を作るときに enum seek_option { ... seek_end, ... }; class file { ... void seek(unsigned long offset,seek_option option); ... }; file f; f.seek(100,seek_option::seek_end); といっ…

boost::anyとType Erasure

復習しないと復習しないとType Erasureの本質は型を消すことにあるんじゃなくて消した型をtype safeに元に戻せることにあるんじゃないのかな・・ぐぐって見るとstruct anyのほうは結構あるのにany_castのほうはあまり触れてないのよねというわけでサンプルを…

関数呼び出しのコスト

ちょっと気になったので計測 //functions.h #pragma once void f(__int64& i); struct normal_function { void f(__int64& i); }; struct virtual_function_base { virtual void f(__int64& i)=0; }; struct virtual_function :public virtual_function_base…

IOCPクラス設計の草案

pipeline_element自体が出力先のpipeline_elementのコンテナになってるんだから pipeline自体がいらないんじゃないの。コンポジションっぽく あー。pipelineなんてはじめからなかった。 継承でやるかテンプレートでやるか悩むけど・・うーん コンポジション…

IOCPクラス設計の草案

フィクションなソース このソースはフィクションであり実在の人物・団体とは一切関係ありません でもなんかうまくいきそう foreach(pipeline* line in next_piplelines)ってどこのC++ですかw なんかI/O完了ポートとまったく関係なさそうに見えるorz struct …

ちらうら

I/O Completion Portの設計。 どうしようか悩みすぎ・・あうあう ちょっと整理する意味でチラシの裏的な何か。 「ここはお前の日記帳じゃないんだ、チラシの裏にでも書いてろ、な?」 ちなみにソースはフィクションなのでコンパイルはできませんこんな風に使…

ちらうらのちらうら

コールバックがメインスレッドから呼ばれたらIOCPじゃないんじゃね? あーこれはあれか。必ずマルチスレッドプログラミングしなさいっていう神の声ですか

I/O Completion Port Part2

GetQueuedCompletionStatusで待機中のスレッドを解放するのはI/O処理が完了しただけじゃなくPostQueuedCompletionStatusを呼び出すことでも可能なのです。PostQueuedCompletionStatusはAPIですから好きなときに呼び出せます。I/Oとはぜんぜん関係ないよない…

I/O Completion Port

I/O Completion Port(I/O完了ポート)すごいっす。これまじすごいっすいやなんかこれが言いたくて未来日記みたいになってますよorz IOCPは非同期I/Oに使う仕組みなのです。まず、CreateIoCompletionPortで完了ポートを作成しデバイス系のハンドル(ファイル…

いまさらながらの・・

void operator()(Sender& sender) const { std::for_each(functionList_.begin(),functionList_.end() ,boost::bind(&FunctionType::operator(),_1,sender)); } この部分の引数のsenderが値渡しになるっぽいので boost::ref(sender)にしたほうがよいみたい v…

Proactor design pattern

boost::asioはProactorパターンをベースにしているようで これはI/O Completion Portに似ていますね。そのまんまです。 従来のselect()などでプーリングする方法はReactorパターンと言うそうです。 なんという備忘録

いまさらながらのC++でりげーと

あー。だってもう複雑なのはイヤです 引数固定でもいいよね 削除できないけどいいよね template <class Sender> struct Delegate { typedef boost::function<void (Sender&)> FunctionType; std::vector<FunctionType> functionList_; Delegate& operator+=(const FunctionType& function) { functionList</functiontype></void></class>…

FizzBuzz問題

これはこわい事実だw http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm

C#.NetとJavaStrutsどっちがいいのかなー

と思っていたらいいページ発見したのでリンク。 あとで読もっと。 http://www.atmarkit.co.jp/fdotnet/special/aspstruts01/aspstruts01_01.html

久々に

忙しくて何も更新できないorz Subversion使ってみようとリンクだけ集める。 http://www.google.co.jp/search?num=50&complete=1&hl=ja&c2coff=1&q=Subversion+windows&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_jaちなみにクライアントはこっち http://www.go…

TGAファイルフォーマット

http://www.opennet.ru/docs/formats/targa.pdf http://web.archive.org/web/20030301044747/http://www.mapletown.net/~nekora/soft/howto/targa.html 思ってより単純だったかも。

std::max,std::min

std::maxとminを使おうと思ったらwindows.hで定義されるmax,minマクロに邪魔される! インクルードする前に#define NOMINMAXとやればいいらしい もしくはコンパイラオプション/D NOMINMAXっす。どうでもいいけどxutilityにあったんだね。max,minて。pairとい…

多倍長整数のラーニングライブラリ

せっかくなので作った多倍長整数ライブラリを公開しておきます。 といってもヘッダファイル3つですのでライブラリじゃないか・・・ ラーニングに近いのでパフォーマンスは微妙です。 筆算法やKaratsuba法による乗算や除算と m-Array法,Sliding-Window法によ…

Radix4時間間引きFFT

基数4の時間間引きの高速フーリエ変換。 ちょっと汚いソースですが、資料があまりないので誰かの役に立つことを祈って ちなみに速度は大浦氏のライブラリのほうが速いので、あくまでもLarningですが。 template <unsigned long N,long isgn> struct W { W() { double theta=isgn>0?-2*M_</unsigned>…

引き続きFFT

高速フーリエ変換。 Cooley-Tukeyタイプの基数4の周波数間引きFFTの場合の流れの処理としてはRadix4のFFT処理 Radix2のFFT処理 ビットリバース処理んで、Radix2のFFT処理については桁数Nが4^kの場合にはいらない。 つまり桁数が4*4とか4*4*4の形にできる場…

高速フーリエ変換(FFT)をやっておく

いろいろ調べた中でこのページの大浦さんのFFTがわかりやすかった。 http://momonga.t.u-tokyo.ac.jp/%7Eooura/index-j.htmlで、物は試しと基数2の周波数間引きFFTをSSE2で実装。 でも、遅くてとても使い物になりそうもないw 大浦さんの基数4複素FFTで大体5…