当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2009年12月25日金曜日

今年も終わりです・・・

なかなかネタが見つからないまま、今年も終わりを迎えようとしています。

ということで、これが今年最後の投稿になるでしょう。

昨年の年末では、ブログの総アクセス数が7,000前後だったことを考えると、
今年一年で、60,000以上のアクセスがあったという事です。
ノーツは古いとか、使いづらいとか言われつつも、これだけのアクセスがあるという事は
まだまだノーツは現役でいけると思っています。

新しい技術が出てきても、良いものは良い!と言いたいです。


ネタが少なくなってきても、必ず更新は続けていきます。
来年も是非、このブログ(と筆者の会社)をご愛顧くださいますよう、
よろしくお願いします。


では、良いお年をお迎えください。


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

弊社の製品紹介ページができました

過去に3回にわたって紹介した、弊社の取り扱い製品ですが、
やっと、HPに製品紹介ページができました。


お祝いしてくださる方は、下のボタンを押してやってください。
にほんブログ村 IT技術ブログへ

過去のブログ記事(下図参照)にもリンクを付けましたが、


せっかくなので、こちらに製品紹介ページのリンクを貼り付けておきます。
是非、ご覧いただいてお問い合わせいただければと思います。

株式会社エフの取り扱い製品

よろしくお願いします。


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年12月16日水曜日

8.5.1で変わったところ その4

久々の投稿です。なかなかネタが見つからずに苦労してました。
ということで、8.5.1の変わったところネタです。

ということで、久々のお願いです。
にほんブログ村 IT技術ブログへ
ポチッと押してください。


デザイナが大きく変わったという事は、8.5.1で変わったところ その2でお伝えしましたが、他にもありました。
下図を見てください。



これは、デザイナでスクリプトライブラリにLotusScriptを記述しているところです。
ここで、「Sub」ステートメントにマウスカーソルを合わせたところです。
すると、ポップアップの形で、ヘルプが表示されるのです。
構文なんかを忘れてしまったときは便利に使えますね。


ただ、筆者の環境では、Dimにカーソルを合わせると、なぜかエラーになり、ヘルプが表示されませんでした。
不具合なのか,筆者の環境に問題があるのかはまだ不明です。
情報をお持ちの方がいたら、コメントしていただけると助かります。





最近は、気温の上がり下がりが激しいですね。こんな時に体調は崩しやすいものです。
十分、注意してくださいね。

【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年11月30日月曜日

個人情報探査 for Lotus Domino

筆者の会社の製品紹介第3弾です。

【参考】
第一弾:DKS Plus for Lotus Domino Direct
第二弾:Office to PDF for Lotus Domino

では、いつものように、ポチッと押してください。
にほんブログ村 IT技術ブログへ


今回の製品は、
ノーツDBに添付されているファイルの中を探査して、そこに個人情報が含まれているかどうかをレポートする!
というものです。
製品名称は、『個人情報探査 for Lotus Domino』(仮)です。

【システム構成図】


【特徴】
  1. 探査するNotes DBを指定するだけ!
  2. 探査結果は、Notes DB単位を文書として保管可能!
  3. 探査結果から、添付ファイルがある文書を特定可能!
  4. 個人情報は「住所、氏名、電話番号、メールアドレス」から特定!
  5. 探査するNotes DBごとに探査の閾値を設定可能!



Notes/Domino導入当初は、Notes DBの目的が決められていて、整然と文書データが登録されていたかもしれません。
ですが、月日の経過とともに、Notes DBの中に色々な文書が登録されてしまって、収拾がつかない!
Notes DBをローカルレプリカさせたいけど、個人情報が含まれていると、持ち出しさせるのが危ないなぁ・・・
なんて言うときに、この製品で探査していただくと、すっきりとしますよ!


本製品について、詳しいことがお知りになりたい方、デモを見せて欲しいと言う方は、
筆者のアドレスか、もしくは筆者の会社までご連絡ください。
いつでもお伺いしますよ!!
※製品紹介ページは、こちら
2009年12月25日改修


※本製品は、クオリティ株式会社の個人情報探査エンジンを利用しています。
クオリティ株式会社のページへ


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年11月27日金曜日

8.5.1で変わったところ その3

8.5.1ネタの第三弾です。

今週末最後のお願いです。
にほんブログ村 IT技術ブログへ
ポチッと押してください。
※「にほんブログ村」総合ランキングで1万位以内に入りました!ありがとうございます!!(2009年11月25日 11:00時点)


今回はちょっとクレーム気味です。
ノーツクライアントやデザイナーでよく使うプロパティ。
こちらでの問題?です。

下図は、デザイナーでフォームを編集しているときの、「フォームプロパティ」ダイアログです。


8.5.1でも従来と同じような画面になっていますね。
昔からノーツに携わっている方にはなじみのあるダイアログでしょう。
フォームだけでなく、文字、表、ビュー、エージェントなど色々なところで活躍してくれました。

と、ここで・・・
他のプロパティ画面はどうなったのかなぁ?と調べていたら・・・
エージェントのプロパティの見え方が変わっているじゃないですか!
下図を見てください。これが8.5.1でのエージェントのプロパティです。


さらによく調べてみると、エージェントのタイプによって、プロパティの表示方法が変わることが分かりました。
従来のプロパティダイアログで表示されるもの
「式」「インポートされた Java」「シンプルアクション」
Eclipseベースのプロパティビューで表示されるもの
「Java」「LotusScript」

なんで、全部まとめて変更しないかなぁ。非常に中途半端です。
8.5.1で、LotusScriptは非常にコーディングしやすくなりましたが、従来のバージョンからの移行期であるとも考えられますね。
注意して使いましょう。

