[programming][thought] テストコード、ソースコード、ドキュメントに書くこと

テストコードにはWhat,


ソースコードにはHow,


そして,ドキュメントにはWhyを書くんだよ!

ξ*゜ー゜)ξ { 遅レス。 - 日本Rubyカンファレンス 臨時打ち上げより

そして結城浩さんの反応

契約書にはWhenとHow muchを書くのかも。

www.textfile.org - テストコード、ソースコード、ドキュメントに書くことより

最終更新時刻: 2008年11月06日

[server] Express5800/110Ga-Cのセットアップ

先日届いたExpress5800/110Ga-CにWebサーバーとして必要なソフトウェア(いわゆるLAMP)をインストールするメモその1。

まずディストリビュージョンはDebian GNU/Linuxを選択。一度CentOSを使ってみたかったのだが、今回は使い慣れているDebianで。

次にApacheのインストール。SSLを使いたいのでopensslを先に入れておく。

apt-get install openssl

次に適当なサーバからソースをwget。

wget http://Ringサーバー等/httpd-2.0.59.tar.gz

展開してコンパイルとインストール(Apache + mod_ssl - PC関係のメモ (2004-12-25))

tar xvfz httpd-2.0.59.tar.gz
cd  httpd-2.0.59
./configure \
  --enable-so \
  --enable-dav_fs \
  --enable-dav \
  --enable-rewrite \
  --enable-ssl
make
make install

自動起動も設定(サーバーダウン - PC関係のメモ (2004-10-26))

ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache
update-rc.d apache defaults

SSL関係の設定は面倒なので後で。

最終更新時刻: 2008年12月10日

[buy][camera] Velbon ULTRA LUXi F 三脚

コンパクトな三脚を購入。下記記事で知って、店頭で使ってみて決定。

ベルボン ULTRA LUXi F

Velbon ULTRA LUXi F 三脚

最終更新時刻: 2008年12月10日

[programming][C/C++] realloc()の正しい使い方

a)正しくない使い方

char* buf;
buf = (char*)malloc(1024 * sizeof(char));
if(buf == NULL){
  return -1;
}

buf = (char*)realloc(buf, 2048 * sizeof(char));
if(buf == NULL){
  /* bufが解放されない */
  return -1;
}

b)正しい使い方

char* tmp;
char* buf;
buf = (char*)malloc(1024 * sizeof(char));
if(buf == NULL){
  return -1;
}

tmp = (char*)realloc(buf, 2048 * sizeof(char));
if(tmp == NULL){
  /* bufを解放 */
  free(buf);
  return -1;
}

buf = tmp;

確保する領域のポインタと、エラー判定するための戻り値のポインタが同じだとmallocした領域が解放できない。

最近はメモリが潤沢にあるせいかmalloc()、realloc()のエラー判定自体してないソースもよく見かける。

最終更新時刻: 2012年02月13日

[programming] Windowsのプログラミングでパフォーマンスを計測する際に使用するAPI / [programming]MTA/STAのCOMを一つのプロセスで混在させる場合 / [camera]ビアガーデンで飲み会 / [programming][C/C++]Boehm GC - C言語でガベージコレクト / [wish][book][programming]ソフトウェアテスト技法 / [wish][book][programming]ソフトウェア

Windowsのプログラミングでパフォーマンスを計測する際に使用するAPI

VC++で作ったツールで速度の計測をすることになった為、ミリ秒単位の時間を取得するAPIを探したときのメモ。

使えそうなAPI

  • GetTickCount()
  • timeGetTime()
  • QueryPerformanceCounter()

実際に使用したAPIはGetTickCount()。このAPIの精度は10ミリ秒程度だけど今回は十分。

MTA/STAのCOMを一つのプロセスで混在させる場合

MTAなCOMとSTAなCOMを使うことになったのでメモ。

結論としては、MTA/STAなCOMを同一スレッドで混在させることができないがスレッドが別なら問題ない。

CodeGuru Forums - ::CoInitializeEx() and AfxInitRichEdit() cannot co-exist?

例えばSTAなCOMであるリッチエディットコントロールを使用する場合、メインスレッドは(AfxInitRichEdit()によって)STAとして初期化される為、メインスレッド内でMTAなCOMを使用(初期化)するとアプリケーションエラーが発生する。デバッグウインドウにはRPC_E_CHANGED_MODEというエラーコードが出力される。アパートメントモデルを変更するなゴルァという警告である。

そこで、別スレッドを立ててCoInitialize(NULL, COINIT_MULTITHREADED)した後MTAなCOMのメソッドを使ったところ今のところ問題なく動作してるっぽい。

MTAのCOMを使う場合はInitinstance内でCoInitializeEx()しましょうという話?

ビアガーデンで飲み会

ビアガーデンにて撮影

今年初のビアガーデン。 去年は何回か行ったけど、今年は飲みに行く回数自体少なかったので初ガーデン。

写真はCanon EOS Kiss Digital N TAMRON AF18-200mm F/3.5-6.3 XR Di IIで撮影。

ホワイトバランスがマニュアルになったままだったけど結構キレイ。手ぶれが激しいのは酔っ払ってるから。

Boehm GC - C言語でガベージコレクト

A garbage collector for C and C++

公式として紹介されているsgiのサイトが見れないのでhpのサイトをメモ。

最終更新時刻: 2008年11月26日