PC関係のメモ
テストコード、ソースコード、ドキュメントに書くこと
テストコードにはWhat,
ソースコードにはHow,
そして,ドキュメントにはWhyを書くんだよ!
ξ*゜ー゜)ξ { 遅レス。 - 日本Rubyカンファレンス 臨時打ち上げより
そして結城浩さんの反応
契約書にはWhenとHow muchを書くのかも。
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関係の設定は面倒なので後で。
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()のエラー判定自体してないソースもよく見かける。
Windowsのプログラミングでパフォーマンスを計測する際に使用するAPI / [programming]MTA/STAのCOMを一つのプロセスで混在させる場合 / [camera]ビアガーデンで飲み会 / [programming][C/C++]Boehm GC - C言語でガベージコレクト / [wish][book][programming]ソフトウェアテスト技法 / [wish][book][programming]ソフトウェア
[programming]Windowsのプログラミングでパフォーマンスを計測する際に使用するAPI
VC++で作ったツールで速度の計測をすることになった為、ミリ秒単位の時間を取得するAPIを探したときのメモ。
使えそうなAPI
- GetTickCount()
- timeGetTime()
- QueryPerformanceCounter()
実際に使用したAPIはGetTickCount()。このAPIの精度は10ミリ秒程度だけど今回は十分。
[programming]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()しましょうという話?
[camera]ビアガーデンで飲み会
今年初のビアガーデン。 去年は何回か行ったけど、今年は飲みに行く回数自体少なかったので初ガーデン。
写真はCanon EOS Kiss Digital N TAMRON AF18-200mm F/3.5-6.3 XR Di IIで撮影。
ホワイトバランスがマニュアルになったままだったけど結構キレイ。手ぶれが激しいのは酔っ払ってるから。
[programming][C/C++]Boehm GC - C言語でガベージコレクト
A garbage collector for C and C++
公式として紹介されているsgiのサイトが見れないのでhpのサイトをメモ。
[wish][book][programming]ソフトウェアテスト技法
ソフトウェアテスト技法―自動化、品質保証、そしてバグの未然防止のために(ボーリス バイザー/Boris Beizer/小野間 彰/山浦 恒央)
Velbon ULTRA LUXi F 三脚
ソフトウェア・テストの技法 第2版(J. マイヤーズ/M. トーマス/T. バジェット/C. サンドラー/Glenford J. Myers/Todd M. Thomas/Tom Badgett/Corey Sandler/長尾 真/松尾 正信)

_ 軸偲耳雫 [これいくら?]
_ hajime [13000円くらいだったと思われ。]