2009年11月25日水曜日

8.5.1で変わったところ その2

昨日に続いて、8.5.1ネタです。

ということで・・・
にほんブログ村 IT技術ブログへ
もう、恒例ですね。ポチッと押してください。


さて・・・今日はデザイナで変わったところを紹介します。

下図を見てください。


LotusScriptライブラリの編集画面です。
ノーツアプリケーションを作成した方なら分かるかと思いますが、がらっと変わってますね。

大きく見ると、以下の3点ですね。
1.現在カーソルがある行がはっきりと分かる。
2.エラーの箇所がはっきりと示される。
3.Function関数なのか、Sub関数なのか、オブジェクトの種別が明確になっている。

カーソル行は、以前のバージョンでは画面の右下にひっそりと書いてあるだけでしたが、行全体がハイライトされることによって、分かりやすくなってます。
エラーの箇所も、以前のバージョンでは、赤字で表示されていましたが、場合によっては、赤字にならなかったりして、どこがエラーなんだろう?と分からないことも多々あったかと思います。
さらに、オブジェクトの種別ですが、今まではどんなものもすべて同じアイコンでした。
これが内容によって、アイコンが変わってくれるので、どんなオブジェクトを生成したのかがはっきり分かって良いですね。
そして、今までは、Classステートメントは(Declarations)の中に表示されていたのですが、これが独立して表示されるようになりました。

これなら開発者用のエディタとして、十分使いこなしていくことができそうですね。



この記事を読んだ貴方!すぐに8.5.1にバージョンアップしましょう!
お問い合わせは、筆者の会社まで!!


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年11月24日火曜日

8.5.1で変わったところ その1

気がついたら、8.5.1の日本語版がダウンロードできますねで書いたとおり、8.5.1をダウンロードして、アップグレードしてみました。

その結果、細かいところに変化があるのが分かりました。
今日は、そのうちの1つを紹介します(と言ってもたいしたことは書けません)。

その前に!
にほんブログ村 IT技術ブログへ
今日もこちらのクリックをよろしく!貴方のクリックがノーツを世に広めます(笑)




下図を見てください。ドミノディレクトリのユーザビューです。
今までは、ローマ字のユーザ名しか表示していませんでしたが、8.5.1では、日本語のユーザ名も表示されてます。



メールの宛先画面では、このような表示も可能でしたが、ついに?通常のビューでも実現されたと言うことです。

でも・・・そんなに嬉しいかなぁ?
どうなんでしょう?


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年11月20日金曜日

Office to PDF for Lotus Domino

筆者の所属している会社で、ちょっとした製品を作成してみました。
今日はその製品の紹介です。

その前に、恒例のお願いです!
にほんブログ村 IT技術ブログへ
今日もこちらをクリックしてから読んでくださいね。





製品名は「Office to PDF for Lotus Domino」(仮)です。
Officeドキュメント(Word、Excel、PowerPoint)をPDFに変換するサーバ製品です。

【システム構成図】


【特徴】
  1. クライアントに専用ドライバは不要。
  2. 使い方は、簡単!ファイルを添付してメールするだけ!
  3. PDFファイルにすかし(会社名及びメールアドレス)を印刷することが可能!
  4. e-mailアドレスを設定することにより、Lotus Notesクライアント以外からも利用可能!
  5. ログを採取しているので、誰がPDFに変換したのか、管理も可能!


ただ、PDFに変換するだけではなく、「強制的にすかしを入れる」というところがポイントです。

・誰が作成したPDFなのか、一目で分かるようにしたい。
・誰がPDFへの変換を行ったのか、記録を確認したい。
・PDF変換は全社で統一したものを利用したい。
・フリーのドライバを使われるのはコンプライアンス上、困る。
などと言うときに、本製品をお使いいただければ、解消されます。

※本製品の稼働には、Lotus Domino、Microsoft Office、Zeon DocuCom PDF Serverが必要になります。


本製品について、詳しいことがお知りになりたい方は、筆者のアドレスか、
もしくは筆者の会社までご連絡ください。
※製品紹介ページは、こちら
2009年12月25日改修


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

気がついたら、8.5.1の日本語版がダウンロードできますね

IBM Lotus Notes/Domino 8.5.1 および IBM Lotus Enterprise Integrator 8.5.1 の発表の中にあるリンクにひっそりと書いてあったので気がつきませんでしたが・・・
(↑こんなことを書いてますが、実は、先日参加した、XPagesの講習会で使っていたNotes/Dominoが8.5.1日本語版だったので、知ったのですよ。)

すでにLotus Notes/Domino 8.5.1の日本語版がダウンロード可能になっていますね。


残念ながらフリートライアルは8.5のようですが、パスポートアドバンテージに加入されている方は、ダウンロードして使ってみましょう。

2009年11月16日月曜日

環境設定文書の作成方法

今回は、筆者がよく使う手法の紹介です。

その前に、恒例のお願いです!
にほんブログ村 IT技術ブログへ
今日もこちらをクリックしてから読んでくださいね。

ノーツDBに動作を設定する文書を作りたい場合、プロフィール文書を使うと思います。
以前は筆者もプロフィール文書を使っていましたが、
内容の確認が難しい(どういう状態にあるのか、いちいち画面を開かないと確認できない等)ので、今は余り使っていません。

その代わり、普通の文書を作成して使っています。
プロフィール文書は、ノーツDBに1つだけ作成できるという特性を持っているのですが、
普通の文書はそうではありません。

そこで、1つしか作成できないように工夫する必要があります。

筆者は以下の手順で行っています。
1.環境設定文書用のフォームを作成する
2.環境設定文書用のビューを作成する
3.ビューに以下のアクションを追加する
----------------------------------------------------------
tmp := @DbColumn("Notes":"NoCache";"";"Config_V";1);
@If(@IsError(tmp)|tmp="";@Command([Compose];"Config_F");@Command([EditDocument]))
----------------------------------------------------------

これで、このボタンをクリックすると、環境設定文書を1つだけ作成できるようになります。


環境設定文書だけではなく、普通に1文書しか作成させたくない。と言う場合に利用できます。
お試しあれ。


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年11月11日水曜日

ノーツDBのタイトルが設定されないことがある

さて、今日はIBMさんのサイトからの情報ネタです。
筆者もはまったので、お知らせしておきます。

その前に・・・
にほんブログ村 IT技術ブログへ
今日もこちらをクリックしてから読んでくださいね。

データベースのファイル名を変えてサーバーにコピーするとデータベースタイトルが設定されない <= これ、バグだったんですね。

ノーツDB(8.0からはノーツアプリケーションと言うんだけど、しっくりこないよね)を作成する際、テンプレート化していたんですね。それでバックアップとテストを兼ねて、ノーツDBをコピーしたら、ノーツDBタイトルが空っぽになってる。
あれ?おかしいな、と思って、何度か試したけど結果は同じ。ノーツDBタイトルは設定されない。

何かやってはいけないことでもしたかな?と思って、テンプレートから設計を引き継いで、ノーツDBを作成したら、成功したので、「ま、いっか。」と思ってました。

テンプレートを作ってノーツDBを開発している方は気をつけましょう。

2009年11月10日火曜日

気がついたら6万突破してた・・・

最近、めっきり記事を書かなくなった筆者ですが・・・

気がついたら、累計6万アクセスを突破してましたね。
すごいですね。
アクセスしてくる方々も多種多様です。
ノーツのベンダーさんから、エンドユーザの方まで大勢の方に読んでもらっています。

恒例の?前回からxヶ月ですが、5万アクセス到達!!が9/11ですから、約2ヶ月ですね。
さすがに、更新を怠ると、間が伸びますね。

読者の皆さん、しっかりしているということで・・・

ただし!読んでるだけではいけません。
にほんブログ村 IT技術ブログへ
これをクリックして、Lotus Notes/Dominoをもう一度広めましょう。

知らない人にも読んでもらうことが、Lotus Notes/Dominoを広める一つの方法だと思いますので(なぁんて)。

では、今後ともよろしくお願いしますね。

2009年11月4日水曜日

文書から別の文書を開く

今日のは「忘れてた・・・」シリーズです。
以前、プログラミングして、ここでは使えないんだな。と認識していたのですが、いつものサンプルDBに登録するのを忘れていて、すっかり忘れていたのですが・・・

文書を開いていて、そこから別の文書を開くというものです。
通常、文書リンクアイコンがあれば、それをクリックすることで別の文書を開くことができます。
しかし、文書リンクではなく、文書のUNIDしか情報を持っていない場合はどうすればよいのでしょうか?

文書UNIDから文書を開く方法として、真っ先に思い浮かぶのは
@Command([OpenDocument])
だと思います。

しかし!
デザイナーヘルプをよく見ると・・・
「データベースが文書ビューレベルで開いていて、そのビューに開きたい文書が含まれていなければなりません。」
となっています。
つまり、このコマンドはビュー上でしか動作しないのです。

これでは、文書から別の文書を開くと言う方法には使えません。


そこで、考えるのがLotusScriptを使って、どうにかできないか?ということです。
文書を開くには、ComposeDocumentもしくはEditDocumentを使います。
が、ComposeDocumentは新規文書の作成なので、ここでは使えません。
となると、EditDocumentです。
しかし、EditDocumentは、開く文書が特定できている必要があります。

今、分かっているのは開きたい文書のUNIDです。
ということで、開きたい文書を特定します。
開きたい文書は、同一DB内にあるとすれば、
NotesDatabase#GetDocumentByUNIDを使って、文書を特定することができます。

後は、この文書をEditDocumentで開くだけです。
簡単にできますね。


以下は、これを実現したサンプルです。
サンプルなので、UNIDはコードの中に埋め込んであります。
実際に使うときは、NotesUIDocument#FieldGetTextメソッドを使って取り出してください。
Sub Click(Source As Button)
 Dim unid As String
 Dim session As New NotesSession
 Dim curdb As NotesDatabase
 Dim opendoc As NotesDocument
 Dim uiws As New NotesUIWorkspace
 Dim uidoc As NotesUIDocument
 
 unid = "1234567890abcdef1234567890abcdef"
 Set curdb = session.CurrentDatabase
 Set opendoc = curdb.GetDocumentByUNID( unid )
 
 Set uidoc = uiws.EditDocument( False, opendoc, True, , False, True )
End Sub


文書リンクを埋め込むにはリッチテキストフィールドが必要ですが、この方法なら
テキストフィールドを用意しておくだけで良いので、扱いが容易になります。

知らなかった人はお試しあれ。

2009年10月30日金曜日

LotusScriptで実行したエージェントは・・・

昨日に続いて、今日も「今まで知らなかった・・・」シリーズです。

プログラムからエージェントを実行する場合、皆さんはどのようにしているでしょうか?

@コマンドの
@Command([ToolsRunMacro];"エージェント名")
@Command([RunAgent];"エージェント名")
を使うか、もしくは、
LotusScriptのNotesAgentクラスのRunメソッド(RunOnServerメソッド)
を使うかのいずれかでしょう。


一見、@コマンドかLotusScriptかの違いしかないように感じますが、実はそうではなかったのです!

実は、LotusScriptのNotesAgentクラスRunメソッドでは、できないことがあるのです。

