投稿

2月, 2015の投稿を表示しています

ループ処理の計測

イメージ
こんにちは。

まぁ、とりあえずはボタンを押してってよ、話はそれからだ。

新しい記事じゃなくても、ページを開いたら押してってください。じゃないと、テンション下がるわ~。


さて・・・気を取り直して。
今日はちょっとした実験です。


LotusScriptでのループ処理ですが、すでに当ブログでも紹介しているように色々な記述方法があります。
多すぎるがゆえに、「どれを使えばいいんだ?」ということになりがちです。

ここは、実行速度を計って、どれが良いのかを見てみましょう。
計測するのはFor文、Do文、While文の3つ(他にもありますが、それは貴方が自分で計測して!)です。
ループ回数ですが、10回や100回くらいでは違いを見るのは難しそうと判断して、思い切って10,000,000回(1千万回!)にしてみました(笑)。

さらにループするだけだと、あっという間に終わるかもしれないので、ループ処理1回ごとに乱数を発生させるようにしました。

ソースはこちらです。   
Sub Click(Source As Button) Const LOOPCNT = 10000000 Dim startDT1 As String Dim endDT1 As String Dim startDT2 As String Dim endDT2 As String Dim startDT3 As String Dim endDT3 As String Dim i As Long Dim j As Single startDT1 = Format( Now, "h:nn:ss" ) For i = 1 To LOOPCNT j = Rnd Next endDT1 = Format( Now, "h:nn:ss" ) i = 0 startDT2 = Format( Now, "h:nn:ss" ) Do While i <= LOOPCNT i = i + 1 j = Rnd …

フィールドの暗号化(5)・・・LotusScriptを使って文書のフィールドを暗号化する

イメージ
皆さん、おはようございます。中々、寒さが収まらないですね。私は暑さ寒さに弱い(笑)ので、早く適度な気候になってほしいものです。

さて、今日もこちらのボタンをクリックしてから先に進んでください。



今日もフィールドの暗号化の話です。
これまでの話は、下記を参照ください。
フィールドの暗号化(1)・・・暗号キーを作成する
フィールドの暗号化(2)・・・暗号キーをマージする
フィールドの暗号化(3)・・・文書のフィールドを手動で暗号化する
フィールドの暗号化(4)・・・特殊フィールドを使って文書のフィールドを暗号化する

今日は、昨日宣言したようにLotusScriptを使って文書のフィールドを暗号化してみます。


Domino Designerのヘルプを読むと、文書の暗号化をLotusScriptで行うにはNotesDocumentクラスEncryptメソッドを使うようです。
そこで、下記のようなLotusScriptを書いてみました。
Sub Click(Source As Button) On Error Goto ErrProc Dim uiws As New NotesUIWorkspace '現在のUI Dim uidoc As NotesUIDocument '現在の文書 Dim udoc As NotesDocument '現在の文書のバックエンド Dim item As NotesItem Set uidoc = uiws.CurrentDocument Set udoc = uidoc.Document 'アイテムを暗号化する Call udoc.ReplaceItemValue( "AngouData", "hogehoge" ) Set item = udoc.GetFirstItem( "AngouData" ) item.IsEncrypted = True '暗号キーのセット udoc.EncryptionKeys = "test" …

フィールドの暗号化(4)・・・特殊フィールドを使って文書のフィールドを暗号化する

イメージ
皆さん、こんにちは。
今日2月9日は河豚の日だそうですが、私は「肉の日」と思ってます(笑)。
うん、今日の夕飯は肉を食べよう!

そんなことはどうでもいいですので、

をクリックして先に進みましょう。


今日も文書のフィールドを暗号化する方法についての話です。
昨日までの話は、
フィールドの暗号化(1)・・・暗号キーを作成する
フィールドの暗号化(2)・・・暗号キーをマージする
フィールドの暗号化(3)・・・文書のフィールドを手動で暗号化する
を読んでくださいね。

