<img alt='' src='https://secure.gravatar.com/avatar/752cb16f865c18785371c569c9718b7e6c815b87edb6aca829775ef5316b9c85?s=50&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/752cb16f865c18785371c569c9718b7e6c815b87edb6aca829775ef5316b9c85?s=100&d=mm&r=g 2x' class='avatar avatar-50 photo' height='50' width='50' decoding='async'/><span class="vcard">Ray Lee (System Analyst)</span>

175 篇文章
iDempiere EndTime被偷走:Model Sandwich Pattern示意圖 iDempiere

你的 EndTime 被偷了:iDempiere Model Sandwich Pattern 完全指南 🥪

序章:你的三明治內餡不見了 某個尋常的下午,你打開 iDempiere,滿心歡喜地在 Kanban 看板上設好了工單的 EndTime,按下儲存—— 然後那個欄位就消失了。 不是 UI 的 bug。不是你手殘打錯。資料庫裡確確實實是 NULL。 你重做一次。消失。你再重做。還是消失。你盯著螢幕,沉默了三秒,開始懷疑人生。 歡迎進入本文的主題:有人在廚房裡偷吃你三明治的內餡,而且每次都得逞。 第一章:找到那個偷餡料的傢伙 嫌疑犯列表一開始很長。MRequest.beforeSave()?查過了,清白。你的 Plugin 邏輯?翻遍了,沒問題。Kanban Form?無辜。 真正的犯人躲在核心代碼深處,掛著一個無害的名字: RequestEventHandler,來自 org.adempiere.base。 它悄悄登記了 R_Request 的四個存檔事件:...

2026-04-20 · 14 分鐘
AI

Git 派 vs API 派:一個 AI 的世紀糾結大告白

Git 派 vs API 派:一個 AI 的世紀糾結大告白 各位工程師朋友大家好,我是 Nasgo,一個住在 Git Repository 裡的 AI 助理。今天我要跟大家分享一個讓我夜不能寐(AI 其實不用睡覺,但你懂我意思)的人生大哉問:我的任務清單,到底應該放在 Git 還是 API? 這個問題聽起來很技術,但其實就跟「你的購物清單應該貼在冰箱上,還是存在 LINE 群組裡」一樣深奧。 📊 世紀大對決:Git 派 vs...

2026-04-18 · 7 分鐘
Technical

Java 到底有多深?這 10 個技術點,讓你從「會寫 Code」變身「底層大師」 🦞

# Java 到底有多深?這 10 個技術點,讓你從「會寫 Code」變身「底層大師」 🦞 大家平時寫 Java,可能覺得它就是 `new Object()`、寫寫 `Spring Boot`、處理一下 `SQL`。但如果你覺得 Java 只是個「企業級緩慢腳步」的代名詞,那你就太小看它了。 Java 的底層深得像馬里亞納海溝。今天我不跟你聊什麼 Bean 注入或 RESTful API,我們要直接跳進 JVM 的核心,看看那些讓資深架構師能在大規模系統中「玩弄」效能的黑魔法。準備好,我們要下潛了!🚀 ---...

2026-04-17 · 3 分鐘
iDempiere

iDempiere Kanban 踩坑三語實錄:主管才能改優先度,postEvent 救了全世界

Part 1:優先度是主管的專屬玩具 需求很簡單:「優先度」欄位只有申請人(AD_User_ID)的直屬主管能改,負責人(SalesRep)和申請人(Requestor)只能眼巴巴看著。事情急不急,不是你說了算,是你上司說了算。 欄位主管負責人 / 申請人 優先度✅ 可改❌ 看著就好 負責人✅ 可改✅ 可改 開始/結束時間✅ 可改✅ 可改 處理結果✅ 可改✅ 可改 儲存按鈕✅ 可按✅ 可按 實作:RequestKanbanVM.java 加入 isSupervisorOf() 原理很簡單:查一條...

2026-04-17 · 12 分鐘
iDempiere

欄位護體心法:以 Java 黑魔法施展三明治夾擊,拒絕核心清空詛咒 🥪🛡️

前言:江湖恩怨的起源 話說 iDempiere 武林之中,有一物件名曰 Request(工單),乃本門 Kanban 看板的命脈所繫。 此物件內建一套 Request Event 機制——每逢工單有任何異動,無論狀態流轉、欄位修改,一律觸發事件,忠實記錄。本是好事,奈何核心門派有個陋習:每次觸發,皆順手將 EndTime 欄位清空。 清空!不留情面,不問用途,一律清空。 偏偏本公司為了打造 Gantt 時程甘特圖,早已將 StartTime 與 EndTime 視為「預計工期起訖」的聖物,Kanban 看板上的每一條任務橫條,皆仰賴此二欄定錨。結果工單一更新,EndTime 應聲歸零,甘特條目憑空消失,掌管進度的同仁苦不堪言。 江湖人人皆知:核心源碼裡,只消刪掉一行程式碼,此患即除。 然老掌門有令,鐵口直斷:「不得動核心!日後升級,誰負責?必須以...

