barrinのコメント: Re:つるかめ算は邪悪、滅ぶべし (スコア 1) 102
方程式は解けてつるかめ算は苦手というのは読解力の要らない暗記攻略ルートになわけで、
え?逆では。鶴亀算の方が暗記攻略ルートでしょう。
こちらは、barrinさんのユーザページですよ。 アナウンス:スラドとOSDNは受け入れ先を募集中です。
方程式は解けてつるかめ算は苦手というのは読解力の要らない暗記攻略ルートになわけで、
え?逆では。鶴亀算の方が暗記攻略ルートでしょう。
リアルタイム性がいらないので、ディスク上の巨大なファイルをmmapして演算ソースにするとかかな。
ビデオを一本丸ごと配置して、フレーム相関使った再エンコードとかどうでしょう。
ノンフィクション
「ソロモンの指輪」
「ご冗談でしょう、ファインマンさん」
「雪は天からの手紙」<-ごめんまだ読んでないのに紹介してる
フィクション
「アーサー王宮廷のコネチカット・ヤンキー」
ドリトル先生シリーズ
「創世記機械」
「くじ引き勇者さま」シリーズ
「夏のロケット」
科学じゃないけど
「数学ガール」
「メタルカラーの時代」
番外
「鼻行類」
愛媛県は12日、県発注の土木工事などに導入している電子入札システムについて、入札前に最低制限価格が見えてしまう不具合があった、と発表した(asahi.comの記事)。
このシステムは2007年4月に導入されたもので、開発元はNEC。今月9日の入札で、最低制限価格と同額の入札があったことから応札した業者に確認したところ、ソース上に最低制限価格が見えていることが判明したという。問題発覚を受け、県は今後一ヶ月に予定していた入札を中止した。
元記事だと若干わかりづらいが、どうもWebシステムで、値がhiddenか何かに書かれていたようである。
間違ってもキャストでごまかすことなかれ。
これはワーニングではないですが、const int の配列の配列へのポインタを宣言できなくて、intの配列へのポインタにキャストされてるのをみて目が点になったことがあります。
ほかによくあるのが関数の引数にキャストをつかっているもの、プロトタイプ宣言の意味が。。
シンタックスシュガーとはその言語でよく使う構文だから言語設計者が親切に設定してくれているものなので、これを利用しない手はない。C言語の関数名、配列名の式での扱いを理解してないせいか、
int foo(int *p, int (*f)(int))
{
return (*f)(*(p+100));
}
とかわざわざ読みくい書き方をしているコードを見ることがある。素直に
int foo(int *p, int (*f)(int))
{
return f(p[100]));
}
と書けばいいのにね。他にも(*p).hoge とか、->演算子の立場がない...
cvs annotate とかをプリントアウトするのはどうでしょう。
他人にコードを渡すときももらうときもパッチになっていれば
適用・除外が楽なのでquilt+gitはかなりお勧めです。
ファイル名が一種の更新履歴になるし。
良いコメントはプログラムの理解を助けるが、悪いコメントは理解を妨げる。
悪いコメントの典型例はコードを翻訳したコメントだ。情報量としてまったく増えていないし、
バグフィックスやメンテナンスでコードとずれが起きたときには嘘が書いてあるコメントになってしまう。
変更履歴をコメントに残すのは構成管理ツールを使っていないことを宣伝するようなものだ。
処理の塊に名前をつけたいときにはコメントではなく関数にしよう。
foo()
{
/* goo処理 */
....
/* foo処理 */
....
}
オプティマイズの前後の中間形式の差分から検出するか、いっそGCCに手を突っ込んでその辺のサジェスチョンを出すようにするのがいいかも、
実行ファイル+共有ファイブライブラリを読み込んでクロスリファレンス出すツールがあれば、一箇所からしか呼ばれてない関数、読み込みしかされない定数などを検出できるかも、関数のインライン化は常に早くなるわけでもないのでコンパイラに任せてしまうのが吉かと。
#ヘッダファイルに関数定義がもれるのが嫌いなので。
目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond