·
サーバダウン / 動的配列の実装あれこれ / C/C++はconst/enumがいい
サーバダウン
今回は復旧が遅れてしまって、丸2日ほどダウン。いい加減このパソコン、というかHDDが限界かも。
一応熱を冷ましてから起動したら復活したので安心・・・はできないけどとりあえずOK。
今のところWebサービス自体は2台構成で、バックエンドのファイルサーバ(NFS)とフロントエンドのApacheサーバにわかれてるんだけども、フロントエンド側が熱を持ちやすいマシンなのでしょっちゅう落ちる。今回はディスプレイを閉めて木のラックに収めたのが原因。熱が逃げない上に木が保温性を発揮してフリーズ。
バックエンド側はRAID構成+UPSでほぼ常時稼動が可能だからこっち一本にしても良いかも。将来を見越してフロントエンド側をディスクレスマシンにしてもう1台追加しようと思ってたけど最近そんな余裕もないし。
動的配列の実装あれこれ
C言語でint型の動的配列を作るとするとデータ構造は
int* array; // 配列先頭ポインタ
int array_cnt; // 配列サイズ
int array_max; // 配列確保数
こんな感じ。これだと管理しづらいので構造体にしてみたりする。
struct Array{
int* data;
int cnt;
int max;
};
これらに要素を追加するときはreallocする。
C++だとまずはclass化してみる。
class Array
{
public:
int* data;
int cnt;
int max;
};
必要なメソッドを追加してみる
class Array
{
private:
int* data;
int cnt;
int max;
public:
int GetSize() const;
bool SetSize(int);
int Get(int) const;
bool Add(int);
};
飲んでるのでこの辺で。テンプレート化とか実際のAddの方法とかAllocateはmalloc/reallocかnew/deleteかとかCArrayの実装がどうとか次回。(覚えてたら)