D HCL Domino 日報
所有文章 搜尋 類別地圖 關於
文 A
  • LotusScript Security
    你的 agent 是用誰的身分在跑?signer、effective user,與 Error 201/Readers 欄位的雷

    你的 agent 跑得好好的 —— 因為是你這個 admin 簽的。把它部署成 web agent、或用服務帳號 ID 簽了排程,它就壞了:Error 201,或者更糟 —— 一份文件都沒處理卻不報錯。原因是身分:Domino agent 是用某個人的身分在跑,而那個人不一定是你。一篇關於 signer 對上 effective user 的實測報告:session.EffectiveUserName 怎麼隨「run as web user」翻轉、Error 201 背後的 runtime security level、以及那個讓文件憑空消失的 Readers 欄位雷。

    2026.08.03 →
  • LotusScript Notes UI +1
    NotesUIScheduler:用 LotusScript 驅動內嵌的 free/busy 排程格

    一張自訂的會議室預約或會議表單上有內嵌排程控制項 —— 那個你放進與會者、看大家 free/busy 的忙碌時間格。NotesUIScheduler 就是你用程式驅動那個控制項的方式:從 UI 文件用名稱取得它、加或移除與會者、刷新排程資料、讀回使用者選的時段。一篇關於唯一那個前端排程類別的實測報告 —— 它的 GetScheduleData 刷新、以及你會掛的兩個事件。

    2026.08.02 →
  • LotusScript Notes UI
    Button、Field、Navigator:三個沒有屬性、沒有方法的 LotusScript 類別

    打開 Button 的 LotusScript 說明,你以為會有屬性和方法 —— 一個都沒有。Field 一樣、Navigator 也一樣。三個都是故意做空的:它們只作為事件的進入點存在,也就是那個「告訴前端事件 handler 是誰觸發了它」的具名 Source 參數。一篇關於「你永遠不會對它呼叫任何東西」的三個類別的實測報告 —— 它們的事件是什麼(Click、Entering/Exiting/OnChange),以及為什麼真正的工作永遠是透過 NotesUIDocument。

    2026.08.01 →
  • LotusScript Tutorial
    LotusScript web agent 的 I/O 模型:Print 是你的回應,DocumentContext 是你的請求

    一個 LotusScript web agent 沒有 request 物件、也沒有 response 物件 —— 它有 Print,輸出變成 HTTP body,還有 DocumentContext,一份裝著 CGI 變數的特殊文件。一篇兩半模型的實測報告:第一行 Print 怎麼設 Content-Type、讓你回 JSON 而不是 HTML,怎麼從 DocumentContext 讀 query string 與 POST body,那個讓它們變空的 CGI-欄位陷阱,以及這一切怎麼跟一個頂層錯誤 handler 兜起來。

    2026.07.31 →
  • LotusScript Tutorial
    DXL round-trip 陷阱:為什麼匯出再匯入給你的是重複文件、不是同一批文件

    你把文件匯出成 DXL、把 DXL 匯入另一個資料庫,結果拿到的是一批帶著全新 UNID 的副本、而不是同一批文件在原地更新 —— 因為匯入器預設是「建立」,只有在你明講時才按 UNID 比對。一篇 DXL round-trip 的實測報告:決定 create 還是 replace 的 DocumentImportOption、為什麼預設的 rich text 不是位元一致(以及何時該切到 RAW)、還有那個把整件事藏起來的 stale-handle 陷阱。

    2026.07.30 →
  • LotusScript Tutorial
    LotusScript 錯誤處理:On Error 是逐程序的,Resume Next 不是「忽略錯誤」

    兩個習慣毀掉了多數 LotusScript 錯誤處理:把 On Error 當成全域的(它是逐程序的,沒被接住的錯誤會往呼叫堆疊上爬),以及把 On Error Resume Next 當成一鍵「忽略所有錯誤」的開關(它藏起 bug、不是處理它)。一篇刻意做對的實測報告 —— 逐程序的作用範圍、Err/Error$/Erl 的生命週期、Resume 與 Resume Next 與 Resume label 的差別,以及一個 web agent 真正需要的乾淨錯誤樣式。

    2026.07.29 →
  • LotusScript Notes UI +1
    NotesUIDatabase:攔下一個刪除的唯一地方

    在 Notes client 裡,使用者可以從任何 view、用 Delete 鍵、用剪下、或拖進垃圾桶刪掉一份文件 —— 你沒辦法一條路一條路去守。NotesUIDatabase 是看得見全部路徑的單一 chokepoint:它的 QueryDocumentDelete 事件在任何東西被標記刪除之前,整個資料庫觸發一次。一篇前端資料庫類別的實測報告 —— 通往後端的 Database 橋、刪除/封存事件,以及你掛在「那個攔得住每條路的事件」上的軟刪除守衛。

    2026.07.28 →
  • LotusScript
    Save(True, False) 還是 Save(False, True):決定誰的資料會不見的兩個布林值

    兩個程序動到同一份文件 —— 一個 web agent 和一個開著表單的使用者,或一個排程 agent 和一個 replica。一邊的儲存贏,另一邊的編輯要嘛消失、要嘛變成一份沒人發現的 $Conflict。發生哪一種,完全由你傳給 NotesDocument.Save 的那兩個布林值決定。一篇關於 force 與 createResponse 的實測報告:last-write-wins 對上 replicator 產生的衝突文件、為什麼 Save(True, False) 會靜默丟資料、以及怎麼刻意地選對。

    2026.07.27 →
  • LotusScript Notes UI +1
    NotesUIView:唯一知道使用者選了什麼的類別

    view 上的動作按鈕理應對使用者反白的那幾列作用 —— 但後端的 NotesView 根本沒有「選取」這個概念。那道缺口,正是 NotesUIView 填的。一篇前端 view 類別的實測報告:它的 Documents 屬性(活的選取狀態)、通往後端 View 的橋、你用來攔截使用者的 QueryOpenDocument/QueryClose 事件,以及那條把這一切擋在 web 與 agent 之外的硬邊界。

    2026.07.26 →
‹ 上一頁1…567…17下一頁 ›
由 Astro 與 GitHub Actions 驅動