さて、昨日は文書のプロパティを使って、一度保存した文書を暗号化するという事を行いました。
簡単にできて分かり易いのは良いのですが、一度文書を保存しないといけないというのが難点ですね。

今日はノーツDBにちょこっと細工を施すことで、文書の新規作成時から文書のフィールドを暗号化できるようにします。

利用するノーツDBは昨日の記事で作成したものを利用します。

細工を施す場所は、フォームの「MainTopic」です。
Domino Designerでこの「MainTopic」フォームを開きます。

そうしたら、下記のフィールドを任意の場所に追加します。
No.フィールド名フィールドの種類フィールドの種類説明1SecretEncryptionKeysテキスト編集可能シークレット暗号キーの名前
下図は実際に追加した画面です。

できたら、フォームを保存します。
これで終了です。なんとまぁ簡単ですね。

では、どのように文書を作成すれば良いのかを見ていきましょう。

なにはともあれ、新規に文書を作成します。
「タイトル」「カテゴリ」「本文」には適当にデータを入力します。

「暗号化データ」(AngouData)には、暗号化したいデータを入力します。
まだ、この時点では文書は暗号化されていないので、周りに見ている人がいないか、気にしながら入力してください(笑)


そして、「暗号キー」(SecretEncryptionKeys)フィールドですが、ここは、作成したシークレット暗号キーの名前直接入力します。

直接って・・・
ヘルプを見たのですが、シークレット暗号キーの一覧を取得する方法はどうも用意されていないようです。なんて面倒なんでしょう・・・
と、愚痴はさておき、ここは先日作成したシークレット暗号キーの名前である「test」と入力しまし…

フィールドの暗号化(3)・・・文書のフィールドを手動で暗号化する

イメージ
こんにちは。IBM ConnectED 2015が開催されていたアメリカから帰国して一週間。ようやく体調も日本風に慣れてきた感じがします。

今日も昨日の続きで、文書のフィールドの暗号化についてです。

記事を読み始める前に

をクリックしてくださいね。別ウィンドウで開くように設定してありますから、[戻る]をクリックするとかいう手間はありませんので、ぜひ気軽に押してください。


では、今日の話です。
昨日までの
フィールドの暗号化(1)・・・暗号キーを作成する
フィールドの暗号化(2)・・・暗号キーをマージする
で、暗号キーを作成することはできました。

そこで今日はサンプルDBを作成して、文書のフィールドを暗号化するという事を行ってみます。

まずは、サンプル用にノーツDBを作成しました。
フォーム名は「MainTopic」。
フィールドは下表のとおり。  
No.フィールド名フィールドの種類フィールドの種類説明1Subjectテキスト編集可能タイトル2Categoryダイアログリスト編集可能カテゴリ3AngouDataテキスト編集可能暗号化するデータ4CreatedUser作成者作成時の計算結果文書を作成したユーザ名5CreatedDateTime日付/時刻作成時の計算結果文書の作成日時6Bodyリッチテキスト編集可能本文 配置はこんな感じにしてみました。シンプルですね。





暗号化したデータを格納するのは、「AngouData」というフィールドです。このフィールドは境界線が赤くなるので分かり易いでしょう。


ビューは・・・適当で良いので、勝手に作ってください。


暗号キーを使って文書のフィールドを暗号化するにはいくつかの方法があります。
今日はそのうち、プログラミングでもなんでもない、手動での方法を紹介します。


まずは普通に文書を作成します。
ここで、「AngouData」にはまだデータを入力しないでください。
※今回紹介する方法では、新規作成時には文書の暗号化を行うことができないようなのです。

その他のフィールドは適当に入力してください。
そうしたら、文書を保存します。

保存できたら、開きなおして編集モードにします。
この状態で文書のプロパティを開きます。
右から2番目のタブ(セキュリティ)を開きます。

シークレット暗号キーという箇所があるので、そこの"レ"を…

