8.5.1 FP2 がリリースされています

2010年03月27日 17:17

Lotus Notes/Domino 8.5.1 FP2がダウンロード可能になっています

リンクとかもここにまとまっているのでUSのサポートのブログページのリンクを付けておきます。

Notes/Domino 8.5.1 Fix Pack 2 is available (Notes From Lotus Support)


Download先のリンク一覧はここから確認できます。

Fix ListはRelease Noticeから確認できますが、クライアント周りのクラッシュなども修正が多く入っています。

個人的にはビューをShift+F9などで再構築するとカスタマイズの情報が消えてしまう問題があったのですが、この修正が含まれた事がうれしいな、て思っています。

SPR# PALT5N5SE7 - If a view setting is changed via View-Customization, the changes will not stay if Shift-F9 is used to rebuild the view. With this fix, view customization will remain after rebuilding a view. If the view design is changed, the view customization will not be saved and must be re-applied by the user. (Technote #1112923)

OSLoadString を使ってみよう

2010年03月21日 23:05

今日はC APIのサンプルとして、OSLoadString を使用したサンプルを呼んでみましょう。
過去の記事が参照したい方は以下のバックナンバーを見てみて下さい。


- バックナンバー -
1. OSLoadProgramを呼んでみるサンプル
2. OSLoadProgramのサンプルを理解する
3. C API はnnotes.dllから呼ばれている
4. 参照渡しか値渡しか
5. 型を変換する
6. 構造体を定義する
7. OSLoadString を使ってみよう

 以前にこのブログでも、Notesのエラーコードからエラーメッセージを得る方法として、Show Messageコマンドを使用して確認する方法を、この記事で紹介しましたが、このようにエラーメッセージからエラーコードを取得する場合、内部的にはOSLoadStringを呼び出します。

宣言などの詳細は今までと同じ考え方なので、C API のリファレンスを見て頂ければ分かると思いますが、今回は固定長のStringを扱うために、「String*256」のように宣言しています。エラーメッセージが必ずしも256文字で収まるとは限らないのですが、このようにして文字列の大きさがあいまいになるのを防いでいます。APIを呼び出す場合はこのような点は過剰なくらいに対応しておかないとすぐに不安定になってしまうので十分に気をつけてください。

次にエラーコードは、余計な値が含まれている場合があるので値をマスクする必要があるのですが、これはC APIでは、ERR() と言うマクロが用意されています。

#define ERR(x) ((STATUS) (x & ERR_MASK))

この処理をエミュレートするために、GetAPIError では以下の処理が加わっています。

MaskedErrCode = errCode And ERR_MASK


単体関数を呼び出す、と言う意味ではあまり進歩の無い例に見えるかも知れないですが,OSLoadString はAPIのエラーをハンドルする場合には必ず必要があるので、使用頻度は意外と高いのではないかと思います。


Declare Function OSLoadString Lib "nnotes.dll" (Byval hModule As Long, Byval StringCode As Long, Byval retBuffer As String, Byval BufferLength As Integer) As Integer
Const ERR_MASK = &H3fff

Sub Click(Source As Button)
HexErr = Inputbox("エラーコードを16進数で入力してください 例: 1A5")
errCode = Val("&H" & HexErr)
Msgbox GetAPIError(Str(errCode))
End Sub

Function GetAPIError(errCode As String) As String
Dim retBuffer As String*256
Dim Buflen As Integer
Dim ErrMsgLen As Integer
Dim StringLen As Long
Dim MaskedErrCode As Long
Dim resultStringLength As Integer

ErrMsgLen = OSLoadString(0, StringCode , retBuffer, Len(retBuffer)-1)
MaskedErrCode = errCode And ERR_MASK
resultStringLength = OSLoadString(0, MaskedErrCode, retBuffer, Len(retBuffer) - 1)
GetAPIError = retBuffer
End Function


以下の記事も参考にしてみてください。

