情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | 編集

今日気がついたWindows 7のショートカットキー2つ このエントリーを含むはてなブックマーク

Windows 7を使い始めてからかなりの時間が経っていますが、今日新しく気がついたショートカットキーが2つあったのでメモ。ちなみに、Vistaで検証していないので、実はVistaにもあるかも。

ショートカットキー1

どんなショートカットキーかというと、タスクバーに表示されているプログラムをShiftキーを押しながら左クリックするだけです。地味ですが使えそうなことが起こります。

効果

何が起こるかというと、多重起動可能なアプリケーションだった場合、新しく同じアプリケーションが起動します。たとえば、タスクバーにあるChromeをShift+左クリックすれば、Chromeの新しいウィンドウが起動しますし、PowerPointやExcel、OneNoteなどのOffice 2010をShift+左クリックすれば新しいウィンドウが開きます。もちろんエクスプローラの新規画面を開くのもこれでできます。

しかもそのときちょっとおしゃれにタスクバーが光ったりします。

多重起動できないアプリの場合は特に何も起こりませんが、タスクバーが光るのは同じみたいです。同じアプリケーションをたくさん起動しているときはそれらがすべて光ります。

スポンサーサイト
Windows | コメント:0 | トラックバック:0 | 編集

BINDインストールTIPS hosts.allow, hosts.deny 編 このエントリーを含むはてなブックマーク

BINDをインストールする最中に気がついたことをインストールTIPSとして紹介します

hosts.allow, hosts.deny ファイル

BINDの動作をnslookupで確認しようとしたとき、

No response from server
と表示されてしまったので、アクセスすらできていないことから、「hosts.allow」「hosts.deny」が思い浮かびました。

結論から言うと

結論から言うと、「BINDに関してはhosts.allowファイルもhosts.denyファイルも関係ありません」ということです。

なぜ関係ないのか

そもそも、hosts.allow,hosts.denyは、TCP Wrapperを利用するプログラムの通信を制限する設定ファイルなので、TCP Wrapperを利用していないBINDの通信には何の関係もないのです。

hosts.allow, hosts.denyが関係するプログラムとは

ずばりhosts.allow, hosts.denyが関係してくるプログラムは、TCP Wrapperを利用しているプログラムのことです。そして、TCP Wrapperの実態はlibwwrapという共有ライブラリです。つまり、hosts.allow, hosts.denyで通信相手を制限できるのは、libwrapを利用しているプログラムのみということになります。

共有ライブラリの利用状況を調べるには

つまり、プログラムが共有ライブラリlibwrapを利用しているかどうかが分かれば、hosts.allow, hosts.denyを設定する必要があるかどうかが判断できるわけです。

そのためには、lddコマンドを利用します。 たとえば、代表的なhosts.allow, hosts.denyを利用するプログラムであるsshdについてlddコマンドを利用してみます。

$ ldd /usr/sbin/sshd
 libwrap.so.0 => /lib64/libwrap.so.0 (0x00002ae70961f000)
 libpam.so.0 => /lib64/libpam.so.0 (0x00002ae709828000)
 libdl.so.2 => /lib64/libdl.so.2 (0x00002ae709a33000)
 libselinux.so.1 => /lib64/libselinux.so.1 (0x00002ae709c38000)
 libaudit.so.0 => /lib64/libaudit.so.0 (0x00002ae709e50000)
 libfipscheck.so.1 => /usr/lib64/libfipscheck.so.1 (0x00002ae70a06a000)
 libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002ae70a26d000)
 libutil.so.1 => /lib64/libutil.so.1 (0x00002ae70a5be000)
 libz.so.1 => /usr/lib64/libz.so.1 (0x00002ae70a7c1000)
 libnsl.so.1 => /lib64/libnsl.so.1 (0x00002ae70a9d6000)
 libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002ae70abee000)
 libresolv.so.2 => /lib64/libresolv.so.2 (0x00002ae70ae26000)
 libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00002ae70b03c000)
 libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002ae70b26a000)
 libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002ae70b4ff000)
 libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002ae70b725000)
 libnss3.so => /usr/lib64/libnss3.so (0x00002ae70b927000)
 libc.so.6 => /lib64/libc.so.6 (0x00002ae70bc52000)
 /lib64/ld-linux-x86-64.so.2 (0x00002ae709402000)
 libsepol.so.1 => /lib64/libsepol.so.1 (0x00002ae70bfaa000)
 libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00002ae70c1f0000)
 libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00002ae70c3f9000)
 libnssutil3.so => /usr/lib64/libnssutil3.so (0x00002ae70c5fb000)
 libplc4.so => /usr/lib64/libplc4.so (0x00002ae70c818000)
 libplds4.so => /usr/lib64/libplds4.so (0x00002ae70ca1d000)
 libnspr4.so => /usr/lib64/libnspr4.so (0x00002ae70cc20000)
 libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ae70ce5a000)
