Program
わたしはオブジェクト指向と呼ばれるものが比較的好きなほうじゃないかな。でも嫌いなものもいくつかある。まず第一に継承。これはきらい。覚えたてのころなんかは継承しまくって何度も痛い目を見たのでvirtualという単語を見ると胸がドキドキする。特にデス…
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っぽく?してみたつもりで呼び出しの引…
http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms http://ja.wikibooks.org/wiki/More_C%2B%2B_Idioms
スレッドプールからのイベント呼び出しを行う場合、そのイベントによって呼び出される側のハンドラは当然スレッドセーフでじゃないといけない。でも、場合によってはスレッドプールのワーカースレッドではなくて、メインのスレッドで処理したいハンドラも出…
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
延々デバッグでしたまる /^o^\ WriteFileを呼び出し続けてERROR_IO_PENDINGがくるとGetOverlappedResultの最後の引数をTRUEにして書き込みを待機しないとちゃんと書き込めないという現象がおきていました。もちろんGetQueuedCompletionStatusから『完了し…
途中までできた。バッファとファイル間が自由になったヽ(´ー`)ノ使い心地はこんな。 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…
どうも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); といっ…
復習しないと復習しないと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…
pipeline_element自体が出力先のpipeline_elementのコンテナになってるんだから pipeline自体がいらないんじゃないの。コンポジションっぽく あー。pipelineなんてはじめからなかった。 継承でやるかテンプレートでやるか悩むけど・・うーん コンポジション…
フィクションなソース このソースはフィクションであり実在の人物・団体とは一切関係ありません でもなんかうまくいきそう foreach(pipeline* line in next_piplelines)ってどこのC++ですかw なんかI/O完了ポートとまったく関係なさそうに見えるorz struct …
I/O Completion Portの設計。 どうしようか悩みすぎ・・あうあう ちょっと整理する意味でチラシの裏的な何か。 「ここはお前の日記帳じゃないんだ、チラシの裏にでも書いてろ、な?」 ちなみにソースはフィクションなのでコンパイルはできませんこんな風に使…
コールバックがメインスレッドから呼ばれたらIOCPじゃないんじゃね? あーこれはあれか。必ずマルチスレッドプログラミングしなさいっていう神の声ですか
GetQueuedCompletionStatusで待機中のスレッドを解放するのはI/O処理が完了しただけじゃなくPostQueuedCompletionStatusを呼び出すことでも可能なのです。PostQueuedCompletionStatusはAPIですから好きなときに呼び出せます。I/Oとはぜんぜん関係ないよない…
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…
boost::asioはProactorパターンをベースにしているようで これはI/O Completion Portに似ていますね。そのまんまです。 従来のselect()などでプーリングする方法はReactorパターンと言うそうです。 なんという備忘録
あー。だってもう複雑なのはイヤです 引数固定でもいいよね 削除できないけどいいよね template <class Sender> struct Delegate { typedef boost::function<void (Sender&)> FunctionType; std::vector<FunctionType> functionList_; Delegate& operator+=(const FunctionType& function) { functionList</functiontype></void></class>…
これはこわい事実だw http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
と思っていたらいいページ発見したのでリンク。 あとで読もっと。 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…
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とminを使おうと思ったらwindows.hで定義されるmax,minマクロに邪魔される! インクルードする前に#define NOMINMAXとやればいいらしい もしくはコンパイラオプション/D NOMINMAXっす。どうでもいいけどxutilityにあったんだね。max,minて。pairとい…
せっかくなので作った多倍長整数ライブラリを公開しておきます。 といってもヘッダファイル3つですのでライブラリじゃないか・・・ ラーニングに近いのでパフォーマンスは微妙です。 筆算法やKaratsuba法による乗算や除算と m-Array法,Sliding-Window法によ…
基数4の時間間引きの高速フーリエ変換。 ちょっと汚いソースですが、資料があまりないので誰かの役に立つことを祈って ちなみに速度は大浦氏のライブラリのほうが速いので、あくまでもLarningですが。 template <unsigned long N,long isgn> struct W { W() { double theta=isgn>0?-2*M_</unsigned>…
高速フーリエ変換。 Cooley-Tukeyタイプの基数4の周波数間引きFFTの場合の流れの処理としてはRadix4のFFT処理 Radix2のFFT処理 ビットリバース処理んで、Radix2のFFT処理については桁数Nが4^kの場合にはいらない。 つまり桁数が4*4とか4*4*4の形にできる場…
いろいろ調べた中でこのページの大浦さんのFFTがわかりやすかった。 http://momonga.t.u-tokyo.ac.jp/%7Eooura/index-j.htmlで、物は試しと基数2の周波数間引きFFTをSSE2で実装。 でも、遅くてとても使い物になりそうもないw 大浦さんの基数4複素FFTで大体5…