デザイナーヘルプを良く読むと分かるのですが・・・
MessageBox(Msgbox)やInputboxなど、ユーザからの入力を待つような関数が実行出来ないのです。

ちなみにヘルプには『ユーザーは呼び出されたエージェントと直接対話できません。ユーザーの出力は Lotus Domino log に保存されます。』と書いてあります。
※クライアントからエージェントを実行した場合、「Lotus Domino log」というのは、ローカルPCにある「log.nsf」を指すので、そこに記録されます。

エージェントを間接的に実行するような場合は、この点に注意しましょう。
@コマンドや@関数も積極的に利用しましょう!という良い教訓ですね?

2009年10月29日木曜日

LSSファイルのインクルード

当たり前というか、ヘルプを見れば書いてあるというか。
でも、筆者は今日、この瞬間まで知らなかったので、忘れないように書いておきます。

スクリプトライブラリにプログラムを記述する際、色々なプログラムで利用するような定数はあらかじめ、LSSファイルにまとめておいて、そのファイルをインクルードするというような事があると思います。
筆者の場合、ノーツDBの設計を隠す場合にも使っていますが・・・

さて、LSSファイルをインクルードする方法ですが、
%include "LSSファイル名"
とします。
この時、LSSファイルは、ノーツのプログラムディレクトリに存在する必要があります。

これだと、LSSファイルをたくさん作ると、プログラムディレクトリがごちゃごちゃしてしまいますね。
PCの移行やノーツのバージョンアップなどで、ファイルがどこかに行ってしまうとも限りません。

実は、%include命令のLSSファイルは、「相対パス指定」「絶対パス指定」という書き方もできるのです。

1.相対パス指定とは
 ルートパスをノーツのプログラムディレクトリとして、そこからファイルを検索する方法
 ノーツプログラムが「c:\lotus\notes」の場合
 %include "lss\test1.lss"
 は、「c:\lotus\notes\lss\test1.lss」というファイルを利用します。 

2.絶対パス指定とは
 ドライブ名からパスを指定する方法
 %include "c:\miyolss\test1.lss"
 は、「c:\miyolss\test1.lss」というファイルを利用します。


ということで、フォルダ管理をうまく活用して、LSSファイルの達人になりましょう。

2009年10月27日火曜日

エージェントを有効化する

病床からの復帰第一弾です。

NotesDBに作成したスケジュールエージェント(ヘルプでは定期エージェントとなってます)は、LotusScriptで有効化/無効化を切り替えることができます。

【サンプルソース】
Sub Click(Source As Button)
 Dim session As New NotesSession
 Dim db As NotesDatabase
 Dim agent As NotesAgent
 
 'PDF変換エージェントを取得する
 Set db = session.CurrentDatabase
 Set agent = db.GetAgent( "エージェント名" )
 
 'エージェントを有効化して保存する
 agent.IsEnabled = True
 Call agent.Save()
End Sub

とても簡単ですね。
ノーツDBを取得して、エージェントを取得して、IsEnabledプロパティをTrueにして、エージェントを保存するだけ。

これはヘルプにもあるとおり、「定期エージェント」でのみ有効です。
実際のエージェント画面を見てもらえば分かりますが、「有効」「無効」を示すアイコンがあるエージェントでだけ、使えるんですね。


ところが・・・
定期エージェントにも関わらず、このサンプルが実行出来ない(つまりは、IsEnabledプロパティの変更が有効にならない)場合があります。

下図を見てください。エージェントの設定画面です。



ここにあるように、「エージェントが有効になったときにサーバーを指定」のチェックがついていると、NotesAgentクラスのIsEnabledプロパティをTrueにしても保存できないのです。


これに対する解決策は2つあります。

1.「エージェントが有効になったときにサーバーを指定」のチェックを外しておく。
 そうすれば、問題なくエージェントが保存できます。

2.NotesAgentクラスのServerNameプロパティを一緒に設定する
 NotesAgentクラスのIsEnabledプロパティをTrueにした後、ServerNameプロパティも一緒に設定しておくことで、エージェントが保存できるようになります。
 サーバ名は正しいものを設定しないと、このエージェントそのものが動かなくなりますので、注意が必要です。
 通常は、DBがあるサーバで動かすでしょうから、
 NotesSession.CurrentDatabase.Serverで取得すれば良いでしょう。



ということで、エージェントの活用方法についてでした。


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年10月26日月曜日

Lotus夜Day2009

すみません。

諸事情により、Lotus夜Day2009に参加することができませんでした。
代わりに?筆者の所属する会社の社長に参加していただきました。

次の機会には必ず、参加いたしますので、皆様にはその時にお会いしましょう。

下の写真は社長がGet!してきた戦利品です。
シャツは着ると、「あぁ、ノーツやってて良かったぁ」という気分になりますね。


このブログのネタもまた少し増えてきた感じなので、様子を見ながら記事を書いていきます。
よろしくお願いします。


追伸
時々、直接ご質問をいただきますが、そう言った事への回答はいたしておりません。
些細なことでも筆者の会社を通じていただければ幸いです。

【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年10月15日木曜日

このブログの訪問者って?Part2

久しぶりの投稿です。

が!Notes関連の記事ではないです。ごめんなさい。
随分前に、このブログの訪問者って?と言う記事を書いて、その中で、このブログへの訪問者の年齢別分布をお見せしました。

今回は、男女比というものが判明したので、それを掲載します。


・・・どちらが男性とは書いてませんが、色的に見ても数的に見ても分かりますよね。
女性に人気がないなぁ。
ノーツの技術者は女性が少ないのかしら?知り合いには女性もいるんですがね。
肝心なことは書かないから、嫌がられているのかしら?

