Ninniku IT Hub

開源技術,實戰分享

iDempiere ERP · IoT · Linux — 從導入到上線的技術筆記

郵件出不去:當 Postfix 比 HR 先知道你要離職
iDempiere

郵件出不去:當 Postfix 比 HR 先知道你要離職

小王在座位上坐到下午六點,等同事們陸陸續續拎包走人,才悄悄打開信箱。履歷已經是第三版了,封面信也改了兩個措辭。他掃視了一遍,覺得文字渾然天成,語氣不卑不亢。他關掉辦公室的網頁,換到個人帳號,把滑鼠移到「傳送」上面,深吸一口氣。他不知道的是,兩個小時以前,HR 已經默默地勾了一個核取方塊。那個核取方塊,在等他。 幕一:Postfix 在等他 下午四點,HR 打開 iDempiere,在員工資料頁找到小王的紀錄,把「郵件監控(IsMailMonitor)」欄位打了勾,按下儲存。一個欄位,三個系統同步更新:iDempiere 寫入資料庫,LDAP 同步了屬性,Postfix 更新了查詢結果。小王對此一無所知,他還在想封面信的最後一句要不要加驚嘆號。 4 Mail Monitor。小王不知道那個 4 裡面有他。 Outbound Mail Intercept System — 整套攔截流程架構圖 整套系統做了三件事:第一,動態攔截——Postfix 即時查詢 LDAP,決定這封信要不要先停下來;第二,ERP 工作流——信件內容送進 iDempiere,由主管或 HR 決定放行還是退回;第三,遠端控制——審核結果透過 API 回傳,FastAPI 再下指令給 Postfix,叫它放人或刪除。三個動作,決定了信件的命運。 幕二:第一封信的命運 18:03。小王按下傳送。郵件進入 Postfix。Postfix 查了一下 LDAP。LDAP 說:「這個人,Hold 住。」 Postfix...

2026-03-17 · 閱讀 10 分鐘
iDempiere

LDAP Manager:當 HR 打來的第 17 通求救電話

上回書說到,本工程師耗盡三天青春,親手打造了一個 LDAP 盒子。(詳情請見:LDAP in a Box:一個工程師的創傷後應激與 Docker 化決心)盒子做好了,放在架子上,靜靜等待分公司開張的那一天。只是,生活沒有暫停鍵。LDAP 安靜了,電話沒有。 那通電話 那天下午兩點半,HR 打來了。聲音一如往常地溫柔,問題一如往常地直白:「我要新增一個員工帳號,請問要怎麼操作?」 這是第 17 通了。 工程師在心裡默默計了一下。第一通,他耐心解釋了 ldapadd 指令。第五通,他寫了一份 SOP。第十一通,他把 SOP 印出來貼在 HR 辦公室的牆上。第十七通,HR 的聲音依然溫柔,SOP 大概已經成了佈告欄的裝飾品。...

2026-03-15 · 6 分鐘
iDempiere

iDempiere 繁體中文語系包:純度 99.99%,比黃金還純,絕不含簡體字段,全面採用台灣在地商務術語。

「本語系包純度 99.99%。剩下 0.01% 是工程師的眼淚,無法去除。」 iDempiere 是開源 ERP 武林中的一代宗師——進銷存、財務、製造、CRM,十八般武藝樣樣精通。但長久以來,它的「繁體中文」翻譯,其實是簡體中文套了一層繁體的皮。台灣使用者每天開 ERP,彷彿穿越到平行時空:明明在台北辦公,系統卻跟你說「激活」、「默認值」、「打印」。 現在,蒜頭廟正式推出 iDempiere 繁體中文語系包——13,591 筆詞條,經 LLM 精煉初篩再加上台灣 ERP 實戰人工校對,一筆一筆把簡體腔清乾淨。 簡體腔恐怖畫廊 舊譯(含雜質版)新譯(純台灣版)鑑定 激活啟用你在激活什麼,寶可夢嗎? 默認值預設值系統默認你同意?台灣沒有默認,只有預設 打印列印我們列印,不打印。打了印表機會壞 帳套會計科目架構帳套是什麼?套房嗎? 信息資訊信息是間諜用語,我們用資訊 組織組織這個沒問題,請繼續...

2026-03-14 · 6 分鐘
Linux

