2016年9月12日 星期一

[fmpp] 利用 freemaker 進行 code gen

freemarker 是個在寫網站的時候遇到的 library

後來在找 template 工具的時候再遇到,也是覺得很有意思

比較了幾個 template 工具之後,發現 freemarker 的 template 跟 data(json) 比較符合我的想像

而且還有 CLI (command line interface) 工具,所以.... 就是他了!

這次主要是針對 CLI 部分來做簡單的說明

會需要 CLI 部分是因為最近開發專案已經不是習慣的語言 (Java --> .Net)

所以覺得工具應該不要跟語言本身有相依性了

這樣算起來工具學起來 CP 值也比較高吧

---

freemarker 的 CLI 是另外一個叫做 fmpp(FreeMarker-based file PreProcessor) 的東西

官方網址在這邊 (http://fmpp.sourceforge.net/)

設定起來也蠻簡單的

下載下來之後,設定好路徑可以指到 fmpp 指令所在就可以了

使用上只要在 sh 或是 cmd 裡面,包括有 config.fmpp (fmpp 設定檔案) 的資料夾中

輸入 fmpp 就可以了

至於細節在 fmpp 官網下載下來的 example 裡面有很完整的說明

---

那我到底是要說明什麼呢? 哈哈

這次做的東西簡單說是這樣

0. 當資料庫欄位需要異動
1. 在資料庫中查出 meta 並轉換成 json 格式
2. 樣板部分根據 meta 寫出 DAO/DAL 和 MODEL 層的程式
    (後續改版還增加了一些對日期格式 與 專案實際需求相關的修改)
3. 產生出來的 code merge 至目前程式中

這次的開發蠻有意思的

在整個操作裡面,發現原來整個開發流程重複的部分是可以被提出來

這時的思考層次就不太一樣

而且當我們是在維護系統的時候,這樣子的工具被撰寫與維護的價值就出現了

---

蠻有意思的

整個功夫沒有太大,但是當變更的時候 CP 值超高 (包括註解與一些麻煩的機制 都一次完成)

但是...

需要強調使用工具是為了滿足需求

寫 code gen 程式也是為了要滿足需求

需要小心不能離需求太遠或者是做太長遠的預先安排

例如,需求本來明明只需要做 DAL,卻花了一堆時間想連 CRUD 頁面都一併完成

例如,只是想關燈卻把整棟大樓線路都更新了... (最近看到的關燈梗)

(還需要好好練功啊... 加油...)

[D3] 這個假日玩了一下 D3 覺得可以有個系列文

這個週末試用了一下D3 (v4)

比起之前使用 Raphael Js 覺得蠻有深度的....

順便看了一下之前自己寫的文,還發現自己打文章實在是有夠糟糕

包括沒有條理還有根本就是邊想邊打...之類的...

覺得該利用 blog 好好反省一下

所以.... D3 系列文開始~~~

---

需要先澄清一下

目前沒有實際上使用這些 library 來做專案的經驗

都是用來寫自己開心的範例 跟 玩具

所以可能目標會有些不準確

也就是會根據自己的需要來寫囉...