真相は分かりませんが・・・
筆者のブログから言えるのは、「ノーツに携わっているのは、40前後のおっさんが多い」ということですね。

うんうんとうなずかないで、若い人や女性にも広めていきましょうね。



あ!筆者も来週行われるLotus夜Dayには参加しますよ。たくさん情報交換しましょうね。
勝手に引用(ごめんなさい)→Lotus夜Day 2009 ~祝!!Lotus Notes 20歳(はたち)やでぇ~ 開催案内






そういえば、デザイナが無償になるんですね。個人的には嬉しさと悲しさ半々かな?
DBの改修のお仕事が減っちゃうのかなぁ・・・なんて。
それとも、「作ったんだけど、どう改修して良いか分からないから、お願い!」
なんて仕事が増えるんでしょうか?
いずれにしても、ノーツが盛り上がれば良し!としましょう。

2009年10月5日月曜日

アウトラインのラベル

久しぶりの投稿です。サボっていたわけではありません。ホントにネタがなかったんです。

ということで、小ネタを発見したので、その報告です。
もしかしたら知っている方も入れませんが・・・

ノーツDBの設計でアウトラインを作成する方は多いかと思います。
(昔はナビゲータでしたねぇ)

このアウトライン。
ビューを表示させたり、フォームを表示させたり、@関数を書いて実行させたりできます。
その時、画面上に表示するラベルを設定できるのですが、ここにも@関数を書くことができるんですね。
下図を見てください。
通常は、アウトラインプロパティ画面の赤丸で囲んだ箇所にラベルを記述します。
すると、下部にあるプログラムペインにその内容が表示されます。
ところが、このプログラムペインをよ~く見てください。
青丸で囲んだ場所ですね。グレーアウトされてはいますが、「式」と書いてあります。

ここに@関数を書いてみると、なんと実行されるんですね。
ここで、注意して欲しいことがあります。
@関数は、必ず、プログラムペインに記述してください。
プロパティ画面のラベル欄に書いても無効になります。

ちなみに、ラベルに今日の日付を表示させようとして@Today関数を埋め込んだのが下図です。
アウトラインプロパティ画面のラベル欄は「計算結果」となっていますね。


下図は、上で作成したアウトラインをページに埋め込んで、それを表示したものです。
確かに今日の日付が表示されています。


これを活用すると、1つのアウトラインで、非表示式を使うことなく、複数の属性を持たせることができますね。

是非、試してみてください。


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年9月14日月曜日

プロフィール文書が存在しているか否か その2

プロフィール文書が存在しているか否かでは、作成日と更新日、最終アクセス日を用いて、プロフィール文書がすでに存在しているかどうかのサンプルを書きました。

その中で、haruさんから、NotesDocumentクラスのHasItemを使ってはどうか?というコメントをいただいたので、試してみました。

サンプルはこんな感じです。
(前略)
set prodoc = db.GetProfileDocument( "ProfileForm" )
If Not ( prodoc.HasItem( "フィールド名" ) ) Then
 'プロフィール文書が存在しない場合の処理
End If
(後略)

結果、正しく動作しますね。

こちらの方が分かりやすいですね。ただ、プロフィール文書のフィールド名に依存してしまうので、汎用的ではなくなってしまいます。
自社で活用される場合、プロフィール文書のフィールド名をある程度共通化しておくと、便利に使えるのではないでしょうか。

2009年9月11日金曜日

5万アクセス到達!!

ついに5万アクセスを超えました。
すごいですねぇ。
4万アクセス!の記事を書いてから、およそ1ヶ月半ですね。
8月は夏ばて?で記事がアップ出来ていなかったというのに、このアクセス数。

なんなんでしょう?怖いくらいですね。
記事のアップがあまりにもないと、そのうちお叱りを受けるんじゃないかと・・・


まだまだノーツは奥が深いところがあるので、そう言ったところを調査して、記事をアップするようにしますので、これからも見てくださいね。



そうそう。ランキングサイトへの協力も忘れないでね。

2009年9月10日木曜日

プロフィール文書が存在しているか否か

ノーツDBの設定情報を格納するものとして、プロフィール文書を使っている方は多いのではないだろうか?

プロフィール文書は、特殊な文書で普通の文書と同じように扱うことはできない。
@コマンドで呼び出す場合、@Command([EditProfile])を使う必要があるし、
LotusScriptの場合、NotesDocumentクラスのGetProfileDocumentメソッドを使う必要がある。

@コマンドの場合、プロフィール文書用のフォームがノーツDBに存在している必要があるが、
LotusScriptの場合、そのフォームがなくても動作してしまうところがすごい。
(NotesDocumentクラスがバックエンドなので、仮想のフォームを設定できるため)


さて、ではプロフィール文書がすでに作成されているかどうかをLotusScriptで調べることは可能であるのか?
通常の文書であれば、NotesDocumentクラスのIsNewNoteプロパティであったり、NotesUIDocumentクラスのIsNewDocプロパティで調べることもできるし、
もしくはNoteIDが0になっている場合、ということでも判断できる(UNIDは、仮で割り当てられるので、判断できない)。

実は、プロフィール文書では、上記のいずれも利用できないのだ。
GetProfileDocumentメソッドはNotesDocumentクラスのものなので、NotesUIDocumentクラスのIsNewDocプロパティはそもそも利用できないし、NotesDocumentクラスのIsNewNotesプロパティもFalseを返すのだ。
さらには、NoteIDも0以外の値を返す始末。

うーん・・・プロフィール文書、恐るべし。

ここで諦めてはもったいない。なんとか判断する方法はないだろうか?


