programming
てきとーなテストコード書いて問題なかった。somari(Gentoo Linux / Linux 2.6 x86_64)でテスト。あとでpersianのwin32環境でもテストすること。
5分で両方のAPIリファレンスを流し読みしただけなので、あんまり参考にしないように。Pthはpthread互換APIを目指してるようなかんじ。APIがみょーに多い。システムコールがスレッドの中で呼ばれることを気にしている様子。(あの悪しきスレッドキャンセルへ…
タスク定義をどうするかが問題。なんとかcontinuation(継続)をC++でかけないものか。必要なのは、いわゆるプログラムカウンタ(+レジスタ群)の保存と、スタック上のローカル変数データの保持。FSMモデルならなんとかかけます。(参考:d:id:yaneurao:200…
std::vector<int> test; test.push_back(0); test.push_back(1); test.push_back(2); std::vector<int>::iterator i; for(i = test.begin(); i != test.end();) { if(*i == atoi(argv[1])) i = test.erase(i); else ++ i; } で正常に動作する。2007/04/22追記:eraseの</int></int>…
今まで普通にfloat.hとか使ってたよ…
ワイルドカードでやる方法ないのかな。すべてのNICのIPアドレスでlistenが必要?ローカルホストでテストしていたところ、INADDR_ANYでlisten発行したはずが、192.168.0.5でlistenされるらしく、localhost(127.0.0.1)向けにパケット送っても全く受け取ってく…
すげぇ。 template<typename T> inline T FNTNetPacket_safecast(FNTNetPacket* p) { if(p->getType() != boost::remove_pointer<T>::type::msgtype) FECTI_THROWEX(FEX_SOCKET, FEXS_SOCKET_FECTIP, "invalid cast"); return reinterpret_cast<T>(p); } メンバ関数テンプレー</t></t></typename>…
ZThreadから移植中。詰まった。追記:boost::thread_specific_ptrで無理やり解決。
void bcopy(const void* src, void* dest, size_t bytes); void* memcpy(void* dest, const void* src, size_t nbytes); 違いまとめ: 引数src, destの順番が逆 bcopyは領域が重なっていても正常動作、memcpyはダメ(memmoveはOK) memcpyはdestを返す
あくまでshallow copyなので、a.aryもb.aryも同じ配列オブジェクトを参照する。 class TestClass attr_accessor :ary def initialize @ary = Array.new end end A = TestClass.new A.ary << "a" B = A.clone p A p B B.ary << "b" p A p B%ruby clonetest.rb…
http://kratcode.wordpress.com/2006/02/09/likelyunlikely-gcc-extensions/GCCの__builtin_expect拡張のラッパーマクロ。分岐の起きやすさを記述してやることによって効率的なコードを生成する。Linuxカーネルのコードを読んでると良く出てくるこのマクロ。…
std::vectorとstd::vectorどっちがいいんだろう。 * std::vector std::vector 派生クラスの扱い × ○ 要素追加 ×(普通に書くと一時オブジェクト発生) △(小さいnew) 読み込み速度 ○*1 ×(ポインタ参照一回余計に発生) ソート × ◎ デストラクタ 記述なしで大丈…
ぐぐってみてわかったこと QtとCode Completion(Code Assist?)は相性が悪い。 Qtの複雑なマクロにIndexerがついていけないらしい 作業メモリを多めにとってやったほうが良い オプション:-vmargs -vmargs –Xms128M –Xmx1Gとしてみた
久しぶりのQt。といっても今まで触ってたのはQtopiaだが。いろいろQt4になって変更があるみたい。
長いので分割。試行錯誤しながらで所要時間1時間半。 下の手順だとアウト。ハメラレタ。MSYSとMinGW同じディレクトリにインストールするとダメなんて知らないよ。 やり直さねば。 修正しました。動くようにはなった。でもMSYSとMinGWを同じディレクトリにイ…
をMSVCでも使えないだろうか。GCC拡張でスレッドローカルにしてやると一般的なアーキテクチャ(x86とか)ではAPIコールなしで爆速で動くらしいとBinary Hacksで読んだ気がする。吐いたアセンブリまだ見てないので本当かどうかは自身ないが。
でEIHDRIの近似結果が異なる。リリースビルドでもデバッガを介す場合と介さない場合で結果が異なる。未初期化メモリや範囲外アクセスが原因として考えられるけど果たしてどこだろうか。
libjit GNU lightning 両方ともSIMDサポートは無し。ただ最適化機構がなかったり非常にシンプルな構成なので自分で拡張するのも楽かな。Binary HacksよりBinary Hacks ―ハッカー秘伝のテクニック100選作者: 高林哲,鵜飼文敏,佐藤祐介,浜地慎一郎,首藤一幸出…
やっと動いた。原因はC++ではなくC言語用のパースが行われていた為。やったこと: tar.gz展開してvimのruntimeフォルダに上書き。(これは違う気がする)runtime\ftplugin\cpp.vimで call omni#cpp#complete#Init() " Behaves just like C " runtime! ftplug…
Intellisense for VIM http://sourceforge.net/projects/insenvimを試してみるも、うまくいかず。Vim7でOmni completeを使おうとするも、OmniCppCompleteが大量のエラーを吐く。(ctagsパースエラー?)うーむ、どうしたものか。
Visual Studio標準のエディタだとやはり不便。EmacsキーバインドをXKeyMacsで設定して使っているけど、細かいコマンド類のサポートがないのはきつい。とはいえ、Emacsも最低限のキーバインド+αぐらいしか知らないので、慣れれば早いVimも検討してみる。とり…
バグ情報はみつからず。ソース読んでます。unstableの1.7だとFXMessageHandlerっていう新しい仕組みに変わったみたい。 移行するべきかも。追記: はいはいメモリリークメモリリーク。newしたまま開放してなかった。他のGUIWidgetクラスみたいに自己消滅する…
http://lucille.atso-net.jp/blog/?p=256LLVMがSIMDに対応していないというのは完全に誤解だったみたいです。すみません。
があったら便利そう。nytrがひと段落したら作るかも。
いや、Evilなのはわかっているんですけど多重ループを抜け出すのに使う(一昨日のエントリ参照)とかあるじゃないですか。そのときスコープの外にgotoするとそのスコープのローカル変数とかはどうなるんでしょう。ちゃんとデストラクタとか呼ばれるのかな。
仮想関数とかで引数は決まっているけれども関数本体では必要ない、という場合がある。そういうときは引数に名前をつけなければ警告なしになるということを最近知った。nytrの古いコードだとvoidにキャストして逃れてたりするけど、見つけ次第直してる。 bool…
こんなのが存在したのね。でも相変わらず日記をTODO&ChangeLog代わりにしそう。表示→その他のウインドウ→タスク一覧。
http://lucille.atso-net.jp/blog/?p=251仮想命令セットを追加する、というのは盲点でした。なんで気づかなかったんだろう。でもJITコンパイル時まで対応させるのは相当骨が折れそうだ。
http://www.ruby-lang.org/ja/man/?cmd=view;name=trap%3A%3A%A5%B9%A5%B3%A1%BC%A5%D7%A1%A2%C0%A9%B8%E6%B9%BD%C2%A4なるほど。throwしちゃうのか。C++でやるとやばげ。
するにはやっぱりgoto文しかないのね。http://www.kmonos.net/alang/d/ctod.html#labelledbreakとか読んでるとD言語やりたくなるなぁ。C++の不満点はほとんど解消されてるみたいだし。でもネイティブ言語なのに(まともに使える)コンパイラが本家のみってい…