すると、このようにsshdが利用しているライブラリの一覧を取得することができます。そして、この中に確かに「libwrap」があることが確認できます。よって、sshdはhosts.allow, hosts.denyの制御の影響を受けるわけです。

BINDデーモンnamedについて確認する

では、BINDはどうかというと、

$ ldd /usr/sbin/named
 liblwres.so.9 => /usr/lib64/liblwres.so.9 (0x00002b819e041000)
 libdns.so.26 => /usr/lib64/libdns.so.26 (0x00002b819e252000)
 libbind9.so.0 => /usr/lib64/libbind9.so.0 (0x00002b819e573000)
 libisccfg.so.1 => /usr/lib64/libisccfg.so.1 (0x00002b819e77c000)
 libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002b819e996000)
 libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00002b819ece7000)
 libisccc.so.0 => /usr/lib64/libisccc.so.0 (0x00002b819ef16000)
 libisc.so.15 => /usr/lib64/libisc.so.15 (0x00002b819f11e000)
 libnsl.so.1 => /lib64/libnsl.so.1 (0x00002b819f360000)
 libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b819f579000)
 libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00002b819f794000)
 libc.so.6 => /lib64/libc.so.6 (0x00002b819f9cf000)
 libdl.so.2 => /lib64/libdl.so.2 (0x00002b819fd27000)
 libz.so.1 => /usr/lib64/libz.so.1 (0x00002b819ff2b000)
 libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002b81a013f000)
 libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002b81a03d5000)
 libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002b81a05fa000)
 libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00002b81a07fc000)
 libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00002b81a0a05000)
 libresolv.so.2 => /lib64/libresolv.so.2 (0x00002b81a0c07000)
 /lib64/ld-linux-x86-64.so.2 (0x00002b819de24000)
 libcap.so.1 => /lib64/libcap.so.1 (0x00002b81a0e1c000)
 libselinux.so.1 => /lib64/libselinux.so.1 (0x00002b81a1021000)
 libsepol.so.1 => /lib64/libsepol.so.1 (0x00002b81a1239000)
を見ての通り、libwrapがありません。つまり、BINDにhosts.allow, hosts.denyの設定は無意味という訳です。

まとめ

今回のまとめはこんな感じ

BIND | コメント:0 | トラックバック:0 | 編集

Windowsでのファイル検索結果にフォルダを表示しない方法 このエントリーを含むはてなブックマーク

Windowsでファイルを検索する際、検索結果にフォルダが表示されないようにする方法をメモ。WindowsのHelpにも記載がなかったのですが、ひょっとしたらで試してみたら出来たので。

ファイル検索をするとフォルダがジャマになる

特定のファイルや特定の拡張子のファイルを検索したいとき、キーワードで検索すると、対象ファイルだけではなくフォルダまで表示されてしまい、正直邪魔です。

フォルダを検索結果に表示しない方法

検索キーワードとして、

NOT DIR
と入力することでフォルダが検索対象から外されます。また、同様に
NOT DIR
NOT DIRECTORY
NOT FOLDER
NOT dir
NOT directory
NOT folder
などでもフォルダが検索対象から外されます。NOTは大文字である必要があります。また、今回はWindows Vistaで検証しました。

どうしてこうなるのか

たとえば、「directory」や「folder」という検索文字列で検索すると、検索結果にはフォルダのみが表示されます。どうやら、もともとフォルダには「directory」や「folder」というタグが付けられているようです。これが検索結果に反映され、上記のような結果になるみたいです。

APIで学ぶWindows徹底理解
インサイド Microsoft Windows
Advanced Windows