ということで、ちょっと強引だが、次の方法を考えてみた。
CreatedプロパティとLastModifiedプロパティ、LastAccessedプロパティ、この3つがいずれも同じ日付、時間を指していたら?
それは、作成されてから、一度も更新されておらず、なおかつ、誰も編集モードで開いていない。
ということは、新規作成の状態。つまりは今までは存在しなかったのではないか?
となる。

サンプルを書くと、こんな感じ?


(前略)
set prodoc = db.GetProfileDocument( "ProfileForm" )
if ( prodoc.Created = prodoc.LastModified ) and ( prodoc.LastModified = prodoc.LastAccessed ) then
 Msgbox "プロフィール文書を新規に作成します"
End If
(後略)

どうだろう?


他に、良い方法がある方は教えて欲しい。


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年9月9日水曜日

3つの変数を比較する

当たり前と言えば当たり前なんだけど・・・
3つの変数を比較する方法です。

a、b、cという3つの変数があったとして、全部が同じかどうかを比較するには
どうすればよいか?

If a = b then
If a = c then
Msgbox "3つとも同じ値です", MB_OK, "3つの変数の比較"
End If
Else
Msgbox "どれかの値が違っています。", MB_OK, "3つの変数の比較"
End If

この場合、aとcが違う場合、なんのメッセージも表示されずに終わってしまいます。
つまり、不完全だということです。

If ( a = b ) and ( a = c ) then
Msgbox "3つとも同じ値です", MB_OK, "3つの変数の比較"
Else
Msgbox "どれかの値が違っています。", MB_OK, "3つの変数の比較"
End If

これなら、最初にa、b、cの値を比較するので、大丈夫ですね。


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

Working Smarter Forum 2009に行ってきました。

昨日に開催されたWorking Smarter Forum 2009に行ってきました。

さて、基調講演でちらっとお話しがありましたが、参加申込者が約1,500名ということでした。
今年も盛況だったようですね。
出展会場には、おなじみの会社の他、今年初めて出展する会社も何社かあったようです。
セッションをずっと聴いていると、なかなか出展会場を回る時間が取れないのが残念です。

何社かは、興味深い所がありましたので、詳しい話を聞いてみたいですね。


今年もノベルティをゲットしました。
アンケートに答えるともらえるLotus特製ブックカバーと、スタンプラリー完成(5個押印)でもらえる、ドライバーキットですね。


こちらは、出展各社のノベルティです。
チームスタジオ、アイ・ティ・フロンティア、トレンドマイクロ、ネスコ(敬称略)からいただきました。



そういえば、すでにセッションの資料ダウンロードができるそうです。
セッションを聴けなかった方は、是非ダウンロードしてみてください(別にIBMの回し者ではありません)。
こちらから


筆者の会社も、来年辺りは、何かしら出展できるように頑張らないといけないですね。

2009年8月18日火曜日

文書を新規ウィンドウで表示する

ビューで文書を選択した状態で、マウスの右クリックをすると、ポップアップメニューがひらくが、その中に「新規ウィンドウで開く」というのがある(下図参照)。



これを実現する@コマンドが@Command([OpenInNewWindow])である。

ヘルプには何も書いてないが、複数文書選択しても意味がない。
カーソルが当たっている場所の文書だけが対象になる。

こちらの思惑としては、選択した文書の数だけウィンドウが開いてくれるのかなぁ。なんて・・・
まぁ、1万文書選択されたら、それだけのウィンドウが開くのか?なんてことを考えれば当たり前とも言えるが・・・

2009年8月13日木曜日

プロンプト表示その2

で、Messagebox関数の使い方について触れたが、この時は、Messagebox関数の戻り値としてどのボタンがクリックされたかをチェックするものだった。

今回は、Messageboxの見栄えを変更するための、定数を紹介する。
といっても、lsconst.lssをインクルードするのは同じ。
後は、Messagebox関数のオプションにMB_xxxxという値を設定するだけだ。

サンプルは、このオプション定数を使って、色々なダイアログを表示しているものだ。
どのような画面が表示されるかは、実際に実行して確認してみてほしい。


------------------------------------------------------------------------
%include "lsconst.lss"

Sub Click(Source As Button)
Messagebox "スクリプトで記述すると、色々なタイプのメッセージが表示できます。", MB_OK, "タイトル"
Messagebox "ダイアログに表示するアイコンも変化させられます。", MB_OK + MB_ICONEXCLAMATION, "タイトル"
Messagebox "ボタンの種類も変更できます。", MB_YESNOCANCEL, "タイトル"
Messagebox "アイコンとボタンの組み合わせも可能です。", MB_OKCANCEL + MB_ICONQUESTION, "タイトル"
End Sub


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年8月12日水曜日

ハッシュ関数とベリファイ関数

ハッシュパスワードで、@関数のハッシュパスワードについては、サンプルを掲載したが、Lotus Scriptのサンプルは掲載していなかった。

ということで?、Lotus Scriptでのサンプルを載せる。

2回文字列を入力して、それぞれのハッシュ化内容が正しいかどうかを検証するというものだ。

ハッシュしたものだけをどこかに格納しておき、別に入力した文字列とベリファイするようにすれば、パスワードとして使えるだろう。
各自で、改造してみて欲しい。

---------------------------------------------------------------------------------------------
Sub Click(Source As Button)
Dim session As New NotesSession
Dim inputData As String 'ハッシュ化する文字列
Dim hashData As String 'ハッシュされた文字列
Dim confirmData As String '確認用文字列
Dim ret As Boolean 'ハッシュのベリファイ結果

' 文字列の入力
inputData = Inputbox( "文字列を入力してください。", "ハッシュ関数の確認" )
If inputData = "" Then Exit Sub

' 入力文字列のハッシュ化
hashData = session.HashPassword( inputData )