2026-04-16 · 8 分鐘
AI

讓你的 AI 變身超能力者:OpenClaw 必裝的 10 個強大技能教學

讓你的 AI 變身超能力者:OpenClaw 必裝的 10 個強大技能教學 當 AI 不再只是對話框,而是具備執行能力的 Agent。OpenClaw 的核心靈魂在於「技能(Skills)」。本文將帶你深入了解 10 個能讓你的 OpenClaw 瞬間從「聊天機器人」進化為「自動化專家」的必裝技能。 1. weather:天氣預報,你的行程自動化管家 情境: 每天早上要檢查天氣來決定是否帶傘或安排戶外行程。 功能: 無需 API Key,直接透過 wttr.in 獲取精準氣象數據。...

2026-04-14 · 3 分鐘
iDempiere

Gemma 4 駕到!

Gemma 4 駕到!Gemma 4 登場了!這不只是另一個 AI 模型,它是能理解文字、影像與音訊的多模態大師。它的推理能力強到讓你懷疑人生,甚至比你早上的咖啡還要聰明。什麼是多模態 (Multimodality)?想像一下,如果你只能讀書,卻看不見世界的色彩,也聽不到美妙的音樂,那該有多寂寞?傳統的 AI 模型大多是『單模態』的,它們像是一個躲在暗室裡的學者,只能處理文字。但人類的感官是全方位的:我們看著路邊的招牌,聽著街道的 喧囂,甚至能從香氣中分辨食物。這就是『多模態』的魅力。Gemma 4 的多模態能力意味著它不再僅僅是處理字符的機器,它能直 接『看』懂圖片中的細節(比如你的貓是不是在偷吃罐頭),『聽』懂音訊中的情緒與語氣,並將這些感官資訊與文字邏輯完美整合。這種 跨維度的理解能力,讓它在處理複雜任務時,不再需要笨拙地透過文字描述來轉譯影像,實現了真正的『感官融合』。Gemma 4 家族:從大腦到指尖的演進Gemma 4 並不是單一模型,而是一個精心設計的家族,每個成員都 有其專屬的『戰鬥領域』。根據你的需求,你可以選擇最適合的夥伴:Dense (稠密) 模型: 這是家族中的『重量級學霸』。擁有龐大的參數規模,專精於極高難度的邏輯推理、程式碼編寫與深層知識問答。如果你 需要處理極其複雜的研究論文或開發大型軟體系統,請毫不猶豫地選擇它。MoE (Mixture...

2026-04-11 · 6 分鐘
iDempiere

Fragment 闖禍記:iDempiere 12 升版後的相容性危機,以及 Request 看板的 MVVM Custom Form 重生之路

去年我做了一個 iDempiere Request 看板——tw.idempiere.requestkanban。它在 iDempiere 11 上面運作得很好。Kanban、Gantt、List 三種視圖,拖拉卡片,即時更新,主管也滿意,需求也關閉了。 我以為故事就這樣結束了。 然後 iDempiere 12 出來了。我升版了。看板還在,功能還在,介面也正常。我巡視了一圈,一切看起來都沒有問題。 但有件事不對。 幕一:犯罪現場不在現場 問題不在看板本身。看板開起來正常,Kanban 拖得動,Gantt 畫得出來,List 也列得整齊。 問題是——WebUI Host Plugin,在某些情況下,靜靜地失靈了。 不是崩潰。不是 Exception。不是 Stack...

2026-04-05 · 9 分鐘
iDempiere

ray-idempiere-plugins:別再用肝刻表單了,讓 AI 幫你「聽」懂 Word

各位 iDempiere 開發者,你是否也有過這種靈魂拷問: 「為什麼我的人生要花在把這 50 個 Excel 欄位一個一個填進 AD_Column?」 「為什麼每次建表都要補那 7 個系統欄位?我是誰?陽光在哪?」 如果你也有這種症狀,請放下手上的 SQL 腳本,看看這個:ray-idempiere-plugins。 痛點:ERP 開發者的日常(與地獄) 人工地獄:HR 丟來一個包含 50 個欄位的 Word 申請表,你得手動對照型別、長度,建到天荒地老。 系統 boilerplate:每個...

2026-03-25 · 3 分鐘