2007年1月17日水曜日
2006年12月22日金曜日
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(条件);
}
2006年3月16日木曜日
2006年1月31日火曜日
XFce4 のキーボードショートカット設定
keythemerc ファイルを変更することでXFce4ウィンドウマネージャーの基本的なキー操作をカスタマイズできます。
ショートカットキーによるアプリケーションの起動は
shortcut_4_key=ショートカットキー
shortcut_4_exec=ファイル名
とすればできそうです。
設定ファイルは
/usr/X11R6/share/themes/Default/xfwm4/keythemerc (FreeBSDの場合)