follow me

NotifyChangeEventLog()にやられた

WindowsのEventLogを扱うためのAPIで、新しいEventLogの発生の検出を行う物があるのですが、この変な仕様(WMIの仕様?)なんとかなりません?

NotifyChangeEventLog()って名前のAPIなのですが。
内容は、hEventLogで指定されたイベントログにイベントが書き込まれたらhEventで指定されたイベントオブジェクトをシグナル状態にする。
となっているのですが、5秒以内に複数のEventLogが発生した際に取りこぼしが発生する可能性があります。
実際に試した所、確かに取りこぼしが発生しました。
それもかなりの高確率で。。。
Microsoftのページでも、取りこぼしの可能性があるってなってました。。。
とりあえずは、2003SP1では修正されているそうですが。

詳細は、Microsoftのページに記載されています。
follow me

タスクトレイ格納型プログラム

タスクトレイに格納されたプログラムの作成。
久々にプログラム作ろうと思ってみて、せっかくなのでタスクトレイ格納型にしたいと思ったので、やり方を調べてみたメモ。
内容は、Shell_NotifyIcon()使えばイイだけ。これを使ってトレイ内のアイコンを変えてみたり~。
とりあえず、プログラム初期化部分に以下のコードを埋め込み完了。
nidNoftyIconData.cbSize  = sizeof(NOTIFYICONDATA);
nidNoftyIconData.hWnd    = hwnd;
nidNoftyIconData.uID     = 1;
nidNoftyIconData.uFlags  = NIF_ICON | NIF_TIP | NIF_MESSAGE;
nidNoftyIconData.uCallbackMessage = WM_USER + 1;
nidNoftyIconData.hIcon   = LoadIcon(hCurInst, MAKEINTRESOURCE(IDI_ICON));
strcpy(nidNoftyIconData.szTip, APP_DESCRIPTION);

Shell_NotifyIcon( NIM_ADD, &nidNoftyIconData );

あと、ウィンドウが無いので、プログラムを終了するために、ポップアップメニューを追加しないと。。。プログラムが終了できない。。。
ちなみにメニュー箇所は、こんな感じにしてみた。
  case (WM_USER + 1):  //アイコンからのメッセージ処理
    if( lParam == WM_RBUTTONDOWN ){
      // マウス右押し
      GetCursorPos( &pt );
      hMenuPop = CreatePopupMenu();
      AppendMenu( hMenuPop, MF_BYCOMMAND | MF_STRING, IDR_EXIT, TEXT("Exit(&X)") );
      SetForegroundWindow( hwnd );
      TrackPopupMenu( hMenuPop, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hwnd, NULL );
      if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
      }
      DestroyMenu( hMenuPop );
    }

とりあえず、ポップアップメニューまで追加したタスクトレイ格納型の雛形。
プログラムはVC++6.0で作成。
TaskTray.zip
follow me

Fedora6でVMwareServerを動かす

導入環境はFedora6 on Athlon64

VMware-Serverをインストールする前にまず、yum install kernel-develを実行。
そのあと、VMwareのrpmパッケージを導入。
/usr/bin/vmware-config.plを実行するがエラーで終了。

内容は、linux/config.hが見つからないとの事なので、空ファイルを作成するだけで問題ないです。
ここではモジュールを作成するだけなので、ファイルの内容は意味を持ちません。

で進んで行くと、シリアルを入力してもはじかれる。
エラーメッセージがちろっと表示されている。 libXt.so.6が無いようです。これは、32bitのライブラリが無いための様です。
libXtst.so.6があるはずなので、シンボリックリンクを作成し回避します。
ちなみに、もちろん64bitのlibXt.so.6では動かない。

とりあえず、導入は以上。
あと、xinetd入れとかないといけない。

ちなみにXenのカーネルでやってたら、VM起動時にタスクスイッチ箇所でやられちった。
follow me

Windowsでもループバックインターフェース

WindowsWindowsにも、UNIX系OSの様にループバックインターフェースがありました。
ハードウェアの追加で、Microsoftの「Microsoft Loopback Adapter」を追加する事で作成出来ます。
これで、NICが追加されます。
IPは、127.0.0.1が割り当てられる訳ではなく、自分でIPを振らなくてはいけません。。。

使い道は。。。わからないです。。。

follow me

Quaggaってかわいい。

Linux - SlackwareQuaggaとは
クアッガ Equus quagga quagga は、ウマ目(奇蹄目)・ウマ科・ウマ属に分類されるシマウマの一種で、南アフリカ共和国の草原地帯に生息していたが、すでに絶滅した。クアッハとも表記される。
ちと、かわいいな。

Quaggaとは
RIPv1、RIPv2、RIPng、OSPF、OSPF6、BGP4+、BGP4-といったルーティング関連のプロトコルをサポートしたプログラムです。

特に導入は、問題ないので省略。

操作はCisco風・・・、なぜに?
root@sempron:/# telnet localhost 2602
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.5).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

User Access Verification

