Programming

BitbucketとTortoiseHgではじめてみるバージョン管理システム[1]

えーマジー?まだまともに使えないのー? とそろそろ本気で言われ兼ねないのでいい加減手を出してみます。 もしかしたら某チームで使うことになるかもしれないので俺なりに丁寧にまとめてみます。 長くなりそうなので分割。 とりあえず環境構築まで そもそも…

コードの最適化

関数 #include <stdio.h> void func1 (int x, int a[]) { int i, j; for (i = 0; i < 10; i ++) { a[i] = i; } } int main (void) { int x[10]; func1 (5, x); return 0; } gcc -O0 -S でこんぱいる .file "ex4.c" .text .globl func1 .type func1, @function func1: </stdio.h>…

アセンブラ云々

命令 leal Load Effective Address (long?) leal 4(%esp), %eax espの値に4足したメモリ位置にあるアドレスをeaxにいれる http://d.hatena.ne.jp/suu-g/20080505/1210012224ll sall sall $2,%eax eaxを2bit左シフト xorb xor。 xorb %al, %al alに0をセット…

while(1){LOVE++;}を最適化

最近ツイッターで "while(1){LOVE++}"と書き込まれてる指輪があって、 そのソースは最適化でLOVEが消えてただの無限ループになる云々という話があったので検証。 http://togetter.com/li/144840 用意したソースはこちら。 int main() { int LOVE = 0; while(…

決定木

決定木の作成に利用するエントロピーやらインフォメーションゲインやらをなんとなくPythonで import math def entropy(float_list): all_sum = sum(float_list) result = 0.0 for val in float_list: if val > 0: result += val / all_sum * (math.log(all_s…

Boost.IteratorのSpecialized Adaptors

Specialized Adaptorsだけでも知っとくと超便利だった。 Specialじゃないのはよくわかんないけど(ぇ とにかくすごいんだって http://www.boost.org/doc/libs/1_45_0/libs/iterator/doc/index.html#iterator-utilities http://shinh.skr.jp/boost/iterator_a…

GCCのCPU最適化オプション

gcc 4.2以降、CPU最適化オプションが楽ちん。 -march=nativeと付け加えるだけで、CPUの最適なオプションを自動で選択してくれる。

gdbメモ

stopした時点から関数の呼び出し履歴を表示する backtracebacktraceで表示されたframeを指定、そこまで戻る frame ??はframeの数字を指定。 IDE使ってる時と遜色なく使えるようになってきました。

内部状態を持つ関数オブジェクト

http://www.kijineko.co.jp/tech/superstitions/functor-is-not-copied-in-algorithm.html ここここここまでしなくちゃいけないのん?・・・ 今までこーいうのふっつーに書いてたんだけど。 現在進行形で書いてるし。

述語を純粋関数にしよう

EffectiveSTL第39項より。 え。この規則破ってるプログラムをどっかで書いた覚えがある。 やっべ。 gccはどうなっとんぞ //3回operator()が呼び出された時true struct Predicate { private: size_t timeCalled; public: Predicate() :timeCalled(0){} bool o…

bindでちょっと試し書き

てすとてすと こんなのがありまして struct Hoge { void func1()const{/*hoge*/} void func2(int a,int b)const{/*hoge*/} }; vectorとかだったら vector<Hoge> v; //要素追加とかして for_each( v.begin() , v.end() , boost::mem_fn( &Hoge::func ) ); まぁこれ</hoge>…

連想コンテナとポインタ

連想コンテナ、例えばsetの要素にポインタを使いたいとき、 predは自分で書かなくちゃあかん。 string StringPtrLess { bool operator()( const string* lhs , const string* rhs ) { return *lhs < *rhs; } }; set< string* , StringPtrLess > str_set; Eff…

swap技法

Effective STL 第17項 余分な容量を取り除くには「swap技法」を使おう まずはこのソース。 vectorのサイズを100として、サイズと容量を確認。 次に最初の要素から50番目の要素を削除して、再度サイズと容量を確認する。 vector<int> v(100); cout << v.size(</int>…

epoch@まつやま2010観戦

相変わらずチャットがカオス。 あずにゃんの人気がヤバい。 大会があずにゃんに染まってしまうぐらいやばい。 epoch@まつやまがマジであずにゃんに染まってしまっていた。 サイボウズの青野社長まであずにゃんにゃんしていた。 virottoとyakipがいいとこまで…

removeの注意点

Effective STL 第9項 消去オプションは注意して選択しよう連続メモリコンテナContainerがある Container<int> c; このコンテナに含まれている100という値を全て取り除きたい場合、 eraseとremoveを用いる。 慣用的には以下のような記述がある。 c.erase( remove(</int>…

学祭で自作プリクラ(笑)を展示しました

去年も展示したのですが、今年は数カ所手を加えました。(とか言いつつ実は7割作り直し 印刷含め、全て無料です。インク、シール代は部費で賄っております(インク代の半分は自費 環境はVisualStudio2008,言語はC#。 送信者 作品手作り感あふれるOP画面。 カ…

Boost.Graph.Stanford_graphを使ってみた

むずひ・・・ bglむずひ それに輪をかけて、という表現は適切では無いけど、stanford_graphがあちこち分からん。 まぁ、とりあえず動いたんだけれども。 というわけで使用レポート。半分ぐらいstanford_graph関係ないけど。 間違ってたり適当な事言ってたら…

numeric_limits

そうか、こんなのもあるのか。 cout << "Minimum value for int: " << numeric_limits<int>::min() << endl;</int>

T x = {0};

T x = {0}; http://cpplover.blogspot.com/2010/09/blog-post_18.html 「Tの最初の要素あるいはメンバーを、0で初期化し、その他をすべて、staticストレージと同じ方法で初期化する」という意味である。 へー知りませんでしたYO! 気になってました。

隙間使ってErlangやります

とりあえず飽きるまで。 使えそうだったら研究室の実験プログラムをこれで作りたい。 kaiとか実用的っぽそうなのもあるしね。 かなりシンプルな言語なのでは。LLってやつですか? 何にも考えずにガリガリ組めそうな気がする。 そして速度で死ぬと。(ぉぃ Ha…

C++とC#のsizeとcapacity

vector<int> hoge(5); cout << hoge.size() << endl; cout << hoge.capacity() << endl; 結果 5 5List<int> hoge = new List<int>(5); Console.Out.WriteLine( hoge.Count ); Console.Out.WriteLine( hoge.Capacity ); 結果 0 5 ぬるる</int></int></int>

かてごりーてすと

てすてす main = putStrLn "Hello,World!" #include <stdio.h> int main() { printf("hello,world!"); return 0; }</stdio.h>