NotesPeek: 削除スタブを理解する

2008年12月26日 01:30

 昨日NotesPeekについて紹介したのは別に日本語用の設定が裏技だ!と思ったからではありません。。やっぱりNotes サポートの人間が書いているブログなので、サポートツールを紹介しているのが一番それらしい気がしたので手始めにNotesPeekについて取り上げてみようと思いました。

さて、NotesPeekでは削除スタブが見れる!と言う話を聞いてどきどきしながらNotesPeekを使ってみて、たいした情報が見れずにがっかりした人は多いのではないでしょうか。消したはずの文書の内容が見れるツールだったらすごいと思うのですが、実際に削除スタブには消した文書のフィールド値などの情報があるわけではないのでこのような目的では使えません。

さて、NotesPeek で削除スタブの一覧を見る場合には以下のように左側のペインから「Deletion Stub」を選択します。

NotesPeek: 削除スタブ

ここで削除スタブを選択すると以下のような情報が表示されます。
(クリックすると拡大します)

削除スタブの情報

NotesPeekが一部しか表示できないのではなくて、これが削除スタブの情報です。
削除スタブは複製間で削除情報を伝播するために使用されるものですので、いわば「削除のログ」のような情報だけを保持しているのです。

以下のような情報をここから確認します。

・ 文書のID (Note IDやUNID) 
・ 文書の最終更新日 (Sequence-time)
・ 文書の更新回数 (Sequence)

つまり最終更新日が分かるので、いつ削除されたかを正確に特定できる、と言うのが削除スタブをNotesPeek で確認する意味になるのです。
 この後さらに削除の詳細について追いかける場合にはデータベースの使用状況やログから地道に特定していく事になります。

 と言うわけでNotesPeekから確認できる削除スタブ情報もあまり過度な期待を抱かないようにしてください。。。

Lotus Notes Diagnostics Utility

2008年12月26日 23:55

以下のようなユーティリティが配布されているのを御存知でしょうか。