LDAP 搬家後記:一個工程師的創傷後應激與 Docker 化決心

上一篇,我寫了一場搬遷。476 條靈魂,從一台老伺服器,搬進另一台老伺服器。Schema 地獄三連王、DN 大小寫陷阱、還有那個永遠記不住的 ldapmodify 語法。如果你還沒讀過,請先備好胃藥再點這裡。 這篇,是後記。 搬完的那一刻 搬遷成功的那個瞬間,我什麼都沒感覺到。 沒有煙火,沒有啤酒,沒有同事衝過來拍我的肩膀說「幹得好」。只有我一個人,凌晨三點,盯著終端機上的 ldapsearch 回傳了 476 筆結果,然後緩緩地把筆電闔上。 那種感覺不是成就感,是倖存者的空虛。像是打完 Schema 地獄三連 Boss 之後,發現背包裡的補血藥全用光了,而且存檔點在三小時前。 我躺在床上,盯著天花板想了一件事:如果明年又要搬呢?如果客戶也要搬呢?如果有人問我「你可以教我嗎」,我要從哪裡開始教?從 slapd.conf 和 cn=config 的世紀之爭開始嗎? 「這種工作,做一次是英雄,做第二次是傻子。」...

2026-03-14 · 9 分鐘
Linux

LDAP 搬家記:476 條靈魂的大遷徙

序章:老伺服器的最後通牒 事情是這樣的:公司那台跑了不知道幾年的 LDAP 伺服器,終於發出了退休宣言。不是那種優雅的「我累了,讓年輕人上吧」,而是硬碟偶爾發出不祥的喀喀聲,彷彿在說:「再不搬,你們就等著一起陪葬。」 於是,一場涉及 476 條靈魂的大遷徙就此展開——398 個使用者帳號、27 個群組、46 個郵件別名、還有 4 個 OU。聽起來不多?等你真的開始搬,你就會發現 LDAP 這東西,專門在你覺得「應該很簡單吧」的時候給你致命一擊。 而且搬完家之後,你還得面對一個靈魂拷問:「萬一新家也掛了呢?」於是我們不只搬了家,還養了一個分身——Master-Slave 複寫。一個負責幹活,一個負責備胎。完美。 項目值 來源伺服器(舊)192.168.1.100 Master(新)192.168.1.200 Slave(備援)192.168.1.201 Base DNdc=example,dc=com Admin DNcn=admin,dc=example,dc=com...

2026-03-14 · 9 分鐘
iDempiere

iDempiere OSGI JavaScript 七擒孟獲:五次失敗與一次攻心

南征序曲:蠻荒之地多蠻王 自古蠻荒之地多猛獸,iDempiere OSGI 之地多 JavaScript 蠻王。 上回書說到,丞相以八陣圖之法,教會天下人如何在 iDempiere 中佈署 CustomForm,從 OSGI ClassLoader 的糧道到 ZK MVVM 的陣旗,一路過關斬將,好不威風。正當丞相以為天下太平,準備回成都喝茶之時,探馬來報:「丞相!南蠻又反了!」 南蠻王是誰?JavaScript。 你看那 JavaScript,在瀏覽器裡橫行霸道慣了,到了 ZK Framework 的地盤,照樣不服管教。你想在 OSGI plugin 的...

2026-03-08 · 35 分鐘
iDempiere

iDempiere CustomForm 八陣圖:以 MVVM 兵法統御 ZK 前線

前言:拜相點兵 話說蜀漢建興年間,丞相諸葛亮治國有方,南征北伐,無往不利。唯獨有一事,令丞相夜不能寐——iDempiere CustomForm 開發。 你看那 iDempiere WebUI,表面上是個 ERP 系統,骨子裡卻是 ZK Framework + OSGI 的深水區。想做一個自訂表單?光是「讓畫面出現」這件事,就得過五關斬六將:OSGI ClassLoader 不認你的檔案、ZK 的 ~./ 路徑找不到資源、@NotifyChange 死活不觸發 UI 更新……每一個坑都足以讓你在鍵盤前仰天長嘯:「臣本布衣,躬耕於南陽,苟全性命於亂世,不求聞達於 OSGI。」 但丞相終究是丞相。他花了三天三夜,終於將 CustomForm...

2026-03-08 · 47 分鐘