ソフトウェアエンジニア現役続行

雑多なことを綴ります

2008-12-01から1ヶ月間の記事一覧

定数変数(constant variable)の値を変更するときの注意点

プログラミング言語Java - 第4版の第2刷のP.40で定数変数(constant variable)について以下のように説明しています。 コンパイル時に値が決定できる定数式で初期化された基本データ型、あるいは、nullではない定数式で初期化されたString型のfinalフィール…

keepalivedがnopreemptモードでは正しく動かない

keepalivedというVRRPを実装したオープンソースモジュールがあります。Linux上で動きます。VRRPには、preemptモードとnopreemptモードがあるのですが、keepalivedではnopreemptモードが正しく動きません。FAULT状態のマシンが障害から回復したとき、そのマシ…

クラスオブジェクトの配列を使うときの注意点

int型の配列を使うときは以下のようにします。これは問題ないですね。 int[] array = new int[10]; // (1) しかし自分で定義したクラスのオブジェクトの配列を使う場合は、同じようにしてもうまくいきません。 class NewClass{ int a; int b; }public static…

洋書の翻訳本を検索するサイト

専門書の多くは外国人によって英語で書かれています。英語力をつけるためにも原文で読むことも大切だと思いますが、翻訳本があるならそっちを読みたいと思ってしまうもの。そこで、洋書のタイトルは分かっていたときに、それに対応する翻訳本を探すことの出…

繰り返し処理には要注意

プログラミングでメシが食えるか!?―成功するプログラマーの技術と仕事術という本を読みました。軽いタッチの本でスラスラと読める本です。 その中で、読んでいてギクっとしたのが、繰り返し処理に関する記述です。 以下がダメな実装例です。 for (i=0; i ※pp…

関数内でmallocするときの注意

関数内でmallocするときは、割り当てたアドレスの値を返すようにしなければなりません。僕もやってしまったことがあるのですが、よくありがちなミスとしては以下のようなものがあります。 #include #include void alloc_func (char *ptr) { ptr = malloc (51…

タイムアウトを設定してsystem関数を使いたい

LinuxのC言語では「タイムアウトを設定してsystem関数を使いたい」と思っても、これが思うように出来ません。「プロセスをforkさせて、子プロセスでsystem関数を実行して、親プロセスがタイムアウト時に子プロセスを殺せば良い」と思うかも知れませんが、そ…

演算の相対的コスト

演算の相対的なコストについて以下にまとめました。 以前読んだC実践プログラミングからの情報です。 1000 printfとscanf 800 mallocとfree 500 三角関数(sin,cos,...) 100 浮動小数点数(すべての演算) 30 整数の除算 20 整数の乗算 10 関数呼び出し 6 …