OSLoadString を LotusScript から Call してみよう (Lunatic Sol)
Translating Notes API Errors (nsftools)

Wiki: AIXのインストールと各種設定について(英語)

2010年03月18日 00:44

Notes And Domino Wiki でこんな記事が紹介されていました。

Installing and configuring IBM Lotus Domino 8.5 on AIX

AIX版Dominoのインストールを詳しく紹介しているだけかな、と思ったのですが起動シェルやcrontabによる定期再起動、パッチの確認など細かい導入に関わる設定まで説明されていて参考になりました。

 一つ一つは必要に駆られて考えれば確かに分かりそうな話ですが、こういう話をまとめてある文書は無かったのでとても参考になりました。Wikiもどんどん充実していくといいですね。

Lotus Domino 8.5.1 FP1 IF1 (DAOS 用)が出ています

2010年03月15日 00:04

Lotus Domino 8.5.1 FP1 IF1 が出ていますのでお知らせしておきます。

Domino 8.5.1 Fix Pack 1 Interim Fix 1 (8.5.1 FP1 IF1) - DAOS Fixes

このIF1は8.5.1 FP2 にも含まれる予定ですが、DAOSを利用しているユーザーに対するCritical Fix を先行してリリースさせて頂いております。
8.5.1 で DAOS をご利用のお客様は一度内容について確認して頂けたらと思います。

Lotus Domino Designer 8.5 開発者ガイド

2010年03月11日 01:54

Lotus Domino Designer 8.5 開発者ガイドが発売されたみたいですね。
LotusDominoDesigner8.5開発者ガイド

大川さんのブログ でも紹介されていますが、レビュー時にTwitterでも「今度の開発者ガイドはすごい!」と言っていたのですが、それだけの内容をよく一冊に書けたなー、と言うくらい網羅性の高い内容になっています。

XPages、XML、ウィジット、Webサービスのような比較的新しい機能から、デバッグや各種設計要素の説明、サンプルなど非常に網羅性の高い内容になっていて、開発初心者の人も上級者の人も参考になる内容が入っていて目次を見るだけで楽しみです。

興味がある方は是非購入してみてください。(と言うか私もこれから購入です・・・・)


NSD: Process Memory Mapping (Windowsのみ)

2010年03月09日 01:34

(今日のトピックはプラットフォームに依存していないトピックも多いのですが主にWindowsを想定して書いています。UNIXプラットフォームをイメージすると多少変に聞こえるところがあるかもしれませんのでその点はご了承下さい)

共有メモリとかプロセスヒープとかスタックとか色々な種類のメモリがNotesに限らずプロセス内には存在する事が分かっている方は多いと思いますが、どれもスコープが違うだけで、1つのプロセスでは同じ仮想アドレス空間内に配置されます。たとえば仮想アドレス空間内では、1番地から5番地は共有メモリ、10番地から20番地はプロセスヒープ、のようになっているはずです。

NSDでは共有メモリとか色々ややこしいのが出てきますが、共有メモリはあれを含めてこれを含めないとかプロセスヒープとかもスタックは含まないとか、二つを足してもDLLやexeをロードしている領域は含まれなかったり分かりにくいですよね。全体としてはどういう風に配置されているか知りたいときにはどうすればいいのでしょうか?

Sysinternalsではこのような利用状況を把握するためにVMMAP と言うツールが提供されていますが、NSDでは、Process Memory Mapping と言うセクションにこれと同様の機能が提供されています。


NSD のProcess memory mapping から共有メモリを見ると以下のように表示されています。
Notes SMem と表示されているセクションが、mapped と言うType指定をされている事に着目して下さい。

