跳到主要內容

發表文章

Inkscape 在 Mac 下只能輸入注音文問題

當我在 Mac (Sierra 10.12) 中使用 Inkscape 時,發現不管怎麼打字都只會出現注音文,如:
ㄅㄨㄛ既不能輸入英文,也不能打出中文字。我沒有完全解決,但是以下我的設定至少可以讓我輸入英文,中文輸入則必須要從其他應用程式複製後貼過來,給大家參考:
最近的文章

如何同時在多個 Excel 工作表 (sheet) 編輯

如果你有多個工作表 (sheet),你想要:在每個表上的同一個儲存格中輸入一樣的內容、設定同樣的格式在每個表上的同一個欄位上插入一行刪除每個表上的同一個欄位以上需求一開始你可能會想說用複製貼上,每一個表都做一次,但是這樣很麻煩也容易出錯,其實有方法可以一次作用在多個工作表上,只要:先選擇要操作的所有工作表。可按住 Ctrl 選擇不連續的多個工作表或按住 Shift 選擇連續的多個工作表。在某個工作表執行你要的動作如:插入行、輸入文字等這樣該動作就會作用在所有你所選的工作表上。

Tomcat 如何自動停用(不部署)應用程式 war 檔

一般要停止一個應用程式可以透過 Tomcat GUI 管理介面停用:
http://localhost:8080/manager/html但是如果你希望啟動時就不要部署 (deploy) 某個應用程式 war 檔,就無法透過 GUI 管理介面。例如:
我有一個應用程式部署了好幾個版本 app01.war 、 app02.war,但是我希望啟動 Tomcat 時,只要部署 app02.war ,而 app01.war 不要被自動解開部署。這時可以採用以下設定:conf/server.xml<HostdeployIgnore="app01.war">細節請參考: http://tomcat.apache.org/tomcat-7.0-doc/config/host.html#UserWebApplications

用 ZK shadow component 實現更彈性的頁面控制 - JCConf 2016 演講

很開心有機會能在 JCConf 2016 上演講,講題是「用 ZK shadow component 實現更彈性的頁面控制」。Shadow Component 我認為是 ZK 8 最重要的功能,讓你模組化一個頁面片段(含有一群 UI 元件),允許你傳參數至該頁面,因此可以輕易地在不同頁面內重用該頁面片段。例如你用幾個元件組合出如下的個人資料圖:
你可以將該群元件放在一個獨立的 zul 中,在任一個頁面中將其插入,也可以設定一個易讀的元件名稱,所以在 zul 中就可以類似這樣使用:<zk><personboxperson="@init(vm.person)"></zk>配合 ListModelList 跟 <forEach> (shadow component) 就可以做到動態增減的效果:
完整介紹請看當天演講影片:

Visual Editor 的替代方案 Run-jetty-run

ZK Studio 是幫助你開發 ZK 程式的一個 eclipse plugin,原本附帶一個 zul 頁面預覽功能叫 Visual Editor,目前已經被拆開需要額外下載安裝。不過因為已經沒有繼續維護,你若使用較新版的 eclipse Visual Editor 可能無法正常執行。因此推薦各位安裝另一個 eclipse plugin: run-jetty-run。它有幾個優點:快速啟動
它可以直接在 eclipse 中將你的專案用 jetty 這個輕量的 application server 跑起來,過程只需要幾秒鐘,也不需要打包你的專案成 WAR。熱抽換 Java class
開發過程中更改 Java class 也不需要重新啟動,它會自動載入最新編譯的 bytecode自動關閉前一台
如果再啟動一次 jetty (不管是相同或不同專案),它會自動先幫你把前次啟動的 jetty 停掉,再啟動一個新的,避免因為同一個 port (通常是 8080)已經被佔用而造成啟動失敗。可用 eclipse 熱鍵啟動
用快速鍵 (command+F11) 啟動、重啟更便利,加速開發。

ZK 教學 - 使用 MVC 或 MVVM?

不管是現在剛開始接觸 ZK 或是用過一陣子的人都可能會遇到的問題是到底要用 MVC 或 MVVM 的方式開發。從 ZK 8 之後又把 MVVM 的能力更佳的擴展,所以 MVVM 會是一個功能更強的開發方式。但 MVC 在使用上比較直覺,仍有其優勢,所以我想決定性的因素會比較是開發者的偏好專案的特性。你可參考下面的比較來決定哪種方式比較適合你。優勢比較MVVMViewModel 較不易受畫面變動影響。
因為 ViewModel 沒有變數直接指向 ZK 元件,因此若是畫面上有元件更改,ViewModel 一般不需要修改ViewModel 較易於在不同頁面中重用。
因為 ViewModel 只包含資料跟業務邏輯,若是不同頁面需要的資料跟業務邏輯相同,就可以重用同一個 ViewModel例如 A 頁面按按鈕執行搜尋,B 頁面點選單執行同樣的搜尋,則可以重用同一個 ViewModel 中的 command,只是兩個頁面 data binding 寫在不同的元件上。畫面較易於重用(易於模組化)。
透過 shadow component 跟 template 機制,可以將一段頁面的片段做成可以接受傳入參數套用 Responsive Design 的成本較低。
通常需要針對不同裝置設計不同版面,但是顯示的資料內容大同小異,因此 ViewModel 多半可以重用易於套用美工所設計的畫面,或是網路上現成的元件。易於整合第三方 javascript library 或 widget。
因為 ZK 8 提供了一個可以讓你透過 javascript 去呼叫 ViewModel 中的 command (client side binding) 的方式來跟後端溝通ViewModel 的可測試性較好。
因為 ViewModel 不需要繼承特定類別跟實作特定介面,可以輕易地執行單元測試MVC操控元件方式直覺好學、易懂。
MVVM 控制元件較不直接,需要了解 zk framework data binding 的行為可以完全使用元件所提供的所有 API。
仍有極少部分 ZK 元件行為沒辦法用 MVVM 控制。例如產生 Messagebox, Listbox.renderAll(), Popup.open()。但這都可以改用直接控制元件的方式來解決,只是就是非 MVVM 的方法,喜歡維持一致的開發模…

ZK 教學中文書 - ZK 教練

2016年開始做了不少場教育訓練,覺得台灣工程師應該會蠻希望有一本中文的教材,因為目前網路上多是零散的文章,英文的文件雖然完整,但是太龐大,大部分的人應該無從下手。因此最近開始撰寫一本教學書:「 ZK 教練」(書名是老婆提供的點子),也為自己在這份工作推出一個代表作。本書會包含以下幾個特點,幫助讀者更有效地學習:範例專案
本書附帶一個範例專案,裡面包含所有書中提到的範例程式。你可以輕易地將整個專案執行在 jetty 上,透過瀏覽器看到執行結果,有助於了解程式碼。練習專案
執行 maven 指令可以產生一個練習專案,它以範例專案為基礎,但是刻意移除部分程式碼,好讓讀者練習之用。因此你可以產生範例專案來練習,若真的遇到困難再參考完整程式。圖片解說
儘量以各式圖片解說概念。我認同 Head First Design Pattern 一書中提及的理念,學習不是只能靠文字,其他的媒介可以讓大腦得到更多資訊,更增強學習效果。情境 FAQ
ZK 目前已經是個頗為成熟的框架,功能很多,因此不熟悉的人常常不知道實務上某個情境要用什麼功能來解決,這裡會列出各個常用的情境並提供連結指向建議使用的 ZK 特性當然目前本書尚未完成,歡迎給予回饋。去看看 ZK 教練