フィールドの暗号化(2)・・・暗号キーをマージする

イメージ
こんにちは。有言実行をモットーとしていませんが、今日は昨日の続きです。


昨日クリックしたからいいや。ではなく、今日も

をクリックしてください。1日1回でいいので、やってくださいね。一日一善のつもりでやれば、ほら、簡単でしょ(^^


では、早速。
昨日は、ノーツID内にシークレット暗号キーを作成して、それを他のユーザと共有するため、メール送信したところまで説明しました。

1.メールを受け取った人のメールビューです。
 赤枠の文書がシークレット暗号キー付きのメールですので、このメールを開きます。

2.メールを開くと、「メニュー["暗号キーの追加(K)..."]でIDファイルへ挿入してください。」とあるので、
[アクション][暗号キーの追加]メニューをクリックします。

3.「シークレット暗号キーの追加」というダイアログが表示されるので、キー名とコメントを確認して、問題なければ[追加]ボタンをクリックします。
4.シークレット暗号キーの追加に成功すると、ノーツクライアントのステータスバーにメッセージが表示されます。

5.念のため、ノーツIDにマージされているかを確認するので[ファイル][セキュリティ][ユーザーセキュリティ]メニューを実行します。

6.[IBM Notes データ][文書]タブをクリックして、文書の暗号化を表示します。
 マージしたシークレット暗号キーがあるのが確認できます。

これで、このユーザも暗号キーを使って暗号化された文書のフィールドを閲覧することができます。

と、ここまでが準備ですね(笑)。
明日からは、文書のフィールドを暗号化する方法について具体的に説明していきます。


ということで、今日はこの辺で・・・







【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!

フィールドの暗号化(1)・・・暗号キーを作成する

イメージ
皆さん、こんにちは。暦の上では今日から春(今日は立春)です。
寒さの底をついたであろうという事で、気持ちもあたたかくいきましょう。

ということで、温かい気持ちを持ちながら、

をクリックしてくださいね。
たまに「記事は読んでるんだけど、ボタンは押してないんだよねぇ」と自白してくる方がいます(笑)。
・・・しっかりと押してください。このクリックがないと、記事が更新されないかもしれませんよ(笑)


では、気を取り直して今日の記事です。
折り返し地点まで来ました! でも少し触れましたが、Notesのメンテナンスリリースでは、XPagesアプリでフィールドの暗号化ができるようになります。

ここで、そもそもフィールドの暗号化ってどうやるの?
という疑問が出てきました。まぁ知ってはいたのですが、記事として書いていなかったので、ちょうどいいから記事にしてしまおうというものです。


なお、ここでいう暗号化はメールではなく、自作したノーツDBの指定したフィールドを暗号化することを指します。

まず、フィールドの暗号化を行うには、暗号キーが必要になります。
今日は、この暗号キーの作成手順を紹介します。

1.ノーツクライアントを起動します。
2.[ファイル][セキュリティ][ユーザーセキュリティ]メニューを開きます。
3.ノーツIDのパスワード入力を求められたら入力します。
4.ユーザーセキュリティのダイアログが表示されるので、「IBM Notes データ」をクリックします。
5.すると、「IBM Notes データベース」と「文書」というサブメニューが表示されるので、「文書」をクリックします。
6.ユーザーセキュリティダイアログの内容が「文書の暗号化」に変わります。
7.[シークレットキーの作成]ボタンをクリックします。
8.「シークレット暗号キーの作成」というダイアログが表示されるので、「シークレットキー」と「コメント」を入力して、[OK]をクリックします。
 ここでは、「test」という名前でキーを作成しておきます。

※コメントは書いておかないと、後で「何のために作成したキー」なのかを忘れてしまいますので、是非書いておきましょう。

9.作成に成功すると、文書の暗号化の画面内にシークレットキー名が表示されます。

このシークレット暗号キーが作成されたノーツIDがあれば、文書のフィールドを暗号…