2006年08月31日

あっという間に3週間

8月のアクセス統計というのを見たところ、訪問者数 437 ページビュー
6186 でした。 アクセスしていただいた皆さん、ありがとうございました。

夏休み期間が終わってしまったので、更新頻度は不定期になるとおもいますが、地道に更新していきたいナ、と考えています。

こんごともよろしくお願いいたします。 (_o_)
続きを読む
posted by yamachan at 23:59| Comment(2) | TrackBack(0) | 日記

2006年08月28日

ありえないSELECT文

アリエナイ設計、というカテゴリを追加してみました。

これは僕が見た Notes/Domino アプリで驚いた、いえ正直に言えば呆れた書き方をしたものの記録です。 知ってて当然、という感じであまり説明されない、基本的な事柄が中心になるとおもいます。

さて今日のびっくりは、ありえないSELECT文です。

ある日、とあるアプリのスケジュールエージェントが動作しないという相談がありました。 テスト環境では動くのですが、本番に配置すると何故か動作しない、そうで。

動作しない、と簡単に言われても、ちゃんとした動作ログが無いのでよくわかりません(これもアリエナーイ)。 そこで、以前にご紹介した ログ生成クラス をさっくり組み込んで動作を確認し、問題に対応しました。 で、ログ機能は今後のために残しておくことになりました。

さて数日後、アプリの担当者から連絡がありました。 「謎の文書が表示されている」 という怪現象が発生しているそうで。 しかも日に日に増えているとか。 こ、これは考えるまでもありません、原因はアレです。
続きを読む
posted by yamachan at 21:57| Comment(0) | TrackBack(0) | アリエナイ設計

2006年08月23日

NotesColor の240色って?

NotesColor (NotesColorObjectクラス) では240色が利用できますが、アイコンと違い、デザイナーズヘルプには全色は載っていないようです。 なので簡単な表を作成してみました。

続きを読む
posted by yamachan at 23:11| Comment(0) | TrackBack(0) | 雑談

2006年08月22日

ログ生成用クラス (6)

三回に分けて掲載した LotusScript コードを 20060822_CoreLog_v100.txt にまとめました。 使用する時は適当なスクリプトライブラリの Declarations セクションにでも貼りつけてください。

CoreLog クラスは最低限の機能しか実装していないため、誰が書いても似たようなコードになると考えます。 著作権等を主張することはありませんので、自由にご利用ください。

なにか不具合を発見された方、より良いコードを書かれた方、フィードバックいただければ嬉しいです。続きを読む
posted by yamachan at 00:10| Comment(0) | TrackBack(0) | my設計パターン

2006年08月21日

ログ生成用クラス (5)

ログ生成用クラス (4) に引き続き、CoreLog クラスの残りの実装をみていきましょう。 まずは処理のメインとなる2つのメソッドです。
  ' ---- Public methods ----

Public Sub logText(message$)
Me.getLog().AppendText(message$)
Call Me.getLog().AddNewLine(1)
End Sub

Public Sub traceText(message$, level%)
If level% <= Me.getTraceLevel() Then
Me.getTrace().AppendText(message$)
Call Me.getTrace().AddNewLine(1)
End If
End Sub
続きを読む
posted by yamachan at 22:48| Comment(0) | TrackBack(0) | my設計パターン

2006年08月20日

ログ生成用クラス (4)

ログ生成用クラス (3) に引き続き、CoreLog クラスの実装をみていきましょう。 今回はゲッターとセッターを抜き出してみました。

関係ありませんが、ゲッター と言えば、僕の心に浮かぶのは このページ。 いつも僕に勇気をくれます。
  ' ---- Getter/Setter methods ----

Public Sub setTraceLevel(level%)
If (0 < level% And level% < 100) Then
Me.traceMaxLevel% = level%
Else
Me.traceMaxLevel% = 0
End If
End Sub

Public Function getTraceLevel() As Integer
getTraceLevel = Me.traceMaxLevel%
End Function

Public Function getLog() As NotesRichTextItem
Set getLog = Me.itemDetail
End Function