Password: 
ripd> ena
ripd# config t
ripd(config)# show run

Current configuration:
!
hostname ripd
password zebra
log stdout
!
router rip
!
line vty
!
end
ripd(config)# exit
ripd# exit
Connection closed by foreign host.

で、Slackware 11.0用に作成したパッケージ。
quagga-0.99.5-i486-srchack.org.tgz
follow me

OSC2006 Tokyo/Fall行って来ました

会社休んで、OSC2006 Tokyo/Fall行って来ました。
今回も、やっぱり仮想化流行ってんのねと認識させられました。
Virtual Ironも見れたし、Plan 9ごりごりビルドやってるのも見れたし、SE Linuxの組み込みへの実装やらJFFS2やらblanco Frameworkやら話も聞けたし、あともろもろいっぱい、楽しめました。
オープンソースってやっぱりいいな~。
今回も自分が何も出来ない事が見えて凹みつつ、いろんな意味でやる気が出てきました。
まだ、OSCに行った事が無い方は、一度行ってみてはいかがですか。

あと、オライリー1割引は、貧乏技術者の私には天の恵みの様なモノで、またガッツリ購入。
ちなみに今回は、メモ帳とコーヒーマグカップが付いてきました。
紙袋がビニールになったのは少し残念。会場では邪魔にならなくてイイのですが。あの紙袋好きだったのに。。。

会社の方ご迷惑をお掛けし申し訳ありませんでした。
ってこのページ見に来ないか。。。
follow me

Virtual Floppy Drive

意外と使ってみると便利だったVirtual Floppy Drive
。 Windows時代が来てフロッピーなんて使わなくなってしまったが、仮想Floppyドライブを作成してくれる、ちょっとした時に便利なツール。
Linuxでなら、Floppyイメージをループバックでマウントすればいいけれど。
このツールでWindowsでも可能に。

floppyfwいじる時に、かなり便利でした。
follow me

floppyfwのキーボード配列をjp106に対応

floppyfwを使ってみる。
キーボード配列がUSなのに、イライラしてしまう。
配列をjp106に対応するためのPackageを作成。

で、jp106キーボードの対応方法は、loadkmapコマンドが初めから入っていたので、別のLinux端末でキーマップファイルを作成。
この時、キーマップファイルの生成は、busybox用の物を作成しなければならないので、busyboxをビルドし、dumpkmapコマンドで生成します。

その後、パッケージの作成。
floppyfwが起動した際に配置する位置になるよう、ディレクトリ構造を作成し、bz2圧縮すれば終わり。
あと、Packagesディレクトリ以下に保存された「post-***.ini」ファイルが実行される仕様なので、キーマップを読み込むスクリプトを記述。
キーマップ対応は、これで完了。
作成したファイルは、以下にアップしています。

ついでに、telnetdのPackagesを組み込んでみるが、
一点telnetdで注意すべき点が、うまく接続できないtelnetクライアントがあるためクライアントを選ぶ必要があります。
Linuxのtelnetは問題なし、Windowsのtelnetは接続は出来るが挙動がおかしい、Teratermは接続できず、puttyでは「どのLFにもCRをいれる」をチェックしていれば問題なく接続が可能。

以下、Packageファイル
post-jp106.ini
jp106.bz2
以下、jp106キーボード対応とtelnetd入りイメージ
floppyfw-3.0rc2-jp.img
follow me

ext4ファイルシステム登場

Linux kernel 2.6.19-rc1で、ext4が対応したそうです。

ext4をサポートしない古いカーネルからでもext3ファイルシステムとしてマウントできるように下方互換性が考慮されているらしいので、
事前にファイルシステムだけ作って、普通にディストリインスコしてから、kernel再ビルドすれば、普通にext4環境構築できんのかな~と

で何が違うのだろうか?
・1024PByteまでのストレージのサポート
・ファイル断片化を防ぐextent file writingの導入
どっちも、個人レベルでは、あまり関係が無いような・・・
follow me

ログイン時のメッセージを遊んでみる

ログインした際に表示されるメッセージを遊んでみよう。
UNIX系OSでは、/etc/motdの内容がログイン時に表示されます。
こんな感じに遊んでみる。
Last login: Wed Oct 11 14:06:20 2006 from 192.168.73.131
####################################################################
        カタカタ
       ピーー____ ____
     ∧_∧   ||\  .\   |◎  |   Slackware11.0 だぽ。
     ('´∀`)  ||  | ̄ ̄|  |:[].|      ---------------------
  ┌(  つ/ ̄l| / ̄ ̄/ |  =|
  | └ ヽ |二二二」二二二二二二二二二」    ∧_∧
   ̄]|__)_) .| ||    | ||     ( ・∀・)ツナイデツナイデ
  / ̄\      / . ||    /  ||       ( ∪ ∪
  ◎  ◎..   [__||  .[__||       と__)__)

####################################################################
root@sempron:~#
ちなみに、自分で書いたわけではない。
あいむの珍妄想ページより拝借しました。

たまには、こんなネタも楽しい。