59 00b60000 00b60000 4.2M COMMIT mapped -Crw-- 0 Notes shared mem:MMM
60 00f9f000 00000000 4.0K FREE ------- -C---- 0
61 00fa0000 00fa0000 980.0K COMMIT mapped -Crw-- 0 Notes SMem[1]
(略)
64 01120000 01120000 256.0K COMMIT mapped -Crw-- 0 Notes SMem[2]
65 01160000 01160000 256.0K COMMIT mapped -Crw-- 0 Notes SMem[3]
66 011a0000 011a0000 256.0K COMMIT mapped -Crw-- 0 Notes SMem[4]
67 011e0000 011e0000 256.0K COMMIT mapped -Crw-- 0 Notes SMem[5]
68 01220000 01220000 256.0K COMMIT mapped -Crw-- 0 Notes SMem[6]
(略)
333 084e0000 084e0000 980.0K COMMIT mapped -Crw-- 0 Notes SMem[30]

NSD の Shared Memory ではこの様子が以下のように出力されています。

Shared Memory:
TYPE : Count SIZE ALLOC FREE FRAG OVERHEAD %used %free
S-DPOOL: 30 32350292 29901108 2418644 0 47216 92% 7%
Overall: 30 32350292 29901108 2418644 0 47216 92% 7%

ここを見るとnServer のアドレス空間には nServer のイメージもロードされています。

50 00400000 00400000 4.0K COMMIT image -Cr--- 0 nSERVER.EXE
51 00401000 00400000 20.0K COMMIT image -Cr-x- 0 nSERVER.EXE (.text)
52 00406000 00400000 8.0K COMMIT image -Cr--- 0 nSERVER.EXE (.rdata)
53 00408000 00400000 4.0K COMMIT image -Crw-- 0 nSERVER.EXE (.data)
54 00409000 00400000 4.0K COMMIT image -Crw-c 0 nSERVER.EXE
55 0040a000 00400000 8.0K COMMIT image -Crw-- 0 nSERVER.EXE
56 0040c000 00400000 12.0K COMMIT image -Cr--- 0 nSERVER.EXE (.rsrc)


各スレッドのスタックのサイズも分かります。

Idx BaseAddr AlocBase Size State Type Prot Desc
---- -------- -------- ------ ------- ------ ------ ---------------
302 06c30000 06c30000 764.0K RESERVE private -C---- 0 thread 0cf0 stack (reserved)
303 06cef000 06c30000 4.0K COMMIT private GCrw-- 0 thread 0cf0 stack (guard)
304 06cf0000 06c30000 256.0K COMMIT private -Crw-- 0 thread 0cf0 stack

guardと言う領域まで延びるとAccess Violationを起こすのは何となく分かるのではないでしょうか。

このセクションは実際にNotesがメモリをどう使っているのかが直感的に分かるので、個人的には解析と言うよりは、Windowsプロセスのメモリの使い方を勉強するのに非常によく役に立ちました。


メモリの使用状況が多いときなどにはこんなセクションを見なくても、Shared、ヒープ、スタックなどを見ていった方が統計的な情報が得られるのでこのような情報は必要ないこともあるのですが、使用状況を詳細に把握したいときにはこのような情報も有益になるので、始めは興味本位でもよいので少しずつ見てみてください。

尚、最近のNSDではAIXでも似たようなセクションが表示されるようになりましたが、基本的にはWindowsのみの機能だと思ってください。

XPages入門

2010年03月04日 00:05

 来週くらいにはもうちょっと自分のサイト固有の話を載せようかな、て思っていますが今日はXPagesの技術情報についてお知らせです。


developerWorks: XPages入門

英語版ですが、Presentationもあります。
Presentation: Introduction to XPages Tutorial (Notes And Domino Wiki)
途中から始める人向けにやはり英語版ですが、各Exerciseの完成版もここから入手できます。


XPagesも Dojoのライブラリを使えるといよいよオープンな技術が使えるようになってくると思うのですが、こんな記事もあります。
deverloperWorks: XPagesでDojoウィジェットを利用する

僕もまだ全部は読めていないのですが、時間を見つけて勉強しようと思います。


最新記事