Lunatic Sol

IT Tips

XP で W2K 以前のようなパスワード変更ダイアログを表示するには

2004-02-19 18:55:49 | Windows
私 Windows XP を使い始めて実はまだ数ヶ月だったりします。で、すぐさまクラシックに変更していたんですが、

やっぱ、男は XP UI でしょう

ってことで、XP の GUI を使うように戻してました。が、Ctrl + Alt + Delete が使えなくて、使いにくいなぁとずっと思ってました。

# ただ XP のオプションを理解していなかっただけなんですがね。。。

で、今日別ドメインのユーザーアカウントのパスワードを変更する必要性に迫られたのですが、Ctrl + Alt + Delete で表示されないのでどうしたものかと。。。

マイクロソフト サポート技術情報 - 291559
ログオン画面とシャットダウン設定を変更する方法


なるほど。これを使えばいいのかということでちょちょっとユーザーアカウントの設定を変更。Ctrl + Alt + Delete が使えるようになりました。あぁ、なんかすごくすっきりした気分。

HTTP::Daemon を使った http トレース

2004-02-17 15:09:43 | Perl
先日 http リクエストのダンプという記事を書いた。今日はそのトレースをする必要があり、せっかくなので ActivePerl を使って試してみた。

C:\\>perl -MHTTP::Daemon -e 'warn HTTP::Daemon->new(LocalPort => 80)->accept->get_request->as_string'
Can't find string terminator "'" anywhere before EOF at -e line 1.
全然だめ。エラーになってしまう。ActivePerl のバージョンがまずい?パッケージがない?いや、エラーの内容からしてパッケージには問題はなさそう。ActivePerl にも問題はない。じゃ、Syntax?

ということでググってみたら W32 版 ActivePerl の場合 Single Quotation ではなくて -e の後は Double Quotatation で囲んだほうが良さそうだということが伺えた。ということでもういとどチャレンジ。
C:\\>perl -MHTTP::Daemon -e "warn HTTP::Daemon->new(LocalPort => 80)->accept->get_request->as_string"
GET http://www.google.co.jp/ HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: ja
Host: www.google.co.jp
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705)
Proxy-Connection: Keep-Alive
うん、確かにとれた。でも、一回こっきりなんだねぇ。ということで、ちょっと使い勝手が悪いかな。ヘッダをとりたいだけとかなら使えるかもしれない。例えばブラウザの User-Agent を調べたいとか。

あ、あと実はちょっと悩んでしまったんだけど、ブラウザの Proxy 設定で localhost:80 を指定してあげないとトレースできません。当然といえば当然なんでしょうが、なぜか悩んでしまった。。。

p.s. HTTP::Proxy を使った簡易 Proxy ネタも LindowsOS開発日記に書いていました。今度はそっちを試してみようかな。そっちの方が実は使いたい機能だと思うので。

ThinkPad T41 の進む・戻るキーを無効にする

2004-02-17 14:49:53 | Windows
現在の私のメインマシンは ThinkPad T41 なる、なかなかすぐれた まっすぃーん である。モデルは 10月発表の 2373-9FJであり、1,400×1,050ドット描画可能なのがイカしている。

ただこんな まっすぃーん にも何点か気に入らない部分もある。その中のひとつが「進む」と「戻る」の2つのキー。このキーが十字キーの側にあるもんだから、「左矢印」のつもりで「戻る」を押していることがあり、blog 記事投稿中に押してしまった日にはあなた、全部入力内容がぶっとんでしまうなんてこともあるわけです。

で、今日も早速その事件発生。こいつはいいかげん頭にきた!と思い Access IBM のオプションを探すが見つからない。やむを得ずキーをはずしてやろうとキートップを取ったはいいもののブニョブニョのシリコンの部分はしっかりくっついている。。。困った。。。

T41 進む キー 無効 などをキーにググって見たが別の手法はなく、こうなったら英語サイトを探すしかないと T41 Key Disable Forward をキーに Web 全体でググってみた。そしたら US IBM のサイトにこんな情報を見つけました。

Technical Information
---------------------
- The web navigation keys and the backward/forward keys

    The Windows 2000/XP or later operating system itself identifies the web navigation keys and the backward/forward keys. The keys work on such operating system as the Windows standard function even if the 'web navigation keys agent' included in this package is not installed. The package of version 1.02.0280 or later has a function to disable the keys. To disable the keys, add a registry value below;

    Key: HKEY_LOCAL_MACHINE\\SOFTWARE\\IBM\\TPHOTKE\\YMGR
    Name: DisableWebkey
    Type: DWORD
    Data: 00000001

