2012年03月28日

Notesアイコン用パレット for GIMP

久しぶりにLotus Notesのアイコンを作成することになったのでメモ。以下の内容を NotesIcon.gpl のファイル名でGIMPのpalettesフォルダに保存。

GIMP Palette
Name: Notes Icon
#
# by yamachan 2012/03/28
#
0 0 0 K
255 255 255 W
255 0 0 R
0 255 0 G
0 0 255 B
255 0 255 M
255 255 0 Y
0 255 255 C
128 0 0 1
0 128 0 2
0 0 128 3
128 0 128 4
128 128 0 5
0 128 128 6
128 128 128 7
192 192 192 8

添付ファイルにしておくので、自由にご利用ください:NotesIcon.gpl
posted by yamachan at 11:28| Comment(0) | TrackBack(0) | メモ

2007年04月15日

ロード後にイメージを表示

いつのころからか、データベースのプロパティに 「ロード後にイメージを表示」 というオプションがついています。

ロード後にイメージを表示

先日、担当した Notes DB にはこのオプションが設定されていて、ちょっと苦労しましたので、簡単にご報告します。

これまで、リッチテキストに画像を貼り付けると、リッチテキストの一部として扱われていました。ですので、サイズの大きなものがあるとリッチテキストのサイズが膨らみ、処理に時間がかかってしまいます。

例えば遅いネットワーク越しで、大きな画像が貼り付けられた文書を開くと、なかなか開きませんよね。

このオプションを使うと、読み込んだ画像を、添付ファイルのように格納するようです。 文書を開くとすぐに本文が表示され、画像部分は後から読み込まれる動作になります。 いいですね。

さて、詳しくみていきましょう。

文書を調べてみると、画像の数だけ、$FILE が増えているのがわかります。 通常の添付ファイルは Type が ATTACHMENT (1084) なのですが、画像は 1085 になっていて、少し違います。

ちなみに添付ファイルの場合は、1084, 1085 両方の $FILE アイテムが作成されます。 添付アイコンも画像として処理されているのですね。

さて、ちょっと苦労した点なのですが...。

画像、もしくは添付ファイルのあるリッチテキスト・アイテムを別文書にコピーしたところ、以下のようなエラーが発生していました。

文書アイテムが見つかりません。
続きを読む
posted by yamachan at 08:26| Comment(2) | TrackBack(21) | 雑談

2006年11月08日

DocumentDiffer クラス (6)

これまでご紹介した DocumentDifferクラス20061108_DocumentDiffer_v100.txt にまとめました。

おまけとして toStringWithLabel()関数 を追加しています。 toString()関数 ではフィールド名(アイテム名)をそのまま使うため、出力結果は開発者にしかわからないものでした。 こちらはフィールド名に対応した表示名を指定するラベルを渡すことにより、よりわかりやすい出力になっています。

更新ログをユーザーも参照することがある場合、こちらの使用をお勧めします。 またこちらは、ラベル登録したもの以外は出力しない仕様になっていますので、いちいち removeItem() しなくてすむので、その意味でも使いやすいです。

使い方の例はこちら。
Sub Postsave(Source As Notesuidocument)
Call aDocumentDiffer.process(Source.Document)

Dim targetList$ List
targetList$("Title") = "タイトル"
targetList$("Description") = "概要"

Msgbox aDocumentDiffer.toStringWithLabel(targetList$)
End Sub

続きを読む
posted by yamachan at 23:00| Comment(7) | TrackBack(0) | my設計パターン

2006年11月02日

DocumentDiffer クラス (5)

DocumentDiffer クラス (4) に引き続き、今回はお遊びコードをご紹介します。

ネタ元は LotusScript に対する不満?(2) Variant の名前でクラスを扱う、というあたり。カッコ良く言えば レイト・バインディング(late binding) を利用した実装ですね。 たぶんね。

DocumentDiffer クラスに、以下のような workWith() メソッドを追加します。 引数としては Variant を指定しています。 指定したオブジェクトと適切に連動する、という仕様書に書くと怒られるようなアバウトな仕様。

今回のコードでは、以前にご紹介した ログ生成用クラス との連携を実装してみます。 ログに変更点を書き出してくれるという目論見です。
Sub workWith(coWoker As Variant)
  If coWoker Isa "CoreLog" Then
    Call coWoker.logText(toString())
  End If
End Sub
が、このコードは僕の環境では動作しませんでした。 謎です。 なにせ、次のコードは動作するのですから...。
続きを読む
posted by yamachan at 01:16| Comment(0) | TrackBack(0) | my設計パターン

2006年09月26日

DocumentDiffer クラス (4)

DocumentDiffer クラス (3) に引き続き、コードをご紹介します。