Lotus Notes Diagnostic utility (#4019151)

インストールすると以下のようなファイルについてKnowledgebase Searchをしてくれたり、重要な出力をまとめてくれたりします。

・ NSD
・ SEMDEBUG.TXT
・ ドミノのメモリダンプ


実はサポートでも同じようなツールを使用しているのですが、その中でも公開可能な機能を切り出したものでNSDなどを自分で見てみたい、と思っている方には非常に興味深いのではないかな、と思います。

基本的にはインストールしてからは、NSDやSEMDEBUG.TXTなどを右クリックして適当なメニューを選択すると動作するはずです。

サポートでも解析ツールなどを使う事に対する是非と言うのは議論があります。
個人的にはどうせマニュアルチェックもするのだから、始めの定型調査にはツールを使うべきだ、と思っているのですがやはり自分の目でNSDを解析しないと・・・と言う人も多いので、どちらがいいとは一概には言えないところです。。

LNDそのものは入れたことが無いのでスクリーンショットなどは出せないのですが、NSDからこんな事が分かるのか、と言う事を知ることが出来たり、出来るだけ自分で解析したい、と思っている人には強力なツールですので是非是非試してみてください。

NotesPeek: プロフィール文書を見てみる

2009年01月06日 00:51

バックナンバー
1. Notes Peek - 日本語用の設定にしましょう
2. NotesPeek: 削除スタブを理解する
3. NotesPeek: プロフィール文書を見てみる
4. NotesPeek: UNK Table を見る
5. NotesPeek: 文書クラスを知る


さて、NotesPeekのもうひとつの特徴と言えば、プロフィール文書の値が見えること、だと思います。
プロフィール文書はメールデータベースなどで使われているCalendarProfile を始め、様々なデータベースで使用されているのではないかと思います。

NotesPeek で見るときは、データベースを展開して、「Profiles」 と言うセクションを展開してみてください。ここからプロフィール文書を確認する事が出来ます。

ほとんどの場合、プロフィール文書にどのようなものがあるかはアプリケーション開発者であれば分かっているのが前提なので、ここから該当のプロフィール文書のフィールド値などを確認してもらえれば調査する事が出来ます。

トップには以下のように表示されます。

profile-name "$policyprofile"
user-name "cn=taro yamada/ou=xxxx/o=xxx"
note-id 0x9d2


ここで、Profile文書は「名前」と「ユーザー名」を持つ文書だ、と言うことが分かるのではないでしょうか?実際に呼び出すときもユーザー名を指定することも出来ますよね。
ユーザー名は省略可能なのですが、プロフィール文書を一意に決めるのに役に立っています。

ちなみにこれらは$NAME フィールドで以下のようなアンダースコア区切りの値として格納されます。

$profile_014$policyprofile_cn=taro yamada/ou=xxxx/o=xxx"

このようなフォーマットになっていることが分かるはずです。
$profile_<数字><プロフィール文書名>_<プロフィール文書の所有者名>

ユーザー名を指定しないタイプのプロフィール文書は以下のような形式になります。

"$profile_016directoryprofile_"


一般的にはプロフィール文書関連のトラブルシューティングで重要な点は以下の点です。

1. 期待した通りの文書が取得できているか
2. プロフィール文書には適切な値を格納されているか

ここでユーザー名依存のプロフィール文書を使用している場合に、1.が疑われると、NotesPeek で上記のようなユーザー名の確認などを行うことが必要になります。
もちろん単純にフィールド名などの確認を行うのにも重宝します。

サポートではプロフィールの文書は基本的にはアプリケーション開発者が問題切り分けを行うことをお願いしているのですが、様々な状況によってこのような調査が発生することがあります。
典型的な例を挙げればメールルールの問題などは正にプロフィール文書(CalendarProfile)のフィールド値がキーになるので。このような場合には、NotesPeekを案内することもありますが、値を確認するボタンスクリプトを使って、それだけで簡易な問題切り分けとすることもあります。
これはNotesPeekの使い方を詳細に案内したり、新たにツールを導入したりすることに対する負担が大きいと感じるお客様もいるためなのですが、プロフィール文書の可視性はもう少し高くなってもいいのかな、て思います。
 NotesPeekのように設計要素の1つとして扱うことによって、デザイナーで編集・確認できてもいい気がするので・・・

この辺は難しいところですね・・・・









NotesPeek: UNK Table を見る

2009年01月07日 00:24

バックナンバー
1. Notes Peek - 日本語用の設定にしましょう
2. NotesPeek: 削除スタブを理解する
3. NotesPeek: プロフィール文書を見てみる
4. NotesPeek: UNK Table を見る
5. NotesPeek: 文書クラスを知る

http://hnagasim.blog8.fc2.com/blog-entry-59.html

UNK Table って言われてピンと来る方はどのくらいおられるでしょうか?
すぐに説明できる方は相当Notes 技術者としてもベテランの方なのではないかと思います。
サポートでも何か資料を見ながら話さないと心配になるくらいのものです。

UNK Table はUnique Key Table の事で一言で言うとデータベースで使用されているアイテム名とアイテムの型の情報が格納されているものです。
サポートシーンやユーザー視点では「database has too many unique field names.」と言うエラーメッセージが出てきた場合以外にはほぼ意識する必要が無いものではないかと思います。あとは始めにテキストフィールドで定義していたフィールドを日付型に変更し、全文索引などで日付条件を使用した検索などを行う場合などもUNK Tableの状態によって検索が失敗した経験があるかたもいるのではないかと思います。

英文になってしまうのですが、この文書の説明などが詳しいのではないかと思います。
Definition of UNK and 'Database has too many unique field names' message

アイテムのデータ型の変更にまつわる問題はこのTNなどで記載されています。
Full Text Indexer Does Not Recognize Field Data Type Change


で、このエラーが出た場合にはUNK Table を小さくする必要があるのですがたとえば全文索引を削除してからコピー圧縮を行う必要があったりなかなか何が起こっているか見えにくいものです。
こうなると中身が確認したくなってきます。

以下のようなTechnoteを見ると、Itemdef.exe と言うのも紹介されていますね。

Tools to show the UNK table size for a Notes database

でも、私はUNK Table の情報はNotesPeek で確認することをお勧めしています。
それしか出来ない単機能のCUI ツールをUNK Table なんて言うニッチなテーブルのためにダウンロードしておくことはないのではないかと思うので。これはあまり紹介されているページも無かったのでこのブログで紹介するのにちょうどいいかな、て思います。

NotesPeek でUNK Table を確認するには、以下のように[Database Information]-[Item Def Table] に進みます。(クリックすると拡大します。)

Item Def Table の選択

右側のペインに以下のような情報が表示されます。。(クリックすると拡大します。)


NotesPeek で表示される UNK Table の情報

登録されているItem 名の数・アイテム名・アイテムの番号・アイテムの型等が表示されるため、問題判別には十分な情報が確認できます。

ぜひ活用してみてください。

NotesPeek: 文書クラスを知る

2009年01月21日 00:10

バックナンバー
1. Notes Peek - 日本語用の設定にしましょう
2. NotesPeek: 削除スタブを理解する
3. NotesPeek: プロフィール文書を見てみる
4. NotesPeek: UNK Table を見る
5. NotesPeek: 文書クラスを知る

昨日のエントリでは、Notesの文書は全部で12種類しかないことを話しました。
ところが実際は設計要素などを見てももっとたくさんの種類があります。

たとえば、「フレームセットって文書クラスは何になるんだろう?」と言うようなことを疑問に思った人もいるかもしれません。このような調査が必要になることは稀だとは思うのですが、これもNotesPeekから知ることが出来ます。

NotesPeekで試しにメールテンプレートのMailFSと言うフレームセットを開いて見ましょう。
左側のペインから「Design Elements」を展開し、該当する設計要素を選択します。
(クリックすると画像は拡大します)

NotesPeekからMailFSを選択

ここで右側のペインに表示されるこの部分の情報に着目してください。
(クリックすると画像は拡大します)

文書クラスの表示

ここを見るとフレームセットの文書クラスが「Form」であることが分かるのではないかと思います。
このようにして特定の設計要素の属する文書クラスを知る必要が出た場合には確認することが出来ます。
この調査が必要になる人は稀だと思いますが・・・

DSKTOOL - ワークスペースアイコンのエントリを編集する

2009年03月25日 00:33

最近記事紹介が続いたので、ツールの紹介でもしようかな、と思います。
出来るだけ反応がいいものを取り上げたいと思うので是非気に入ったら拍手なども御利用頂けると本人も励みになりますのでお願いします。。

As-is なのでツールに対するサポートなどは提供されないのですが、以下のようなツールが提供されているのをご存知でしょうか。

DSKTOOL.EXE Utility - Updates Notes desktop icons for user after recertification (#4004260)

CUIベースでワークスペースアイコンの削除や追加を行うことが出来ます。

7.x では、Desktop6.ndk が利用されているため、「6.x DSKTOOL.EXE Utility」をダウンロードしてください。8.xでも、「6.x DSKTOOL.EXE Utility」をを使うしかないのですが、desktop8.ndkをdesktop6.ndkに変えないと動きませんでした。。

こんな感じで使います。
手順:
1. 実行前はdesktop*.ndk をバックアップしてから作業を行ってください。
2. ダウンロードしたファイルは自己解凍形式になっているため、Notesクライアントのプログラムディレクトリに、dsktool.exeを解凍してください。
3. プログラムディレクトリに以下のような形式のスクリプトファイルを作成してください。
 使えるコマンドについてはリンク先の文書を参照してください。

Script.txtの内容
Delete ServerName/Org!!mail\XXXX.nsf
Delete ServerName/Org!apps\YYYY.nsf

4. コマンドプロンプトから以下のコマンド例のように、スクリプトファイルを指定する事によって実行する事が出来ます。
注: クライアントが起動している際に実行すると、自動的に終了されるので注意してください。

コマンド例:
dsktool.exe script.txt -V -I
※ I はiの大文字です。

5. Notesクライアントを起動すると、アイコン情報が削除された状態のワークスペースにアクセスする事が出来ます。



ツールのサポートが限定されるので、大規模なサイトには向かないと思いますが、サーバー名の変更などには便利なときもあるのではないかと思います。

チームEUCテンプレート

2009年04月15日 00:07

 面白いテンプレートが公開されていました。
鴨志田さんのブログからテンプレートはダウンロードできるので興味ある方は是非使ってみてください。(Lotus Notes/Domino 6以上です) プレゼンテーションもあります。

[Notesとコスト削減]売上増大への直接的な貢献?

何か、件名と文章だけのような情報を放り込むだけであれば、個人ジャーナル(最近のバージョンではずいぶん見栄えもよくなりましたね。)とかディスカッションテンプレートを使えばいいのですが、このテンプレートは商品情報や顧客情報のようなスプレッドシートのような見せ方をしたい情報をサーバー上で共有するのに適したテンプレートにしているようです。ビュー上からの直接編集も上手に使っていていいのではないかと思います。

残念ながらフィールドにちゃんとした名前をつけるだけでなくて、フィールドやビューもいらないものは消したいし、フィールドの属性も適したものに変えたほうがいいとは思うので、なかなか1分で使うのは難しいと思うのですが、例にあるように簡単な出欠管理とか製品情報の管理に使ってみるといいのではないかな、と思いました。
何かのときのために自分のローカルに置いておいてもいいんじゃないかと思います。

Surely Template - Template のReplica IDを管理する

2009年04月21日 00:03

今日はこんなテンプレートを紹介します。

OpenNTF.org - Surely Template

NSFファイルを入手するには「Release」タブに移動して最新版を入手してください。
ダウンロード時にID登録するように求められるかもしれません。
メールアドレスと名前以外はそれほど詳細な情報は聞かれなかったと思います。。


システムテンプレートのレプリカIDはその性質上どの環境でも同じになりますが、これによって
・ 予期できないテンプレートが複製されるかもしれない
・ 外部からの侵入者に少しでも予測可能な情報を与えたくない

などの事が懸念される場合はレプリカIDを変えましょう、と言う話です。

あくまでこのブログではちょっと珍しいツールがある、と言う観点で紹介していますが、実環境でシステムテンプレートのレプリカIDを変える、と言う事に対しては私は非常に否定的です。(そもそもテンプレートやデータベースのレプリカIDを変える事自体サポートしていません。)
 このような方法で変えても、バージョンアップなどがあれば戻ってしまいますし、複数サーバー・複数バージョンなどでは対応の複雑さが増してしまうのではないかと思います。

能書きはともかく動かしてみましょう。
このツールは基本的にはサーバー上にNSFファイルを配置して使用するものですが動きを知りたいだけであればLocalのデータディレクトリに置くだけで十分なのではないかと思います。

開いてから、「Discover Templates」アクションを実行すると以下のようにLocalのテンプレート一覧を取得してくれます。(画面ショットはクリックすると拡大します)

Surely Template 起動画面

各エントリは以下のように管理されています。
(画面ショットはクリックすると拡大します)
Template Profile


「What Replica ID to use?」はレプリカIDの割り当て方法を指定できて、編集モードにすると以下のオプションから選べます。

・ Default Replica ID
・ Suggested Domain Replica ID
・ Random Replica ID
・ DO NOT CHANGE

ついでにテンプレートACLも変更する事が出来て以下のような設定を行うことが出来ます。
実はこっちの機能の方が重宝するかもしれません。

・ Default No Access
・ Add Anonymous(No Access)
・ Add LocalDomainServers as Manager

ここで「Change Status」アクションを使ってEnabledにされたものに対して「Process Profiles」アクションを使って実行するとテンプレートを色々と変える事が出来ます。
ビューをReplica IDでもソート可能にしておけば、重複したものを見つけることも出来ますし、ローカルでシステムテンプレートをベースに開発などを行うときは便利だな、と思いました。

ちなみにこのツールは、以下のRedbookの159ページにも紹介されています。
Security Considerations in Notes and Domino 7: Making Great Security Easier to Implement

蛇足ですが、レプリカIDの変更をするScriptのメソッドはないのでテンプレートがどのように実行しているのか気になっている方もいるかもしれませんが、普通にAPIを読んで実行しているだけです。

興味があったら是非利用してみてください。

企業向けGoogle デスクトップ検索 (Notesプラグイン)

2009年05月01日 00:02

Google のデスクトップ検索がリリースされている事をご存知の方は多いと思いますが、たまたま企業向けのデスクトップ検索のページを見ていたらNotes向けプラグインが同梱されているみたいです。

Google 企業向けデスクトップのページ

企業向けGoogleデスクトップ検索は上記のページより入手できますが、導入するに当たっては、利用規約をよく確認しておき、該当の端末への導入が利用規約に触れるものでない事を確認してください。ざっと読む限り、非商用の使用に限定される点と再配布などが必要な場合などはGoogleから許可を得る必要があるようです。

導入はインストーラーベースなので比較的簡単に行えるのでNotesの部分を簡単に。。
ただ、見慣れないダイアログが出てくるだけで難しい設定などはほとんどいりません。

まず、導入後のNotes.ini を見ると以下のエントリが追加されていました。
AddinMenus=notesgdsplugin.dll
GDSIndexOnIdle=1
GDSInstallTimestamp=EEA4F8DCCBC8C901
GDSFilePath15=C:\Lotus\Notes\data\bookmark.nsf
GDSInstallInstructions=1


次に導入後Notesを起動すると以下のような画面が現れます。(クリックすると画像が拡大します)
Notes 起動時のメッセージ

プラグインが導入された事と、有効化の設定が追加で必要な事を示しています。
クライアントのメニューから[アクション]-[Google Desktop For Notes]を選択すると設定画面が表示されます。

その前に以下のような警告メッセージが出ます。(画像はクリックすると拡大します)
警告メッセージ

索引がNotesのセキュリティの管理下におかれないためセキュリティ上問題がないかを確認しています。このあとダイアログが表示されますが、以下のように索引するローカルのデータベースなどを指定できます。

設定ダイアログ

これでGoogleデスクトップ検索の索引の作成が終了すると、ローカルにあるNotesメールもデスクトップ検索をする事が可能になります。
 冗長な索引が作成されてしまう事になるし、Notesの全文検索で十分じゃないか、と思われる方も多いと思いますが、GoogleのUI でメール検索が出来るので検索速度は非常に速いです。特にサイズの大きなアーカイブなどは全文索引を削除してGoogleまかせにしてしまのがいいのかな、て思いました。

アンインストールも特に悩む事は無いと思いますが、一応ヘルプのリンクをつけておきます。
索引は消してくれると思いますが、Notes.ini は消してくれないかもしれないので、アンインストール後残っているようであれば手で消しておくといいと思います。

アンインストール: アンインストール方法

と言うわけで、興味がある方は是非一度評価してみてください。

panic.exe

2009年05月15日 01:04

 昔からあるツールなのでよく知っている方も多いと思いますがこのブログでは取り上げてなかったので取り上げておきます。

Utilities to crash client and server

NSDの動作確認やFault Recoveryのテストなどを行うときに効率よくサーバーをクラッシュさせる必要がある場合があります。

このようなときには冒頭のツールを使うと便利です。
各プラットフォームごとにビルドされたものがありますが使い方はどれも同じで、プログラムディレクトリに置いた後(UNIXプラットフォームの場合は適切なパーミッション設定も必要です)にコンソールから「load panic」を実行するとクラッシュさせる事が出来ます。

クライアントの場合は少し特殊で、crash.dllをプログラムディレクトリにコピーしたあとに以下のNotes.iniエントリを加えます。


AddInMenus=crash.dll

これでアクションメニューの下に「Crash Client」と言うメニューが出てくるので選択するとクラッシュさせる事が出来ます。

意図的にハングアップさせるようなテストがしたい場合にはもう少し複雑ですが、この場合は簡易な方法はデバッガでアタッチしてしまう事ではないかと思います。
UNIX 系ならgdbとdbx とかを使ってアタッチ出来ますし、Windowsならwindbgを導入してアタッチしてもよいのではないかと思います。
 デフォルトでデバッガが入っているUNIXと比べてWindowsだけ敷居が高く感じる方もおられるかもしれませんが、Windowsならコンソールの簡易編集の機能を利用してもいいかもしれません。ドミノコンソールの左上のアイコンを選択して、[編集]-[範囲指定]などを選んでドミノコンソールを選択するとEnterキーを押すまでコンソールセマフォが開放されなくなるため、サーバーがハングアップした状態を擬似的に作る事が出来ます。

普段はクラッシュもハングも見たくないと思いますが、だからこそテスト時には効率よく実施したいですよね。他にもよいアイディアのある方がいたら是非教えてください。



最新記事