Windows | コメント:0 | トラックバック:0 | 編集

アプリケーションの特定にSpy++ このエントリーを含むはてなブックマーク

突然表示されるエラーメッセージや、アプリケーションから間接的に起動された別のアプリケーション。エラーを起こしたプログラムは何なのか、実行ファイルはどこの何というファイルなのか、表示されている画面を見ても、特定できないことがあります。

そんなときに使える、「Spy++」というツールがあります。

今までWebページ上で見かけることはあっても、使ってはいませんでした。使ってみると便利なのでメモ。

Spy++

Spy++は、Visual Studioの一部というか、同時にインストールされるツールのうちの一つです。その他のツールには、errlook.exeなどがあります。

Spy++は、実行ファイルを特定するのに便利ですが、Spy++自身の実行ファイル名は、spyxx.exeです。Spy++の場所は、

C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\spyxx.exe
(ただし、環境はWindows Vista SP2, Visual Studio 2008)
です。少しわかりにくいというか、紛らわしかったりするので、"C:\Program Files"内を"spyxx.exe"というファイル名で検索するとすぐ見つかると思います。

Spy++の使い方

利用方法ですが、ダブルクリックで起動し、「スパイ(S)>ウィンドウ検索(F)...」で、「ウィンドウ検索」ダイアログを表示させ、中央にある「ターゲットマークの画像」を目的のアプリケーション画面やダイアログにドラッグアンドドロップします。すると、「ハンドル」のテキストボックスにそのハンドルが入力されます。

そして、OKをクリックすると、「プロパティ インスペクタ」が表示されるので、「プロセス」タブを選択し、「プロセス ID:」の右に表示されている数字をクリックします。

すると今度は「プロセス プロパティ」が表示されるので、「モジュール名」をメモしますメモしなくても、表示しっぱなしでOK

続いて、タスクマネージャを「Shift + Ctrl + Esc」等で起動します。「プロセス」タブを選択した状態で「表示(V)>列の選択(S)...」で表示される「プロセス ページの列の選択」ダイアログで、「イメージパス名」にチェックを入れてOKをクリックして閉じます。あとは、プロセスタブ中の「イメージ名」の中から先ほどメモった「モジュール名」を探し、該当する「イメージ パス名」を見つけます。

このイメージ パス名が、ウィンドウを表示しているアプリケーションの正体です。

実行ファイルパスを特定できたら

Spy++で、とりあえずファイルパス名が分かったら、その実行ファイル名でWeb上を検索しましょう。

名前が分からないと満足に検索もできない」の記事で紹介したように、調べたいものの名前が分からないと、検索できません。Spy++を使うことによって、検索したいものの名前を見つけることができました。あとは、検索で関連情報を見つけてください。

Spy++便利ですね。

ひなた先生が教えるデバッグが256倍速くなるテクニック
Windowsデバッグの極意 ツールを使いこなして、バグハント!
Debug Hacks -デバッグを極めるテクニック&ツール

Visual Studio | コメント:0 | トラックバック:0 | 編集

ハンドルされるかにかかわらず、例外発生時に停止する方法 このエントリーを含むはてなブックマーク

今回はVisual Studio でも、デバッグについて。

問題:例外で一時停止してくれない

Visual Studioでデバッグ実行すると、 例外がハンドルされないとき、

ArgumentNullException が発生しました。

のような表示がされ、一時停止されます。

しかし、try-catchで、例外を正しくハンドルしていると、 例外が発生しても、

'System.ArgumentNullException' の初回例外が mscorlib.dll で発生しました。

のような一行が出力ウィンドウに表示されるのみです。

ライブラリの内部などで例外が発生していると、発生していることのみが表示され、どの行から発生したかが分からず、困ってしまいます。

対策:一時停止するように設定する

対策方法は、「デバッグ(D)>例外...(X)」から例外ウィンドウを表示し、 表示された表の「スローされるとき(T)」にチェックを入れるだけです。

すると、例外が発生したら必ず一時停止してくれます。

ゲーム作りで学ぶVisual C# 2008入門
はじめてのVisual Studio 2008
はじめてのVisual Studio 2008―Microsoft Windows用統合開発環境(IDE)の基礎知識から応用まで

Visual Studio | コメント:0 | トラックバック:0 | 編集
 | HOME |  OLD >>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。