まずはベタですが、チェック対象のフィールドを追加したり外したりする add/removeItem() 関数。 例えば更新履歴のフィールドなど、removeItem("updateHistory") などと外しておくのがお勧めデス。
Sub addItem(doc As NotesDocument, itemName$)
Dim tmpItem As NotesItem

Set tmpItem = doc.getFirstItem(itemName$)
If Not(tmpItem Is Nothing) Then
Call tmpItem.CopyItemToDocument(Me.oldDoc, itemName$)
End If
End Sub

Sub removeItem(itemName$)
Call Me.oldDoc.removeItem(itemName$)
End Sub

続きましては、更新されたフィールドの以前の値を得るための getOldValue() 関数です。 あると意外と便利なのと、内部の仕組みをあるていど隠蔽するために実装してみたり。
続きを読む
posted by yamachan at 23:51| Comment(0) | TrackBack(0) | my設計パターン

2006年09月21日

DocumentDiffer クラス (3)

超操縦メカMG にハマって更新が止まっている今日この頃。 僕らの世代を狙い撃ちのゲームだとおもうんですが、意外に売れてないみたいですね...。

さて今回も DocumentDiffer クラス (2) に引き続き、コードをご紹介します。

今回は、実際に差分を作成する process関数 です。 process関数の引数は、更新後のNotes文書 (NotesDocument) です。

実際に処理をおこなっているのは、Forall の部分です。 New で必要なフィールドのみ oldDoc にコピーしているので、今度はそれを1つずつ、更新後の文書の同名フィールドと比べているわけです。
続きを読む
posted by yamachan at 09:44| Comment(0) | TrackBack(0) | my設計パターン

2006年09月20日

DocumentDiffer クラス (2)

DocumentDiffer クラス (1) に引き続き、コードをご紹介します。

今回はコンストラクタ部分です。 コンストラクタは、対象のNotes文書を引数にします。

DocumentDiffer はインスタンス生成の際、後の差分作成(process 関数)の実行に備え、必要なフィールドを全て保持しようとします。 具体的には、内部にテンポラリ文書を作成し、必要なフィールド(NotesItem)をコピーしておきます。

保持しておくフィールドは、とりあえず 日付・名前・数値・テキストに限定しています。 また '$' 文字で始まるフィールドは、システムで利用するフィールドが多いので、保持する対象からはずしています。

さて、実際のコードをみてみましょう。
続きを読む
posted by yamachan at 00:57| Comment(0) | TrackBack(0) | my設計パターン

2006年09月09日

DocumentDiffer クラス (1)

先日、職場のヒトが ソックス の話をしていたので、ニーソックス絶対領域 に関する熱い話題 を期待して近づいていったら、J-SOX 法に関する話題でした... orz

なんちて。

最近、J-SOX だの 内部統制 だのの流れで、システムの要件に厳密な権限管理や、詳細ログの保存等が盛り込まれることが多いようです。

知り合いも既存の Notes DB に、文書の変更ログ機能 を追加するよう言われていました。 変更のあったフィールドを、基本的にはすべてログする必要があるとのことです。 フィールドの数が多いので眩暈がすると嘆いていました。

いい機会ですので、(頭の隅の)倉庫に眠っていた DocumentDiffer クラスをご紹介します。
続きを読む
posted by yamachan at 21:40| Comment(0) | TrackBack(0) | my設計パターン

2006年09月08日

LotusScript に対する不満?(2) Variant

さて Variant型 に関する不満(?)です。 いや嫌いじゃないんですけどね。

使うたびに頭の中で 三石琴乃さん (マリュー・ラミアス大尉)の、「ヴァリアント、てー!」という声が響くんですよね〜 というのは嘘で。

どうも馴染めないのは、あまりに柔軟すぎるから、だとおもいます。 Variant を利用すると途端に、静的な事前チェックがほとんどできなくなる気がします。

Variant 型にもクラスのインスタンスを代入できます。 代入されたのがどのクラスかは IsA 演算子 で確認できますが、なんと! クラスそのものではなく、クラス名(文字列)と比較しているような気が。 あらビックリ。
続きを読む
posted by yamachan at 00:24| Comment(0) | TrackBack(0) | 雑談

2006年09月06日

LotusScript に対する不満?(1) オーバーロード

最初に書きましたが、僕はもともとは Java な人でした。 LotusScript を使い始めたとき、まず調べたのはクラスの定義方法。 で、その制限の多さには少し驚きました。

極論するとこれ、オブジェクト指向というよりも、、、単に継承&カプセル化が利用できるようになった、便利なデータ型なのではないかと。 (言葉悪くて、スイマセン...)

まず最初に困ったのは、メソッド(クラス Function) に オーバーロード が無いことです。 簡単に言えば、引数の異なる同じ名前のメソッドを定義できる、というものです。
続きを読む
posted by yamachan at 23:36| Comment(4) | TrackBack(0) | 雑談