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(条件);
}

2006年3月16日木曜日

組み込みデータ型のコンストラクタ

C++の組み込みデータ型(intなど)のコンストラクタを明示的に書くと、0が代入されます。

int n = int();  // nを0で初期化

知らなかったなぁー

2006年1月31日火曜日

XFce4 のキーボードショートカット設定

keythemerc ファイルを変更することでXFce4ウィンドウマネージャーの基本的なキー操作をカスタマイズできます。
ショートカットキーによるアプリケーションの起動は
shortcut_4_key=ショートカットキー
shortcut_4_exec=ファイル名
とすればできそうです。

設定ファイルは
/usr/X11R6/share/themes/Default/xfwm4/keythemerc (FreeBSDの場合)


2006年1月27日金曜日

アルファブレンド

アルファつきの2色を合成する場合の計算メモ
アルファは不透明度とします。

1. 色の上に色を重ねるように合成する場合
Pixel Alpha Blending

上塗りする色・アルファ:
下地の色・アルファ:





2. 2色をある割合ずつ合成する場合
Pixel Alpha Blending

色・アルファ:
色・アルファ:
色Xのカバレッジ(0~1):





3. 色の上に別の色をある割合だけ重ねるように合成する場合
上記1と2をあわせた感じになります。
Pixel Alpha Blending

上塗りする色・アルファ:
下地の色・アルファ:
色Xのカバレッジ(0~1):





2006/1/26 追記ついでに大きく書き直しました

2006/10/30 3番目の式が間違っていたので修正しました

2006年1月13日金曜日

リビングPCのためのキーボード

今ホームサーバとして使っているファンレスFreeBSDマシンをテレビに繋いで、X環境を整えてホームサーバ兼リビングPCにしてしまおうかと企んでいます。

そうなると欲しくなるのが最低でも3m以上電波が届くワイヤレスキーボード&マウス。それがいざ探してみると殆どの製品は1mそこそこで、3m以上電波が届くものは以外に少ないことに気づきました。キーワードは「2.4GHz帯」「赤外線」。
見つけた製品をメモメモ。

Microsoft Remote Keyboard for Windows XP Media Center Edition
Windows XP Media Center Editionで使うならよさそう

Microsoft Optical Desktop Elite for Bluetooth
リビングPC用途としては大きくて邪魔かも

Microsoft Wireless Optical Desktop for Bluetooth
リビングPC用途としては大きくて邪魔かも

Lenovo ThinkPlus エンハンスド パフォーマンス ワイヤレスUSB キーボード&オプティカルマウス [73P4082]
パームレストが場所とりそう

SONY タッチパッド付きワイヤレスキーボード VGP-WKB1
パームレストは折りたためるし、なかなかよさそう。

サンワサプライ SKB-WL08SET マウス付きワイヤレスキーボード
マウスのバッテリー寿命が32時間...!?

富士通コンポーネント FKB8580


他にもあれば教えてください。

自分はSonyのVGP-WKB1が欲しいなー。

  © Blogger template 'Isolation' by Ourblogtemplates.com 2008

Back to TOP