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

雑多なことを綴ります

2008-01-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 …

空ファイルの作成方法

空ファイルを作るには、Linuxのシェルなら [oswald@localhost ~]$ touch /tmp/sample.txt とするだけで良かったのですが、C言語の場合も #include int main(void) { FILE *fp; fp = fopen("/tmp/sample.txt", "w"); fclose(fp); return 0; } のように、書き…

構造体のfree

構造体のポインタを宣言して、そこにmallocしてメモリを割り当てたとします。 そして構造体の要素にもポインタがある場合、そこにもmallocしてメモリを割り当てたとします。これらをfreeしたいときは、構造体のポインタだけfreeするのでは不十分です。構造体…

ポインタ同士の加算、減算

プログラミング言語Cを読了しました。C言語の基礎を学ぶ、復習するにはとても良い本です。特にmallocをはじめとする標準ライブラリ関数の内部実装を知ることが出来たのは、今後の開発で役立ちそうです。説明の分かりにくさはあるのですが、この分かりにくい…

静的変数(static変数)の初期化

C言語では、自動変数は明示的に初期化をしないと、その自動変数の値は未定義です。なので自動変数には明示的に初期化をする必要があります。一方、静的変数(static変数)は明示的に初期化をしないと、0(数値型)またはNULL(ポインタ型)に初期化されます…

初回エントリ

柴田芳樹さんのプログラマー現役続行という本を読んでやる気を出し、ソフトウェア開発者として必要なスキルをどんどん学んでいこうと思っています。 とりあえず今はプログラミング言語Cという本を読み進めています。