Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

2005-08-01から1ヶ月間の記事一覧

立っているビットを数える

int bitcount(unsigned x){ int b = 0; while(x){ b++; x &= (x - 1); } return b; } これが立っているビットを数える関数だって、言われなきゃわかんないよなあ。しかし、シフトしながら数えるより3倍くらい速かった。 こういう系のテクニックが重要なんだ…

無理矢理ポリモフィズム

C言語でポリモルフィズムしてみた。参考にさせて頂いたのはこちら。 #include <stdio.h>/* 動物クラス多態スキーマ ===================================================== */// クラスが持つ関数の実装を保存する typedef struct { void (*hello)(); int size; } An</stdio.h>…

memcpy

むかーしむかし、memcpyを配列か構造体に使っちゃイケナイみたいな記事を読んだような気がするんだけど、どこで読んだんだったかなあ。 構造体はパディングのゴミが入るから、単純に要素のサイズの和でmemcpyしてはイケナイってのはわかるんだけど、それのこ…

そして時は動き出す

0.5FPSの状態から、なんとか15FPSまで持ってきた。まだ遅すぎ(笑)。 今回は応急処置として、NSMutableDictionaryによるバイト列のキャッシュを持たせてみただけなので、まあ、こんなもんでしょ。NSMutableDictionaryがポインタを直接食ってくれなくて、NSDat…

課題が山積み

久しぶりのCocoaなんですが。なんで最近やってなかったかと言うと、モデルをどういう風にビューに反映させると速度を確保しつつわかりやすくなるのかなーと悩んでたから。 まあ、悩んでも仕方ないかってことで、とりあえず円形に並べて回転させてみた。 案の…

LWPのリダイレクトを制御

LWP::RobotUA、LWP::Mixi、WWW::Mechanizeなど、LWP::UserAgentのサブクラスは、どんなURLでも勝手にリダイレクトしてしまうのだが、これを制御する方法。答えから言えばredirect_ok の挙動を変えればいいだけなのだが、これがなかなかに面倒くさい。 普通に…

URIとURI::URL

URIとURI::URLをファイルに永続化後、解凍したら動かないと言う問題に遭遇した。 これは、こいつらの保持するURI::http やURI::https が、URI::implementor で動的にロードされるため。解凍するだけだとこのメソッドは呼ばれないからねえ。 そんなわけで、 m…

Safe

Safeモジュールを使ったら安全そうだからって理由だけでreval使ってオブジェクトを生成したら、どうDumperやrefで見てもblessできてるのにメソッドが呼べなくて動かなくて痛い目にあった。ドキュメントを流し読みした感じでは、実行空間が別物になるみたいだ…

splitとundef

splitで、undefが来たり空文字列が来たりする。 $ perl -Mstrict my ($s1, $s2, $s3) = split(/=/, '='); print defined $s1, " ← S1\n"; print defined $s2, " ← S2\n"; print defined $s3, " ← S3\n";my @arr_s = split(/=/, '='); print defined $arr_s[0…

プロトコル

形式プロトコルと、非形式プロトコルの使い分け。ドキュメントによれば、 非形式プロトコルが適しているのは、すべてのメソッドの実装が任意である場合(デリゲートなど)です。 だって。形式プロトコルにしちゃうと、実装しないメソッドがあったときにエラ…

継承し過ぎ

メソッドのオーバーライドを用いて共通ロジックをまとめているコードがあったんだけど、これをやると不自然なスーパークラスが出来上がってしまうことがある。 sentenceと言う文章を出力するメソッドを持つSub1クラスがあったとき、Sub1と言うクラスを継承し…

mysqlのUNIQUE制約

UNIQUE制約でエラー。ユニークなものを食わせてるはずなのにおかしいなーと思ったら、textだとケースインセンシティブになるんだね。いや、そんな記憶もあったんだけど、今日はハマってしまった。。。 blobにしたら動きました。varchar型だとbinaryのオプシ…