ということで、この通りレジストリ編集してみる。。。。。。

キタ━━━━(゜∀゜)━━━━ッ!!

ビンゴです!進む・戻るキーが無効になりました!わーい。これで快適な T41 生活が送れる。

■ 関連記事
ThinkPad T41 の進む・戻るキーを無効にする その2

http リクエストのダンプ

2004-02-15 01:01:14 | Perl
仕事柄 http リクエストをダンプすることは良くあります。今までは

のいずれかでやってましたが、今日LindowsOS開発日誌見ていたらおもしろいの見つけました。

$ perl -MHTTP::Daemon -e 'warn HTTP::Daemon->new(LocalPort => 80)->accept->get_request->as_string'

お手軽にhttpリクエストをダンプします。

私の環境には常に ActivePerl は入れるようにしているので、これはつかえるかもしれません。Cygwin 環境でもいけるかな。

ちなみに、なぜ LindowsOS のサイトを見ていたか、というと今日図書館で月刊アスキー10月号のバックナンバーを借りてきて、LindowsOS がついていたのでまぁどんなもんかなと。そう思って見てたのでした。ベースが Debian なので LotusScript ネタはこのプラットフォーム上では無理なんだけどね。

ClearNetworkCache

2004-02-09 12:05:00 | LotusScript
Notes はロケーション文書に $Saved* というフィールド名で過去に接続したサーバーのネットワーク情報を保持しています。そして、その値をキャッシュとして使っています。

機能しているときは良いのですが、たとえばサーバーのネットワークアドレスが変わってしまった、などで接続ができなくなった場合、これらを全てクリアすることで解決できることがあります。ということで、今日はそのフィールドを全部 Remove してしまうスクリプトのサブルーチンです。

Where are Server Addresses Cached in Notes and Domino? に詳細が載っていますが、Notes クライアントの場合はロケーション文書に、Domino の場合はサーバー文書にこれらのデータは保持されています。

それぞれに対応できるように、NotesDocument オブジェクトを引数として受け取るサブルーチンにしてみました。Notes の場合はロケーション文書の NotesDocument オブジェクトを、Domino の場合はサーバー文書の NotesDocument オブジェクトを引数として渡してあげればいいわけです。

Sub ClearNetworkCache(doc As NotesDocument)
    '#### Network Cache Fields
    Dim nwCache(4) As String
    nwCache(0) = "$SavedAddresses"
    nwCache(1) = "$SavedDate"
    nwCache(2) = "$SavedPorts"
    nwCache(3) = "$SavedServers"
    nwCache(4) = "$SavedTriedDate"

    Dim isCleard As Integer
    isCleard = 0

    Dim i As Integer
    For i = 0 To Ubound(nwCache)
        If doc.HasItem(nwCache(i)) Then
            Call doc.RemoveItem(nwCache(i))
            isCleard = 1
        End If
    Next

    If isCleard = 1 Then
        Call doc.Save(True,True)
    End If
End Sub

たとえばこれを個人アドレス帳のエージェントとして登録する場合は、以下のようなコードをアクションメニューエージェント (トリガーはなし) として作成してあげれば、現在のロケーションのキャッシュをクリアできますね。

Sub Initialize
    Dim s As New NotesSession
    Dim aBook As NotesDatabase
    Dim locID As String
    Dim locDoc As NotesDocument

    Set aBook = GetLocalAddressBook(s)
    If Not aBook.IsOpen Then
        Call aBook.Open(aBook.Server,aBook.FilePath)
    End If

    locID = GetLocationID(s)
    Set locDoc = aBook.GetDocumentByID(locID)

    Call ClearNetworkCache(locDoc)
End Sub

尚、上記のコードでは GetLocalAddressBookGetLocationID を使っていますが、引数に NotesSession オブジェクトを渡す形にしています。なので、Function スコープ内の Dim s As New NotesSession はアポストロフィーでコメントアウトして、Function を GetLocalAddressBook(s As NotesSession) のようにして引数を受け取る形に改良してください。過去のサンプルではわかりやすくするため Function の中で NotesSession オブジェクトを Initialize していましたが、ここでは引数にしています。理由はまた別の機会で触れたいと思います。