2007年1月29日月曜日

FreeBSDハードディスク交換

FreeBSD環境のハードディスクを交換する際に、古いディスクの内容をまるごと新しいディスクに移す際の手順。

1. 古いHDDをプライマリ、新しいHDDをセカンダリに接続して起動

2. 古いHDDに新しいディスクのマウント先ディレクトリを作成しておく。(スライスの構成と同じだけ)

mkdir /mnt
mkdir /mnt/var
mkdir /mnt/tmp
mkdir /mnt/usr


2. 古いHDDと同じような構成で、新しいHDDのパーティションを切る。
sysinstall -> Fdisk

3. 古いHDDと同じような構成で、新しいHDDのスライスを設定する。
マウント先は先ほど作成したディレクトリ。
sysinstall -> label

4. 各スライスをコピーする
dump -0af - -C 32 / | ( cd /mnt ; restore xf - )
dump -0af - -C 32 /var | ( cd /mnt/var ; restore xf - )
dump -0af - -C 32 /tmp | ( cd /mnt/tmp ; restore xf - )
dump -0af - -C 32 /usr | ( cd /mnt/usr ; restore xf - )



参照:FreeBSD QandA 1859

2007年1月24日水曜日

VisualStudio2005 cppとhファイルの切り替え

VisualStudio 2005でcppファイルとhファイルを切り替えるためのマクロ

参照 BorisJ's Blog

2007年1月17日水曜日

数値解析ソフト

FreeMat
Octave
Scilab

2006年12月22日金曜日

Vector Graphics Library リンク

2D系のベクトルグラフィックスライブラリのリンクをメモ

cairo
Anti-Grain Geometry
Amanith Framework

2006年6月6日火曜日

ビット演算で整数割り算

ビット演算と引き算を使った整数の割り算のコード。
ただし、31bit符号なし整数 ÷ 15bit符号なし整数 という制限つき。

// 31bit unsigned int / 15bit unsigned short
unsigned short divsu(unsigned int x, unsigned short y)
{
 for (int i = 0; i < 16; i++)
 {
  x <<= 1;
  if (x >= (unsigned int)y << 16)
  {
   x -= (unsigned int)y << 16;
   x |= 1;
  }
 }

 return x;
}


参考:ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか

2006年5月10日水曜日

ファイル・フォルダのアクセスログ

WindowsではNTFSのとき、「監査」という仕組みを利用してファイルやフォルダのアクセスログを記録させることができます。

手順

まず、監査を許可するように設定を行います
1. 「ファイル名を指定して実行」で mmc と入力して実行する。コンソールが起動する。
2. 「ファイル」 -> 「スナップインの追加と削除」 メニューを選択
3. スナップインの追加と削除画面で「追加」ボタンを押す
4. スナップイン一覧から「グループポリシーオブジェクトエディタ」を選択して追加
5. そのままOKでスナップインの追加と削除画面を閉じる
6. コンソールルート -> ローカルコンピュータポリシー -> コンピュータの構成 -> Windowsの設定 -> セキュリティの設定 -> ローカルポリシー -> 監査ポリシー を開く
7. 「オブジェクトアクセスの監査」のプロパティを開いて、「成功」「失敗」両方にチェックを入れてOKを押す
これで、監査を許可できました。

次に、監査したいフォルダかファイルの設定を行います
1. 監査したいフォルダ・ファイルのプロパティを開きます
2. 「セキュリティ」タブを開いて、「詳細設定」を押します
3. 「監査」タブを開いて、「追加」を押します
4. 監査対象のユーザーやグループ名を入力します
5. 監査したい項目にチェックを入れます
6. OKでダイアログを全て閉じます

以上で、監査の設定が完了です。
これで設定したアクセスログがイベントビューアのセキュリティ項目の中に記録されていきます。

2006年4月13日木曜日

MFCダイアログでのON_UPDATE_COMMAND_UI

MFCのダイアログでUIコントロールをEnableにしたりDisableにしたりするのに
更新ハンドラの仕組みが使えたら便利なことがよくあります。

しかし単純に以下のように更新ハンドラを記述しても OnUpdateOKButton は呼ばれません。

BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
  //{{AFX_MSG_MAP(CTestDlg)
  ON_UPDATE_COMMAND_UI(IDOK, OnUpdateOKButton)
  //}}AFX_MSG_MAP
END_MESSAGE_MAP()

void CTestDlg::OnUpdateOKButton(CCmdUI* pCmdUI)
{
  pCmdUI->Enable(条件);
}

ダイアログで更新ハンドラを使うには適切なタイミングで CWnd::UpdateDialogControls を呼んでやる必要があります。
適切なタイミングとしては WM_KICKIDLE メッセージというものがあります。WM_KICKIDLE メッセージはWindowsプライベートメッセージのため標準では使えませんが、afxpriv.h をインクルードすることで使えるようになります。
#include <afxpriv.h>

BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
  //{{AFX_MSG_MAP(CTestDlg)
  ON_MESSAGE(WM_KICKIDLE, OnKickIdle)
  ON_UPDATE_COMMAND_UI(IDOK, OnUpdateOKButton)
  //}}AFX_MSG_MAP
END_MESSAGE_MAP()

LRESULT CTestDlg::OnKickIdle(WPARAM wParam, LPARAM lParam)
{
// 更新ハンドラを呼び出してUIの状態を更新する
UpdateDialogControls(this, FALSE);
return FALSE;
}

void CTestDlg::OnUpdateOKButton(CCmdUI* pCmdUI)
{
  pCmdUI->Enable(条件);
}

  © Blogger template 'Isolation' by Ourblogtemplates.com 2008

Back to TOP