Public Function getTrace() As NotesRichTextItem
Set getTrace = Me.itemTrace
End Function
続きを読む
posted by yamachan at 07:27| Comment(0) | TrackBack(0) | my設計パターン

2006年08月19日

ログ生成用クラス (3)

ログ生成用クラス (2) で使い方をご紹介した CoreLog クラスの実装を順にみていきましょう。 まずは最低限ということで、内部変数コンストラクタ 部分のみを抜き出してみます。
Public Class CoreLog
Private traceMaxLevel As Integer
Private logDoc As NotesDocument
Private itemDetail As NotesRichTextItem
Private itemTrace As NotesRichTextItem
Private timeStart As NotesDateTime

' ---- Constractor/Destractor methods ----

Sub New(doc As NotesDocument, level%, logType$)
Dim session As New NotesSession

If doc Is Nothing Then
Set Me.logDoc =
session.CurrentDatabase.CreateDocument
Me.logDoc.Form = "fLogCore"
Else
Set Me.logDoc = doc
End If
Set Me.timeStart = New NotesDateTime(Now())
Me.logDoc.Start = Me.timeStart.LSLocalTime
Me.logDoc.Executant = session.UserName
Me.logDoc.Status = "pending"
Me.logDoc.Type = logType$
Set Me.itemDetail =
createRichtextMember(logDoc, "Detail")
Set Me.itemTrace =
createRichtextMember(logDoc, "Trace")
Me.setTraceLevel(level%)
End Sub

Sub Delete
Delete Me.timeStart
End Sub

End Class

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

2006年08月18日

ログ生成用クラス (2)

ログ生成用クラス (1) に引き続き、ログ生成用クラスの使い方をご紹介します。

ログ機能は常に出力されるものですが、トレース情報 はレベル付けされた出力になります。 以下の単純な例を見てみてください。
  Dim aCoreLog As New CoreLog(Nothing, 2, "Sample")

Call aCoreLog.traceText(|レベル0|, 0)
Call aCoreLog.traceText(|レベル1|, 1)
Call aCoreLog.traceText(|レベル2|, 2)
Call aCoreLog.traceText(|レベル3|, 3)
Call aCoreLog.traceText(|レベル4|, 4)

Call aCoreLog.closeLog()
CoreLog クラスを生成する時の、第二引数が最大のトレースレベルの指定になります。 そして traceText() メソッドの第二引数が、出力する情報のレベル値を指定しています。

最大トレースレベル以下のレベル値が指定された場合のみ、メッセージがトレース欄に追記されます。 上記の例では最大トレースレベルとして 2 が指定されていますから、レベル0〜レベル2 の行だけが実際のログ文書に保存される仕組みになっています。
続きを読む
posted by yamachan at 00:15| Comment(0) | TrackBack(0) | my設計パターン

2006年08月17日

ログ生成用クラス (1)

Java: デザインパターン、JUnit、Log4J にも書きました、ログ生成用の簡単な LotusScript クラスをご紹介します。 まずは簡単な使い方をみてください。
  Dim aCoreLog As New CoreLog(Nothing, 2, "Sample")
Call aCoreLog.logText(|処理 開始|)

' 実際の処理...

Call aCoreLog.logText(|処理 終了|)
Call aCoreLog.closeLog()
"Sample" の部分はログのタイプを示す文字列で、自由に設定が可能です。続きを読む
posted by yamachan at 00:04| Comment(0) | TrackBack(0) | my設計パターン

2006年08月16日

Java: デザインパターン、JUnit、Log4J

僕が Java で学んだことで最も重要なことは、デザインパターン の大切さだとおもいます。

これまでの開発経験から、ノウハウをカタチにし、再利用する大切さはわかっていたつもりでした。 ライブラリ化とか。 でも、いろいろなプロジェクトに関わってみて、技術的なことよりも、コミュニケーションに由来する問題が多いことに気がつきます。

続きを読む
posted by yamachan at 21:17| Comment(3) | TrackBack(0) | 雑談