'確認用文字列の入力
confirmData = Inputbox( "確認用文字列を入力してください。", "ハッシュ関数の確認" )

'ハッシュ化文字列とのベリファイ
ret = session.VerifyPassword( confirmData, hashData )

'結果発表
Msgbox _
"入力文字列:" & Chr$(9) & inputData & Chr$(10) & _
"確認用文字列:" & Chr$(9) & confirmData & Chr$(10) & _
"ベリファイ結果:" & Chr$(9) & ret, _
MB_OK + MB_ICONINFORMATION, "ハッシュ関数とベリファイ関数"
End Sub


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年8月5日水曜日

IBM Working Smarter Forum 2009

忘れていましたが・・・IBM Working Smarter Forum 2009 - Japanに出ているように、9/8に赤坂プリンスホテル(大阪は、9/11に帝国ホテル)Working Smarter Forum 2009が開催されます。

今まで、LotusDayと呼ばれていたイベントですね。


筆者はすでに参加申し込み済みです。
例年、大勢の方がいらっしゃるようなので、できれば事前に申し込みをしておきましょう!
まだしてない。と言う方はこの記事を読み終わったら、すぐに登録しましょうね。

筆者は今年は、出展とかはしないので、会場をブラブラとしています。
プロフィールの似顔絵に似た奴に出くわしたら、一言声を掛けてやってください。

出展者の皆様も、見かけても逃げないでくださいね。

2009年7月27日月曜日

ツールバーから「Notesの終了」が消えた!?

些細なことだが、筆者は悲しかったのと困ったので、書いておく。

ノーツにはツールバー(昔のバージョンでは、スマートアイコンと呼んでいた)がある。
このツールバー、標準のまま使うのではなく、カスタマイズして使うと結構便利になるので、重宝していた。

筆者がよくカスタマイズするツールバーは以下のもの(画面はLotus Notes 7.0のものを抜粋)。
・選択文書を既読に
・選択文書を未読に
・形式を選択して貼り付け
・データベースを開く
・標準
・Lotus Notesの終了
・表のプロパティ
・文字のプロパティ


これらを既存のツールバーにセットして使っていたのだが、
ノーツ8.5では、[Lotus Notesの終了]がなくなっている。

なんで?
@Command([ExitNotes])はなくなってないし、動くよね?
他に何か不都合でもあったの?

他にも全文検索の検索バーを表示してくれる[検索]もなくなってるし・・・

何、この微妙な変更は?
ちゃんと説明して欲しいっていうか、復活させろ!


特に、[検索]はヘルプDBで重宝して使ってるのだが(ヘルプDBは、起動時に全文検索のバーが表示しないように設計されているので、ツールバーに[検索]をセットして、強引に表示するようにしてました)、ツールバーのカスタマイズでも変更できない!→@Command([ViewShowSearchBar])のアイコンを追加して、保存すると追加されたものが消えてしまう。

これは、もうバグでしょ!?非道いよ!!


仕方がないので、筆者はヘルプDBの設計を変更して、全文検索のバーの非表示をコメントアウトしました。

2009年7月23日木曜日

16進数を10進数に変換する関数を自作してみた

x進数を10進数に変換する関数で16進数を10進数に変換する関数があることを紹介した。

しかし、ないものだと思っていたので、自作してみた。
さらにせっかくなので、関数化してみた。
もっと綺麗に書けるかもしれないが、やっつけだったので勘弁して欲しい(汗)。


===========================================================

Function HexToDec( HexStr As String, DecLong As Long ) As Boolean
'--------------------------------------------
' 【16進数から10進数へ変換する関数】
'
' 引数: HexStr 16進文字[Input]
' DecLong 10進数[Output]
' 戻り値: True 成功
' False 失敗
' 作成者: 御代 政彦
' 作成日: 2009/07/22
' バージョン: 1.0
'--------------------------------------------
On Error Goto ErrProc

Dim HexLen As Integer '16進数の桁数
Dim HexInt As Integer '16進数の各桁を数値にしたもの
Dim i As Integer 'カウンタ

'16進数の桁数を取得する
HexLen = Len( HexStr )

'16進数の桁数分ループする
For i = 1 To HexLen
'各桁を数値に変換する
HexInt = Fto15( Mid( HexStr, HexLen + 1 - i, 1 ) )
If HexInt = -1 Then
HexToDec = False
Exit Function
End If

'桁数に16のべき乗を書けたものを累積していく
DecLong = DecLong + HexInt * ( 16 ^ ( i - 1 ) )
Next

HexToDec = True
Exit Function

ErrProc:
HexToDec = False
Exit Function
End Function

Function Fto15( HexStr As String ) As Integer
Fto15 = -1
If HexStr = "0" Then
Fto15 = 0
End If
If HexStr = "1" Then
Fto15 = 1
End If
If HexStr = "2" Then
Fto15 = 2
End If
If HexStr = "3" Then
Fto15 = 3
End If
If HexStr = "4" Then
Fto15 = 4
End If
If HexStr = "5" Then
Fto15 = 5
End If
If HexStr = "6" Then
Fto15 = 6
End If
If HexStr = "7" Then
Fto15 = 7
End If
If HexStr = "8" Then
Fto15 = 8
End If
If HexStr = "9" Then
Fto15 = 9
End If
If HexStr = "a" Then
Fto15 = 10
End If
If HexStr = "a" Then
Fto15 = 10
End If
If HexStr = "b" Then
Fto15 = 11
End If
If HexStr = "c" Then
Fto15 = 12
End If
If HexStr = "d" Then
Fto15 = 13
End If
If HexStr = "e" Then
Fto15 = 14
End If
If HexStr = "f" Then
Fto15 = 15
End If
End Function

