8月のアクセス統計というのを見たところ、訪問者数 437 ページビュー
6186 でした。 アクセスしていただいた皆さん、ありがとうございました。
夏休み期間が終わってしまったので、更新頻度は不定期になるとおもいますが、地道に更新していきたいナ、と考えています。
こんごともよろしくお願いいたします。 (_o_)
続きを読む
2006年08月31日
2006年08月28日
ありえないSELECT文
アリエナイ設計、というカテゴリを追加してみました。
これは僕が見た Notes/Domino アプリで驚いた、いえ正直に言えば呆れた書き方をしたものの記録です。 知ってて当然、という感じであまり説明されない、基本的な事柄が中心になるとおもいます。
さて今日のびっくりは、ありえないSELECT文です。
ある日、とあるアプリのスケジュールエージェントが動作しないという相談がありました。 テスト環境では動くのですが、本番に配置すると何故か動作しない、そうで。
動作しない、と簡単に言われても、ちゃんとした動作ログが無いのでよくわかりません(これもアリエナーイ)。 そこで、以前にご紹介した ログ生成クラス をさっくり組み込んで動作を確認し、問題に対応しました。 で、ログ機能は今後のために残しておくことになりました。
さて数日後、アプリの担当者から連絡がありました。 「謎の文書が表示されている」 という怪現象が発生しているそうで。 しかも日に日に増えているとか。 こ、これは考えるまでもありません、原因はアレです。
続きを読む
これは僕が見た Notes/Domino アプリで驚いた、いえ正直に言えば呆れた書き方をしたものの記録です。 知ってて当然、という感じであまり説明されない、基本的な事柄が中心になるとおもいます。
さて今日のびっくりは、ありえないSELECT文です。
ある日、とあるアプリのスケジュールエージェントが動作しないという相談がありました。 テスト環境では動くのですが、本番に配置すると何故か動作しない、そうで。
動作しない、と簡単に言われても、ちゃんとした動作ログが無いのでよくわかりません(これもアリエナーイ)。 そこで、以前にご紹介した ログ生成クラス をさっくり組み込んで動作を確認し、問題に対応しました。 で、ログ機能は今後のために残しておくことになりました。
さて数日後、アプリの担当者から連絡がありました。 「謎の文書が表示されている」 という怪現象が発生しているそうで。 しかも日に日に増えているとか。 こ、これは考えるまでもありません、原因はアレです。
続きを読む
2006年08月23日
NotesColor の240色って?
NotesColor (NotesColorObjectクラス) では240色が利用できますが、アイコンと違い、デザイナーズヘルプには全色は載っていないようです。 なので簡単な表を作成してみました。
続きを読む
続きを読む
2006年08月22日
ログ生成用クラス (6)
三回に分けて掲載した LotusScript コードを 20060822_CoreLog_v100.txt にまとめました。 使用する時は適当なスクリプトライブラリの Declarations セクションにでも貼りつけてください。
CoreLog クラスは最低限の機能しか実装していないため、誰が書いても似たようなコードになると考えます。 著作権等を主張することはありませんので、自由にご利用ください。
なにか不具合を発見された方、より良いコードを書かれた方、フィードバックいただければ嬉しいです。続きを読む
CoreLog クラスは最低限の機能しか実装していないため、誰が書いても似たようなコードになると考えます。 著作権等を主張することはありませんので、自由にご利用ください。
なにか不具合を発見された方、より良いコードを書かれた方、フィードバックいただければ嬉しいです。続きを読む
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
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
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
続きを読む
2006年08月18日
ログ生成用クラス (2)
ログ生成用クラス (1) に引き続き、ログ生成用クラスの使い方をご紹介します。
ログ機能は常に出力されるものですが、トレース情報 はレベル付けされた出力になります。 以下の単純な例を見てみてください。
最大トレースレベル以下のレベル値が指定された場合のみ、メッセージがトレース欄に追記されます。 上記の例では最大トレースレベルとして 2 が指定されていますから、レベル0〜レベル2 の行だけが実際のログ文書に保存される仕組みになっています。
続きを読む
ログ機能は常に出力されるものですが、トレース情報 はレベル付けされた出力になります。 以下の単純な例を見てみてください。
Dim aCoreLog As New CoreLog(Nothing, 2, "Sample")CoreLog クラスを生成する時の、第二引数が最大のトレースレベルの指定になります。 そして traceText() メソッドの第二引数が、出力する情報のレベル値を指定しています。
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()
最大トレースレベル以下のレベル値が指定された場合のみ、メッセージがトレース欄に追記されます。 上記の例では最大トレースレベルとして 2 が指定されていますから、レベル0〜レベル2 の行だけが実際のログ文書に保存される仕組みになっています。
続きを読む
2006年08月17日
ログ生成用クラス (1)
Java: デザインパターン、JUnit、Log4J にも書きました、ログ生成用の簡単な LotusScript クラスをご紹介します。 まずは簡単な使い方をみてください。
Dim aCoreLog As New CoreLog(Nothing, 2, "Sample")"Sample" の部分はログのタイプを示す文字列で、自由に設定が可能です。続きを読む
Call aCoreLog.logText(|処理 開始|)
' 実際の処理...
Call aCoreLog.logText(|処理 終了|)
Call aCoreLog.closeLog()
2006年08月16日
Java: デザインパターン、JUnit、Log4J
僕が Java で学んだことで最も重要なことは、デザインパターン の大切さだとおもいます。
これまでの開発経験から、ノウハウをカタチにし、再利用する大切さはわかっていたつもりでした。 ライブラリ化とか。 でも、いろいろなプロジェクトに関わってみて、技術的なことよりも、コミュニケーションに由来する問題が多いことに気がつきます。
続きを読む
これまでの開発経験から、ノウハウをカタチにし、再利用する大切さはわかっていたつもりでした。 ライブラリ化とか。 でも、いろいろなプロジェクトに関わってみて、技術的なことよりも、コミュニケーションに由来する問題が多いことに気がつきます。
続きを読む