タグ

2009年4月6日のブックマーク (5件)

  • 常駐型サーバープログラムのデバッグ手法

    BOOK: WEB+DB Press TITLE: 常駐型サーバーのデバッグ手法(ドラフト版) AUTHOR: (株)プリファードインフラストラクチャー 太田一樹 *注: この文章はWEB+DB PRESS Vol.48に掲載された記事のドラフト版です はじめに 今回はデバッグ関連特集ということで、常駐型サーバープログラムを作成する際のハマりどころやそれに対する解析方法・解析ツール・対策を、実際の経験を交えながら紹介したいと思います。 筆者は(株)プリファードインフラストラクチャーでインメモリ分散検索エンジン「Sedue (セデュー)」を開発しています。モバイル向け検索エンジン「エフルート」や、2008/11/6にリニューアルされました「はてなブックマーク2」などの検索バックエンドとして使われております。 この検索エンジンはいくつかの常駐型サーバープログラムから構成されており

    satfy
    satfy 2009/04/06
  • ファイル入出力 (fgets( )!=NULL)

    第17章 ファイル入出力 ファイル入出力関数はキーボードや画面ではなく、ファイルに対して入出力を行います。ファイルは画面出力とは異なり出力結果の保存が可能ですので、覚えておくと何かと重宝します。 尚、ファイル入出力関数を使用するには、#include <stdio.h> する必要があります。 17-1.ファイル操作手順 ファイル入出力は通常、以下の手順で行います。 ファイルポインタとはFILE型へのポインタです。 FILE型では入出力の現在位置(ファイル位置指示子)、ファイルの終端に達したかの情報(ファイル終了指示子)、エラー情報(エラー指示子)、関連するバッファへのポインタなどのファイルの入出力を行う上での必要不可欠な情報を管理しています。 ですから、ファイル入出力を行う際には必ず、このファイルポインタを fopen()によって取得しなければなりません。 また、入出力操作の完了とともに必

    satfy
    satfy 2009/04/06
    windowsのfopenでテキストモード/バイナリモードが別になっていることについて
  • ポインタとメモリと型(構造体)の関係 (2) - C言語 - 碧色工房

    これは Cygwin 上の gcc での結果で Visual C++ を利用した場合 long double は 8Byte となります。 あと、 sizeof の結果は char いくつ分のサイズかを返す訳ですが、今回実験している環境だけではなく、 ほとんどの処理系では char は 8bit(1Byte)であるため(っていうかそうじゃない処理系ってあるのかなぁ)、 ここでは sizeof の返す値の単位を Byte であるとして話を進めています。 さらに、何度も書いていますがここでやっていることは、ほとんどが処理系依存で、 このような結果になることを前提にプログラムを書くと、非常に移植性の低いものになってしまいます。 また、同じ環境でもコンパイラの最適化の影響とかを受ける可能性もないわけではありません。 ハードウェア的にどうのといってる部分がいっぱいありますが、 正直なところ私はそっち

    ポインタとメモリと型(構造体)の関係 (2) - C言語 - 碧色工房
  • プラグマ

    #pragma keyword #pragma keyword (a [ , a] ... )[ , keyword ( a [, a ] ... )] ,... #pragma sun keyword 変数 keyword は特定の指令を示し、a は引数を示します。 Sun WorkShop C++ コンパイラが認識する一般的なプラグマのキーワードを次に示します。 align - デフォルトを無効にして、パラメータ変数のメモリー境界を、指定したバイト境界に揃えます。 init - 指定した関数を初期化関数にします。 fini - 指定した関数を終了関数にします。 ident - 実行可能ファイルの .comment 部に、指定した文字列を入れます。 pack (n) - 構造体オフセットの配置を制御します。n の値は、すべての構造体メンバーに合った最悪の場合の境界整列を指定する数字で、

  • Visual C++でアラインメントを扱う3つの機能、#pragma pack, __declspec(align(#)), __alignof演算子についてのメモ 【▲→川俣晶の縁側→ソフトウェア→技術雑記】

    構造体などのアラインメントは、16bit用ソースを32bitで使う場合に問題になる場合があります。おそらく、同様に32bit→64bitのケースでも問題になるケースがあると思われるので、今からメモっておく価値がある? サンプルソースはVisual Studio.NET 2003のWin32コンソールアプリケーション用で、プリコンパイルヘッダー関係は割愛しています。解説はWindowsの32bit環境であることを前提としています。 #pragma packの使用例 § ソースコードの途中でアラインメントを変更します。 それだけでなく、pushとpopの機能を使うと、一時的に変更したものを戻すことができます。 コマンドラインオプションでも変更できますが、それによってソースコードの途中で切り替えることはできません。 サンプルソースを以下に示します。 アラインメントを変更した構造体と、変更しない構