====================================================

また、この関数を利用したサンプルコードを載せるので、どのように使うのかを確認して欲しい。

Sub Click(Source As Button)
Dim inp As String '16進文字列
Dim ret As Long '10進数
Const MSGTITLE = "16進数から10進数への変換"

inp = Inputbox( "8桁以内の、「0-F」でできた文字列を入力してください。", MSGTITLE, "0" )
ret = 0

'入力チェック
If inp = "" Then
Msgbox _
"キャンセルされたので、処理を中止します。", _
MB_OK + MB_ICONEXCLAMATION, MSGTITLE
Exit Sub
End If

If HexToDec( inp, ret ) Then
Msgbox _
"16進数: " & Chr$(9) & inp & Chr$(10) & _
"10進数: " & Chr$(9) & Format( Cstr(ret), "#,###" ), _
MB_OK + MB_ICONINFORMATION, MSGTITLE
Else
Msgbox _
"変換に失敗しました。", _
MB_OK + MB_ICONSTOP, MSGTITLE
End If
End Sub




【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2009年7月22日水曜日

x進数を10進数に変換する関数

数値をx進数に変換してみるの中で、10進数に変換する関数はない。と書きましたが・・・

ありました。

Val関数を使います。
元々は、文字列を数値にする関数なのですが、
特別な記号を使うことで、16進数や2進数を10進数に変換することができるのです。
特殊な記号とは、ヘルプにも書いてありますが、
&h及び&です。
「&h文字列&」というように、&hと&で囲うと間の文字列が16進数として判断されます。
&hの代わりに、&oや&bを使うとそれぞれ8進数、2進数となります。


サンプルは16進数を10進数に変換するものです。
応用して、2進数を10進数に変換するものを作ってみてください。


------------------------------------------------------------
Sub Click(Source As Button)
Dim inp As String
inp = Inputbox( "16進数を入力してみてください", "16進数を10進数に変換" )

Msgbox Format( Cstr( Val( "&h" & inp & "&" ) ), "#,###" )
End Sub


【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

数値をx進数に変換してみる

10進数からx進数への変換のサンプルです。
とは言っても、
2進数、8進数、16進数のみです。
それぞれBin、Oct、Hex関数を使うだけの簡単なものです。
この中で使えそうなのは、BinとHex関数ですね。

入力できる10進数に限界があるのは、Long型だからです。
ノーツでは、数値はそこまでしか扱えないので、注意が必要です。

ヘルプを見ると分かりますが、BinやHexもLong型の限界までしか変換をサポートしていません(戻り値の最大桁数が決まっています)。


ちなみに、10進数への変換を行う関数はないんですね。ちょっと残念。


--------------------------------------------------------------------
Sub Click(Source As Button)
On Error Goto ErrProc

Const MSGTITLE = "数値のバイナリ表現"
Dim ret As String

'基本となる数値の入力
ret = Inputbox( "-2,147,483,648~2,147,483,647の数値を入力してください。", MSGTITLE, "0" )

'入力チェック
If ret = "" Then
Msgbox "キャンセルがクリックされたので、処理を中止します。", _
MB_OK + MB_ICONINFORMATION, MSGTITLE
Exit Sub
End If
If Not ( Isnumeric( ret ) ) Then
Msgbox "入力された値は数値ではありません。", _
MB_OK + MB_ICONEXCLAMATION, MSGTITLE
Exit Sub
End If

'x進数への変換結果
Msgbox _
"10進数表現:" & Chr$(9) & ret & Chr$(10) & _
" 2進数表現:" & Chr$(9) & Bin$( Clng(ret) ) & Chr$(10) & _
" 8進数表現:" & Chr$(9) & Oct$( Clng(ret) ) & Chr$(10) & _
"16進数表現:" & Chr$(9) & Hex$( Clng(ret) ), _
MB_OK + MB_ICONINFORMATION, MSGTITLE

Exit Sub

ErrProc:
Msgbox _
"エラーコード:" & Chr$(9) & Cstr(Err) & Chr$(10) & _
"エラーメッセージ:" & Chr$(9) & Error & Chr$(10) & _
"エラー発生行:" & Chr$(9) & Cstr(Erl), _
MB_OK + MB_ICONSTOP, MSGTITLE

Exit Sub
End Sub



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

4万アクセス!

前回(累計3万アクセス突破!)から2ヶ月かからずに、4万アクセスに達しました。

ネタが尽きてきて、あまり記事を書けていないのに、これだけアクセスしてくれるのは嬉しいです。

まだまだ続けていく気はありますので、期待しないで見てください。

ネタを増やすため、引き続きお仕事の依頼も受け付けておりますので、
お気軽にお問い合わせください。

【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

第43回葛飾納涼花火大会

昨夜は、地元の花火大会がありました。雨天と言うことで心配だったのですが、決行されました。
葛飾区に引っ越してきて7年目。今の場所に住み始めてもうすぐ丸3年。
毎年、見てきましたが雨というのは初めてです。

自宅の近所の江戸川河川敷まで歩いていき、そこで遠目に見てきました。


雨という割には、綺麗に見えますね。


写真の下の方に写ってる橋は常磐線の鉄橋です(金町-松戸間の所ですね)。

この時間に電車に乗ると、見えるかもしれないです。その近くを国道6号線が走っているのですが、なんか自動車がゆっくりと走っているように見えました。きっと花火を見ているのでしょう。


・・・最早、花火ではないですね。
火事です。爆発です(笑)。

さすがに連発すると、その煙?で周りが曇ってしまい、綺麗に見えませんでした。
風向きや天気の影響もあるのでしょう。


来年は、晴れて欲しいなと思った夜でした。